diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js
new file mode 100644
index 0000000..dddfd2c
--- /dev/null
+++ b/src/store/modules/AccessControl/LocalUserMangementStore.js
@@ -0,0 +1,56 @@
+import Axios from "axios";
+
+const LocalUserManagementStore = {
+  namespaced: true,
+  state: {
+    allUsers: []
+  },
+  getters: {
+    allUsers(state) {
+      return state.allUsers;
+    }
+  },
+  mutations: {
+    setUsers(state, allUsers) {
+      state.allUsers = allUsers;
+    }
+  },
+  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);
+      }
+    }
+  }
+};
+
+export default LocalUserManagementStore;
