161859097SSurenNewareimport api from '@/store/api'; 2fded0d11SDerick Montagueimport Cookies from 'js-cookie'; 361859097SSurenNewareimport router from '@/router'; 4*2b33526cSPaul Fertserimport { roles } from '@/router/routes'; 5e080a1a7SDerick Montague 6e080a1a7SDerick Montagueconst AuthenticationStore = { 7e080a1a7SDerick Montague namespaced: true, 8e080a1a7SDerick Montague state: { 9b89eed27Skirankumarb07 consoleWindow: null, 104b0fc1dbSYoshie Muranaka authError: false, 11d624dae9SYoshie Muranaka xsrfCookie: Cookies.get('XSRF-TOKEN'), 12602e98aaSDerick Montague isAuthenticatedCookie: Cookies.get('IsAuthenticated'), 13e080a1a7SDerick Montague }, 14e080a1a7SDerick Montague getters: { 15b89eed27Skirankumarb07 consoleWindow: (state) => state.consoleWindow, 16602e98aaSDerick Montague authError: (state) => state.authError, 17602e98aaSDerick Montague isLoggedIn: (state) => { 18d624dae9SYoshie Muranaka return ( 19d624dae9SYoshie Muranaka state.xsrfCookie !== undefined || state.isAuthenticatedCookie == 'true' 20d624dae9SYoshie Muranaka ); 21d624dae9SYoshie Muranaka }, 22602e98aaSDerick Montague token: (state) => state.xsrfCookie, 23e080a1a7SDerick Montague }, 24e080a1a7SDerick Montague mutations: { 256ce1a07cSYoshie Muranaka authSuccess(state) { 264b0fc1dbSYoshie Muranaka state.authError = false; 27d624dae9SYoshie Muranaka state.xsrfCookie = Cookies.get('XSRF-TOKEN'); 28e080a1a7SDerick Montague }, 29a06fe469SDerick Montague authError(state, authError = true) { 30a06fe469SDerick Montague state.authError = authError; 31676f2fcaSDerick Montague }, 32d624dae9SYoshie Muranaka logout(state) { 33fded0d11SDerick Montague Cookies.remove('XSRF-TOKEN'); 34d624dae9SYoshie Muranaka Cookies.remove('IsAuthenticated'); 35b1f559f0SSukanya Pandey localStorage.removeItem('storedUsername'); 36d624dae9SYoshie Muranaka state.xsrfCookie = undefined; 37d624dae9SYoshie Muranaka state.isAuthenticatedCookie = undefined; 38602e98aaSDerick Montague }, 39b89eed27Skirankumarb07 setConsoleWindow: (state, window) => (state.consoleWindow = window), 40e080a1a7SDerick Montague }, 41e080a1a7SDerick Montague actions: { 42d624dae9SYoshie Muranaka login({ commit }, { username, password }) { 43a06fe469SDerick Montague commit('authError', false); 44e080a1a7SDerick Montague return api 45ebef6eeeSEd Tanous .post('/login', { 46ebef6eeeSEd Tanous username: username, 47ebef6eeeSEd Tanous password: password, 48ebef6eeeSEd Tanous }) 49fded0d11SDerick Montague .then(() => commit('authSuccess')) 50602e98aaSDerick Montague .catch((error) => { 51fded0d11SDerick Montague commit('authError'); 52e080a1a7SDerick Montague throw new Error(error); 53e080a1a7SDerick Montague }); 54e080a1a7SDerick Montague }, 55e080a1a7SDerick Montague logout({ commit }) { 566ce1a07cSYoshie Muranaka api 57fded0d11SDerick Montague .post('/logout', { data: [] }) 58b89eed27Skirankumarb07 .then(() => { 59b89eed27Skirankumarb07 commit('setConsoleWindow', false); 60b89eed27Skirankumarb07 commit('logout'); 61b89eed27Skirankumarb07 }) 62780733a1SThang Q. Nguyen .then(() => router.push('/login')) 63602e98aaSDerick Montague .catch((error) => console.log(error)); 642c98b095SYoshie Muranaka }, 65bceaffacSPaul Fertser getUserInfo({ commit }, username) { 66aeb19816SDamian Celico return api 672c98b095SYoshie Muranaka .get(`/redfish/v1/AccountService/Accounts/${username}`) 68bceaffacSPaul Fertser .then(({ data }) => { 69bceaffacSPaul Fertser commit('global/setPrivilege', data.RoleId, { root: true }); 70bceaffacSPaul Fertser return data; 71bceaffacSPaul Fertser }) 72*2b33526cSPaul Fertser .catch((error) => { 73*2b33526cSPaul Fertser if (error.response?.status === 404) { 74*2b33526cSPaul Fertser // We have valid credentials but user isn't known, assume remote 75*2b33526cSPaul Fertser // authentication (e.g. LDAP) and do not restrict the routing 76*2b33526cSPaul Fertser commit('global/setPrivilege', roles.administrator, { root: true }); 77*2b33526cSPaul Fertser return {}; 78*2b33526cSPaul Fertser } else { 79*2b33526cSPaul Fertser console.log(error); 80*2b33526cSPaul Fertser } 81*2b33526cSPaul Fertser }); 82d624dae9SYoshie Muranaka }, 83d624dae9SYoshie Muranaka resetStoreState({ state }) { 84d624dae9SYoshie Muranaka state.authError = false; 85d624dae9SYoshie Muranaka state.xsrfCookie = Cookies.get('XSRF-TOKEN'); 86d624dae9SYoshie Muranaka state.isAuthenticatedCookie = Cookies.get('IsAuthenticated'); 87602e98aaSDerick Montague }, 88602e98aaSDerick Montague }, 89e080a1a7SDerick Montague}; 90e080a1a7SDerick Montague 91e080a1a7SDerick Montagueexport default AuthenticationStore; 92