From 31e9b01731cc4ccff88a0dd214fef95c85eb1fee Mon Sep 17 00:00:00 2001
From: Mark <mark@openappstack.net>
Date: Mon, 11 Nov 2019 16:44:10 +0100
Subject: [PATCH] Refactor remove role from user

---
 frontend/api/model.js    | 16 ++++++++++++++++
 frontend/pages/users.vue | 12 ++++--------
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/frontend/api/model.js b/frontend/api/model.js
index 8ad372b..6041319 100644
--- a/frontend/api/model.js
+++ b/frontend/api/model.js
@@ -134,4 +134,20 @@ export default class OpenAppStackModel {
         return ok;
       });
   }
+  removeRoleFromUser(username, role){
+    const vars = { username: username, role: role };
+    const removeRoleFromUser = `
+        mutation removeRoleFromUser($username: String!, $role: String!){
+          removeRoleFromUser(
+            username: $username,
+            role: $role
+          ){
+            ok
+          }
+        }`;
+    return this.graphQlClient.query(removeRoleFromUser, vars)
+      .then( ok => {
+        return ok;
+      });
+  }
 }
diff --git a/frontend/pages/users.vue b/frontend/pages/users.vue
index a8fbce9..02b5e4e 100644
--- a/frontend/pages/users.vue
+++ b/frontend/pages/users.vue
@@ -90,15 +90,11 @@ export default {
         });
       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);
-            });
+          backend.removeRoleFromUser(user.username, role)
+            .then( ok => {
+              role.users.splice(role.users.findIndex( element => { return element == username }),1);
+          });
         }
-
       })
     },
     selectRole: function(roleName){
-- 
GitLab