Add support for mutual TLS

Adding check for 'IsAuthenticated' cookie in AuthenticationStore
and adding a check in created hook for AppHeader component because
it is visible on all authenticated pages.

Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Change-Id: Ic558c9c45fd3f5874c8c516cb6bc005cba4946e2
diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index 4eba752..5f05406 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -169,6 +169,9 @@
     }
   },
   created() {
+    // Reset auth state to check if user is authenticated based
+    // on available browser cookies
+    this.$store.dispatch('authentication/resetStoreState');
     this.getHostInfo();
     this.getEvents();
   },
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 0dd616a..c42b9da 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -6,31 +6,39 @@
   namespaced: true,
   state: {
     authError: false,
-    cookie: Cookies.get('XSRF-TOKEN')
+    xsrfCookie: Cookies.get('XSRF-TOKEN'),
+    isAuthenticatedCookie: Cookies.get('IsAuthenticated')
   },
   getters: {
     authError: state => state.authError,
-    isLoggedIn: state => !!state.cookie,
-    token: state => state.cookie
+    isLoggedIn: state => {
+      return (
+        state.xsrfCookie !== undefined || state.isAuthenticatedCookie == 'true'
+      );
+    },
+    token: state => state.xsrfCookie
   },
   mutations: {
     authSuccess(state) {
       state.authError = false;
-      state.cookie = Cookies.get('XSRF-TOKEN');
+      state.xsrfCookie = Cookies.get('XSRF-TOKEN');
     },
     authError(state, authError = true) {
       state.authError = authError;
     },
-    logout() {
+    logout(state) {
       Cookies.remove('XSRF-TOKEN');
+      Cookies.remove('IsAuthenticated');
       localStorage.removeItem('storedUsername');
+      state.xsrfCookie = undefined;
+      state.isAuthenticatedCookie = undefined;
     }
   },
   actions: {
-    login({ commit }, auth) {
+    login({ commit }, { username, password }) {
       commit('authError', false);
       return api
-        .post('/login', { data: auth })
+        .post('/login', { data: [username, password] })
         .then(() => commit('authSuccess'))
         .catch(error => {
           commit('authError');
@@ -49,6 +57,11 @@
         .get(`/redfish/v1/AccountService/Accounts/${username}`)
         .then(({ data: { PasswordChangeRequired } }) => PasswordChangeRequired)
         .catch(error => console.log(error));
+    },
+    resetStoreState({ state }) {
+      state.authError = false;
+      state.xsrfCookie = Cookies.get('XSRF-TOKEN');
+      state.isAuthenticatedCookie = Cookies.get('IsAuthenticated');
     }
   }
 };
diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue
index 4d523de..dd0a415 100644
--- a/src/views/Login/Login.vue
+++ b/src/views/Login/Login.vue
@@ -117,7 +117,7 @@
       const username = this.userInfo.username;
       const password = this.userInfo.password;
       this.$store
-        .dispatch('authentication/login', [username, password])
+        .dispatch('authentication/login', { username, password })
         .then(() => {
           localStorage.setItem('storedLanguage', i18n.locale);
           localStorage.setItem('storedUsername', username);