diff --git a/src/store/api.js b/src/store/api.js
index 45ffc3c..7d72756 100644
--- a/src/store/api.js
+++ b/src/store/api.js
@@ -1,4 +1,5 @@
 import Axios from 'axios';
+import router from '../router';
 import { setupCache, buildWebStorage } from 'axios-cache-interceptor';
 
 //Do not change store import.
@@ -36,11 +37,14 @@
     }
   }
 
+  // Check if action is unauthorized.
   if (response.status == 403) {
-    // Check if action is unauthorized.
-    // Toast error message will appear on screen
-    // when the action is unauthorized.
-    store.commit('global/setUnauthorized');
+    if (isPasswordExpired(response)) {
+      router.push('/change-password');
+    } else {
+      // Toast error message will appear on screen.
+      store.commit('global/setUnauthorized');
+    }
   }
 
   return Promise.reject(error);
@@ -84,3 +88,13 @@
     errorCount,
   };
 };
+
+export const isPasswordExpired = (response) => {
+  let extInfoMsgs = response?.data?.['@Message.ExtendedInfo'];
+  return (
+    extInfoMsgs &&
+    extInfoMsgs.find(
+      (i) => i.MessageId.split('.')[4] === 'PasswordChangeRequired',
+    )
+  );
+};
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 3ad41c6..b64def0 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -1,4 +1,4 @@
-import api from '@/store/api';
+import api, { isPasswordExpired } from '@/store/api';
 import Cookies from 'js-cookie';
 import router from '@/router';
 import { roles } from '@/router/routes';
@@ -59,6 +59,7 @@
           commit('authSuccess', {
             session: response.headers['location'],
           });
+          return isPasswordExpired(response);
         })
         .catch((error) => {
           commit('authError');
diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue
index 213dd48..0878d0e 100644
--- a/src/views/Login/Login.vue
+++ b/src/views/Login/Login.vue
@@ -69,6 +69,7 @@
 import { useVuelidate } from '@vuelidate/core';
 import { ref, watch } from 'vue';
 import { useI18n } from 'vue-i18n';
+import i18n from '@/i18n';
 import Alert from '@/components/Global/Alert';
 import InputPasswordToggle from '@/components/Global/InputPasswordToggle';
 
@@ -132,14 +133,11 @@
       const password = this.userInfo.password;
       this.$store
         .dispatch('authentication/login', { username, password })
-        .then(() => {
-          localStorage.setItem('storedLanguage', this.userLocale);
+        .then((PasswordChangeRequired) => {
+          localStorage.setItem('storedLanguage', i18n.locale);
           localStorage.setItem('storedUsername', username);
           this.$store.commit('global/setUsername', username);
-          this.$store.commit('global/setLanguagePreference', this.userLocale);
-          return this.$store.dispatch('authentication/getUserInfo', username);
-        })
-        .then(({ PasswordChangeRequired }) => {
+          this.$store.commit('global/setLanguagePreference', i18n.locale);
           if (PasswordChangeRequired) {
             this.$router.push('/change-password');
           } else {
