From a10ea43800dc21be0ee121d97ba202246cc2f3fe Mon Sep 17 00:00:00 2001 From: "thomas.blanc.2@etu.univ-amu.fr" <gltron3000@gmail.com> Date: Sun, 24 May 2020 15:44:24 +0200 Subject: [PATCH] Users role change support --- src/api.js | 22 ++++++++++++++++++---- src/components/Comments.vue | 2 +- src/views/Account.vue | 2 +- src/views/Admin.vue | 19 +++++++++++++++++++ src/views/Model.vue | 2 +- 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/api.js b/src/api.js index cb1a088..de66b97 100644 --- a/src/api.js +++ b/src/api.js @@ -33,7 +33,7 @@ export const api = { }, async getUser () { const token = await localStorage.getItem('token') - const url = serverurl + 'user' + const url = serverurl + 'users' try { const response = await fetch(url, { headers: { Authorization: 'Bearer ' + token } }) return await response.json() @@ -88,7 +88,7 @@ export const api = { }, async getUserList () { const token = await localStorage.getItem('token') - const url = serverurl + 'user/list' + const url = serverurl + 'users/list' try { const response = await fetch(url, { headers: { Authorization: 'Bearer ' + token } }) return await response.json() @@ -187,7 +187,7 @@ export const api = { }, async removeUser (id) { const token = await localStorage.getItem('token') - const url = serverurl + 'user' + '?id=' + id + const url = serverurl + 'users' + '?id=' + id try { await fetch(url, { method: 'DELETE', @@ -222,7 +222,7 @@ export const api = { } }, async register (username, email, password) { - const url = serverurl + 'user/signup' + const url = serverurl + 'users/signup' try { const response = await fetch( url, { @@ -376,5 +376,19 @@ export const api = { } catch (error) { return false } + }, + async setAdmin (id) { + const url = serverurl + 'users/setAdmin' + '?id=' + id + const token = await localStorage.getItem('token') + const response = await fetch(url, { + headers: { + Authorization: 'Bearer ' + token + } + }) + try { + return await response.json() + } catch (error) { + return null + } } } diff --git a/src/components/Comments.vue b/src/components/Comments.vue index 6f375ce..2980c1b 100644 --- a/src/components/Comments.vue +++ b/src/components/Comments.vue @@ -48,7 +48,7 @@ export default { const userRole = await localStorage.getItem('user_role') if (userRole) this.isLoggedIn = true - if (userRole === 'ROLE_ADMIN') this.isAdmin = true + if (userRole === 'ADMIN') this.isAdmin = true }, methods: { async postComment () { diff --git a/src/views/Account.vue b/src/views/Account.vue index dbcc632..95cd414 100644 --- a/src/views/Account.vue +++ b/src/views/Account.vue @@ -21,7 +21,7 @@ </b-button> <b-button - v-if="account.role == 'ROLE_ADMIN'" + v-if="account.role == 'ADMIN'" icon-left="cctv" type="is-info" tag="router-link" diff --git a/src/views/Admin.vue b/src/views/Admin.vue index 505e8ce..89a20ea 100644 --- a/src/views/Admin.vue +++ b/src/views/Admin.vue @@ -78,7 +78,12 @@ {{ props.row.email }} </b-table-column> + <b-table-column field="role" label="Role" sortable> + {{ props.row.role }} + </b-table-column> + <b-table-column label="" centered> + <b-button class="actionButton" icon-left="cctv" type="is-success" @click="setAdminPrompt(props.row.id, props.row.username)" outlined/> <b-button class="actionButton" icon-left="delete" type="is-danger" @click="removePrompt(props.row.id, props.row.username, 'user')" outlined/> </b-table-column> </template> @@ -195,6 +200,20 @@ export default { this.modelList = await api.getModelList() } }) + }, + setAdminPrompt (id, name) { + this.$buefy.dialog.confirm({ + message: 'Set admin role for ' + name + ' ?', + cancelText: 'Abort', + confirmText: 'Set', + type: 'is-success', + hasIcon: true, + onConfirm: async () => { + await api.setAdmin(id) + this.$buefy.toast.open(name + ' role has been changed') + this.userList = await api.getUserList() + } + }) } } } diff --git a/src/views/Model.vue b/src/views/Model.vue index c147cc3..bdd1839 100644 --- a/src/views/Model.vue +++ b/src/views/Model.vue @@ -105,7 +105,7 @@ export default { if (parseInt(userId) === this.model.author.id) this.isAuthor = true const userRole = await localStorage.getItem('user_role') - if (userRole === 'ROLE_ADMIN') this.isAuthor = true + if (userRole === 'ADMIN') this.isAuthor = true this.downloadUrl = this.$serverurl + 'models/download?id=' + this.model.id }, -- GitLab