diff --git a/src/api.js b/src/api.js index cb1a088dd1616b2dbfe7c311d659f709f85d5a75..de66b976355aff6b346246a3bf8819868ff2ce77 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 6f375ce36f8176bcf555b4466f4defc9889bd068..2980c1b6f648ba947bce10e1fa5b6e7c6734862f 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 dbcc6329fd76c058c7de9a26f9b96fd10c6e3f2a..95cd4146f4b1828112193e3e274bc6520db6acc0 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 505e8ce6b5ed99937d973ca52ab6d441e670e3cc..89a20eaf75313b4faa622bc708016b03cccfe9bd 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 c147cc3994ae8316ba1138ded1da2c3a84893dde..bdd18397791c6b91bac9ad9c3a45ed280a35185d 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 },