From d2fe650d8d637bdd914cabbed22893f3156fd049 Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Thu, 7 Mar 2024 17:13:04 +0200 Subject: [PATCH] add user manager view --- webroot/js/page/UserManager.js | 70 ++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 webroot/js/page/UserManager.js diff --git a/webroot/js/page/UserManager.js b/webroot/js/page/UserManager.js new file mode 100644 index 0000000..2c14fb8 --- /dev/null +++ b/webroot/js/page/UserManager.js @@ -0,0 +1,70 @@ +import Groups from '../groups.js'; +import PageCount from '../pagecount.js'; +import Pagination from '../pagination.js'; +import GroupsTable from '../groups-table.js'; +import Members from '../members.js'; +import Autocomplete from '../autocomplete.js'; +import Loader from '../loader.js'; + +export default { + components: { + Groups, + PageCount, + Pagination, + GroupsTable, + Members, + Autocomplete + }, + inject: ['api', 'txt'], + methods: { + showSubscribers(group) { + this.$refs.members.show(group); + }, + async findUserMemberships(user) { + const { identifier: id, label } = user; + this.loading = true; + const { displayExtension, name } = this.group; + const formData = new FormData(); + formData.append("userId", id); + formData.append("group", name); + const resp = await fetch(`${this.api.add}?group=${name}&userId=${id}`, { + method: "POST", + headers: { + "Accept": "application/json", + }, + body: formData + }); + if (resp.ok) { + await this.loadGroupSubscribers(this.group); + generateFlash(`${label} ${this.txt.findUserMembershipsSuccess} ${(displayExtension)}`, 'success'); + } else { + generateFlash(`${this.txt.findUserMembershipsError}`, 'error'); + let errorResponse = await resp.json(); + generateFlash(`${errorResponse.message}`, 'error'); + } + + this.loading = false; + } + }, + template: /*html*/` + + + + + + + + + + + + + + + + + ` +} \ No newline at end of file