diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js
index de79a2d..815c166 100644
--- a/src/store/modules/AccessControl/LocalUserMangementStore.js
+++ b/src/store/modules/AccessControl/LocalUserMangementStore.js
@@ -1,4 +1,4 @@
-import api from "../../api";
+import api from '../../api';
 
 const LocalUserManagementStore = {
   namespaced: true,
@@ -18,12 +18,12 @@
   actions: {
     getUsers({ commit }) {
       api
-        .get("/redfish/v1/AccountService/Accounts")
-        .then(response => response.data.Members.map(user => user["@odata.id"]))
+        .get('/redfish/v1/AccountService/Accounts')
+        .then(response => response.data.Members.map(user => user['@odata.id']))
         .then(userIds => api.all(userIds.map(user => api.get(user))))
         .then(users => {
           const userData = users.map(user => user.data);
-          commit("setUsers", userData);
+          commit('setUsers', userData);
         })
         .catch(error => console.log(error));
     },
@@ -35,8 +35,8 @@
         Enabled: status
       };
       api
-        .post("/redfish/v1/AccountService/Accounts", data)
-        .then(() => dispatch("getUsers"))
+        .post('/redfish/v1/AccountService/Accounts', data)
+        .then(() => dispatch('getUsers'))
         .catch(error => console.log(error));
     },
     updateUser(
@@ -50,13 +50,13 @@
       if (status !== undefined) data.Enabled = status;
       api
         .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data)
-        .then(() => dispatch("getUsers"))
+        .then(() => dispatch('getUsers'))
         .catch(error => console.log(error));
     },
     deleteUser({ dispatch }, username) {
       api
         .delete(`/redfish/v1/AccountService/Accounts/${username}`)
-        .then(() => dispatch("getUsers"))
+        .then(() => dispatch('getUsers'))
         .catch(error => console.log(error));
     }
   }
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 3512e2d..88456e9 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -1,11 +1,11 @@
-import api from "../../api";
-import Cookies from "js-cookie";
+import api from '../../api';
+import Cookies from 'js-cookie';
 
 const AuthenticationStore = {
   namespaced: true,
   state: {
-    status: "",
-    cookie: Cookies.get("XSRF-TOKEN")
+    status: '',
+    cookie: Cookies.get('XSRF-TOKEN')
   },
   getters: {
     authStatus: state => state.status,
@@ -13,35 +13,35 @@
   },
   mutations: {
     authRequest(state) {
-      state.status = "loading";
+      state.status = 'loading';
     },
     authSuccess(state) {
-      state.status = "authenticated";
-      state.cookie = Cookies.get("XSRF-TOKEN");
+      state.status = 'authenticated';
+      state.cookie = Cookies.get('XSRF-TOKEN');
     },
     authError(state) {
-      state.status = "error";
+      state.status = 'error';
     },
     logout(state) {
-      state.status = "";
-      Cookies.remove("XSRF-TOKEN");
+      state.status = '';
+      Cookies.remove('XSRF-TOKEN');
     }
   },
   actions: {
     login({ commit }, auth) {
-      commit("authRequest");
+      commit('authRequest');
       return api
-        .post("/login", { data: auth })
-        .then(() => commit("authSuccess"))
+        .post('/login', { data: auth })
+        .then(() => commit('authSuccess'))
         .catch(error => {
-          commit("authError");
+          commit('authError');
           throw new Error(error);
         });
     },
     logout({ commit }) {
       api
-        .post("/logout", { data: [] })
-        .then(() => commit("logout"))
+        .post('/logout', { data: [] })
+        .then(() => commit('logout'))
         .catch(error => console.log(error));
     }
   }
diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js
index 332c801..8cf2e8e 100644
--- a/src/store/modules/GlobalStore.js
+++ b/src/store/modules/GlobalStore.js
@@ -1,9 +1,9 @@
-import api from "../api";
+import api from '../api';
 
 const GlobalStore = {
   namespaced: true,
   state: {
-    hostName: "--",
+    hostName: '--',
     hostStatus: null
   },
   getters: {
@@ -22,10 +22,10 @@
   actions: {
     getHostName({ commit }) {
       api
-        .get("/xyz/openbmc_project/network/config/attr/HostName")
+        .get('/xyz/openbmc_project/network/config/attr/HostName')
         .then(response => {
           const hostName = response.data.data;
-          commit("setHostName", hostName);
+          commit('setHostName', hostName);
         })
         .catch(error => console.log(error));
     }
