From 403e8ab91ee1dc303e3bfb54ec615ae415ab211e Mon Sep 17 00:00:00 2001 From: Mark <mark@openappstack.net> Date: Tue, 22 Oct 2019 14:38:41 +0200 Subject: [PATCH] Add remove roles function --- frontend/components/edit-user.vue | 4 +++- frontend/pages/users.vue | 38 +++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/frontend/components/edit-user.vue b/frontend/components/edit-user.vue index 5216f1b..9aa962c 100644 --- a/frontend/components/edit-user.vue +++ b/frontend/components/edit-user.vue @@ -10,7 +10,9 @@ <b-form-input type="email" v-model="user.email"></b-form-input> </b-col> <b-col cols="1"> - <b-badge class="mr-1" variant="primary" v-for="role in user.roles" v-bind:key="role">{{role}}</b-badge> + <b-badge class="mr-1" href="#" variant="primary" v-for="(role, index) in user.roles" v-bind:key="role" @click="user.roles.splice(index, 1)"> + {{role}} × + </b-badge> </b-col> <b-col cols="3"> <b-button-group v-show="!showAddRole"> diff --git a/frontend/pages/users.vue b/frontend/pages/users.vue index ee5d3dd..4245732 100644 --- a/frontend/pages/users.vue +++ b/frontend/pages/users.vue @@ -62,8 +62,42 @@ import axios from 'axios' export default { methods: { saveUser: function(username, index){ - console.log(username); - console.log(index); + const user = this.users[index] + var query; + if (user.password == ""){ + query= 'mutation{editUser(username: "' + username + '", email: "' + user.email +'"){ok}}' + } + else { + query= 'mutation{editUser(username: "' + username + '", email: "' + user.email +'", password: "' + user.password +'"){ok}}' + } + axios.post( + '/api/admin/graphql', {query: query}).then((res) => { + console.log("user updated") + }); + user.roles.forEach( role => { + var roleObj = this.roles.find(element => {return element.name == role}); + if (!roleObj.users.includes(username)){ + var addRoleMutation = 'mutation{addRoleToUser( role: "' + role + '", username: "' + username +'"){user{username}, role{name}}}' + axios.post( + '/api/admin/graphql', { + query: addRoleMutation + }).then((res) => { + roleObj.users.push(username); + }); + } + }); + this.roles.forEach( role => { + if(role.users.includes(username) && !user.roles.includes(role.name)){ + var rmRoleMutation = 'mutation{removeRoleFromUser( role: "' + role.name + '", username: "' + username +'"){ok}}' + axios.post( + '/api/admin/graphql', { + query: rmRoleMutation + }).then((res) => { + role.users.splice(role.users.findIndex( element => { return element == username }),1); + }); + } + + }) }, selectRole: function(roleName){ this.selectedRole = roleName; -- GitLab