refactor: switch auth data from localStorage to sessionStorage
Aligns user and permissions storage with the existing sessionStorage-based token model. Eliminates the dual-write pattern and stale cross-session data.
This commit is contained in:
+1
-1
@@ -33,7 +33,7 @@ const _NavBase = [
|
|||||||
|
|
||||||
function getNav() {
|
function getNav() {
|
||||||
const nav = [..._NavBase];
|
const nav = [..._NavBase];
|
||||||
const perms = JSON.parse(localStorage.getItem('vw:permissions') || 'null');
|
const perms = JSON.parse(sessionStorage.getItem('vw:permissions') || 'null');
|
||||||
if (perms && perms.auth === 'rw') {
|
if (perms && perms.auth === 'rw') {
|
||||||
nav.push({ path: '/users', label: 'Users' });
|
nav.push({ path: '/users', label: 'Users' });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ function clearAuthTokens() {
|
|||||||
sessionStorage.removeItem('vw:access_ttl');
|
sessionStorage.removeItem('vw:access_ttl');
|
||||||
sessionStorage.removeItem('vw:session_id');
|
sessionStorage.removeItem('vw:session_id');
|
||||||
sessionStorage.removeItem('vw:user');
|
sessionStorage.removeItem('vw:user');
|
||||||
localStorage.removeItem('vw:user');
|
sessionStorage.removeItem('vw:user');
|
||||||
if (typeof window.__authRefreshTimer__ !== 'undefined') {
|
if (typeof window.__authRefreshTimer__ !== 'undefined') {
|
||||||
clearTimeout(window.__authRefreshTimer__);
|
clearTimeout(window.__authRefreshTimer__);
|
||||||
window.__authRefreshTimer__ = undefined;
|
window.__authRefreshTimer__ = undefined;
|
||||||
@@ -112,7 +112,6 @@ async function tryRefreshToken() {
|
|||||||
}
|
}
|
||||||
if (json.data.user) {
|
if (json.data.user) {
|
||||||
sessionStorage.setItem('vw:user', JSON.stringify(json.data.user));
|
sessionStorage.setItem('vw:user', JSON.stringify(json.data.user));
|
||||||
localStorage.setItem('vw:user', JSON.stringify(json.data.user));
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
@@ -46,10 +46,9 @@ export async function checkSession() {
|
|||||||
if (result.ok) {
|
if (result.ok) {
|
||||||
const { user, permissions } = result.data || {};
|
const { user, permissions } = result.data || {};
|
||||||
if (user) {
|
if (user) {
|
||||||
localStorage.setItem('vw:user', JSON.stringify(user));
|
|
||||||
sessionStorage.setItem('vw:user', JSON.stringify(user));
|
sessionStorage.setItem('vw:user', JSON.stringify(user));
|
||||||
if (permissions) {
|
if (permissions) {
|
||||||
localStorage.setItem('vw:permissions', JSON.stringify(permissions));
|
sessionStorage.setItem('vw:permissions', JSON.stringify(permissions));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -125,9 +124,9 @@ export function handleLoginSuccess(data, redirectPath = '/dashboard') {
|
|||||||
sessionStorage.setItem('vw:session_id', tokens.session_id);
|
sessionStorage.setItem('vw:session_id', tokens.session_id);
|
||||||
}
|
}
|
||||||
if (user) {
|
if (user) {
|
||||||
localStorage.setItem('vw:user', JSON.stringify(user));
|
sessionStorage.setItem('vw:user', JSON.stringify(user));
|
||||||
if (permissions) {
|
if (permissions) {
|
||||||
localStorage.setItem('vw:permissions', JSON.stringify(permissions));
|
sessionStorage.setItem('vw:permissions', JSON.stringify(permissions));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
scheduleTokenRefresh();
|
scheduleTokenRefresh();
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ function addCredentialModal() {
|
|||||||
setModalProcessing(true);
|
setModalProcessing(true);
|
||||||
refreshModals();
|
refreshModals();
|
||||||
|
|
||||||
const user = JSON.parse(localStorage.getItem('vw:user') || 'null');
|
const user = JSON.parse(sessionStorage.getItem('vw:user') || 'null');
|
||||||
const username = user?.username || '';
|
const username = user?.username || '';
|
||||||
if (!username) {
|
if (!username) {
|
||||||
toast('Username not available', 'error');
|
toast('Username not available', 'error');
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ const SUBSYSTEMS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
function currentUser() {
|
function currentUser() {
|
||||||
const u = JSON.parse(localStorage.getItem('vw:user') || 'null');
|
const u = JSON.parse(sessionStorage.getItem('vw:user') || 'null');
|
||||||
return u ? u.username : '';
|
return u ? u.username : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function hasAuthAdmin() {
|
function hasAuthAdmin() {
|
||||||
const perms = JSON.parse(localStorage.getItem('vw:permissions') || 'null');
|
const perms = JSON.parse(sessionStorage.getItem('vw:permissions') || 'null');
|
||||||
return perms && perms.auth === 'rw';
|
return perms && perms.auth === 'rw';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user