From 17f7e08dd09c20968e8b6797309916fc42430b64 Mon Sep 17 00:00:00 2001
From: Mark <mark@openappstack.net>
Date: Mon, 11 Nov 2019 17:14:23 +0100
Subject: [PATCH] Refactor create user

---
 frontend/api/model.js    | 17 +++++++++++++++++
 frontend/pages/users.vue | 37 +++++++++++++------------------------
 2 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/frontend/api/model.js b/frontend/api/model.js
index 6041319..0ba8d7c 100644
--- a/frontend/api/model.js
+++ b/frontend/api/model.js
@@ -85,6 +85,23 @@ export default class OpenAppStackModel {
         return roles;
       });
   }
+  createUser(username, email, password){
+    const vars = { username: username, email: email, password: password };
+    const createUserMutation = `
+        mutation createUser($username: String!, $email: String!, $password: String!){
+          createUser(
+            username: $username,
+            email: $email,
+            password: $password
+          ){
+            user{ username, email }
+          }
+        }`;
+    return this.graphQlClient.query(createUserMutation, vars)
+      .then( user => {
+        return user;
+      });
+  }
   editUser(username, email, password){
     const vars = { username: username, email: email, password: password };
     const editUserMutation = `
diff --git a/frontend/pages/users.vue b/frontend/pages/users.vue
index 3236757..a589117 100644
--- a/frontend/pages/users.vue
+++ b/frontend/pages/users.vue
@@ -127,30 +127,19 @@ export default {
       }
     },
     addUser: function(){
-      const newUser = axios.post(
-        '/api/admin/graphql', {
-          query: 'mutation{createUser(username: "' + this.newUser.username + '", password: "'+ this.newUser.password.replace(/"/gi, '\\"') + '", email: "' + this.newUser.email + '"){user{username, email}}}'
-        }).then((res) => {
-          if (res.data.errors){
-            console.log(res.data.errors)
-          }
-          else {
-            var newUser = res.data.data.createUser.user;
-            var index = this.users.push({
-              username: newUser.username,
-              email: newUser.email,
-              password: undefined,
-              roles: [],
-              applications: [],
-            })
-            index--;
-            this.newUser.username = "";
-            this.newUser.password = undefined
-            this.newUser.email = "";
-            this.toggleAddUser()
-          }
-        }).catch((e) => {
-          console.log(e)
+      backend.createUser(this.newUser.username, this.newUser.email, this.newUser.password)
+        .then( user => {
+          this.users.push({
+            username: this.newUser.username,
+            email: this.newUser.email,
+            password: undefined,
+            roles: [],
+            applications: []
+          });
+          this.newUser.username = "";
+          this.newUser.password = undefined
+          this.newUser.email = "";
+          this.toggleAddUser()
         });
     },
     cancelAddUser: function(){
-- 
GitLab