Add proxy dev server for local development

Adding proxy server to vue config to handle API requests
for local development. You need to create a .env.development.local file with
BASE_URL, VUE_APP_USERNAME, VUE_APP_PASSWORD defined.

Temporarily adding authentication to defaults until
login flow is functional.

Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: Ib1a1a992508fb9567af66ecb5775638e6ae6ee8d
diff --git a/src/store/api.js b/src/store/api.js
new file mode 100644
index 0000000..d40ad0a
--- /dev/null
+++ b/src/store/api.js
@@ -0,0 +1,34 @@
+import Axios from "axios";
+
+const api = Axios.create();
+
+// TODO: this is a temporary workaround until
+// authentication with login is working
+const username = process.env.VUE_APP_USERNAME;
+const password = process.env.VUE_APP_PASSWORD;
+if (username && password) {
+  api.defaults.auth = {};
+  api.defaults.auth.username = username;
+  api.defaults.auth.password = password;
+}
+
+export default {
+  get(path) {
+    return api.get(path);
+  },
+  delete(path, payload) {
+    return api.delete(path, payload);
+  },
+  post(path, payload) {
+    return api.post(path, payload);
+  },
+  patch(path, payload) {
+    return api.patch(path, payload);
+  },
+  put(path, payload) {
+    return api.put(path, payload);
+  },
+  all(promises) {
+    return Axios.all(promises);
+  }
+};
diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js
index dddfd2c..41bbe0d 100644
--- a/src/store/modules/AccessControl/LocalUserMangementStore.js
+++ b/src/store/modules/AccessControl/LocalUserMangementStore.js
@@ -1,4 +1,4 @@
-import Axios from "axios";
+import api from "../../api";
 
 const LocalUserManagementStore = {
   namespaced: true,
@@ -17,38 +17,21 @@
   },
   actions: {
     getUsers({ commit }) {
-      let base;
-      let username;
-      let password;
-      if (base && username && password) {
-        Axios.defaults.baseURL = base;
-        Axios.defaults.auth = {};
-        Axios.defaults.auth.username = username;
-        Axios.defaults.auth.password = password;
-        Axios.get("redfish/v1/AccountService/Accounts")
-          .then(response => {
-            return response.data.Members.map(user => user["@odata.id"]);
-          })
-          .then(userIds => {
-            return Axios.all(userIds.map(user => Axios.get(user)));
-          })
-          .then(users => {
-            const userData = users.map(user => user.data);
-            commit("setUsers", userData);
-          })
-          .catch(error => {
-            console.log(error);
-          });
-      } else {
-        // Faking async call with timeout
-        setTimeout(() => {
-          const users = [
-            { UserName: "root", RoleId: "Admin", Locked: false, Enabled: true },
-            { UserName: "user1", RoleId: "user", Locked: false, Enabled: false }
-          ];
-          commit("setUsers", users);
-        }, 3000);
-      }
+      api
+        .get("/redfish/v1/AccountService/Accounts")
+        .then(response => {
+          return response.data.Members.map(user => user["@odata.id"]);
+        })
+        .then(userIds => {
+          return api.all(userIds.map(user => api.get(user)));
+        })
+        .then(users => {
+          const userData = users.map(user => user.data);
+          commit("setUsers", userData);
+        })
+        .catch(error => {
+          console.log(error);
+        });
     }
   }
 };