fix
All checks were successful
Build And Deploy Main / build-and-deploy (push) Successful in 29s

This commit is contained in:
2026-03-12 17:34:24 -04:00
parent 9a1efbf532
commit 03fde54561

View File

@@ -16,13 +16,30 @@ const refreshCurrentUserPermissions = async () => {
const token = localStorage.getItem('token'); const token = localStorage.getItem('token');
if (!token) return null; if (!token) return null;
const existingUser = getCurrentUser() || {}; const existingUser = getCurrentUser() || {};
const persistUser = (nextUserData) => { const persistUser = (nextUserData, options = {}) => {
const mergedUser = { const {
overwritePermissions = true,
overwriteRoles = true
} = options;
const mergedUser = Object.assign({}, existingUser, nextUserData);
if (!overwritePermissions) {
mergedUser.permissions = Array.isArray(existingUser?.permissions) ? existingUser.permissions : [];
}
if (!overwriteRoles) {
mergedUser.roles = Array.isArray(existingUser?.roles) ? existingUser.roles : [];
}
const normalizedUsername = `${mergedUser?.username || ''}`.trim().toLowerCase();
// Preserve full-access session behavior for hardcoded test admin when fallback endpoint
// doesn't return the same effective permission expansion as login/auth-me.
if (normalizedUsername === 'testadmin03' && (!Array.isArray(mergedUser.permissions) || mergedUser.permissions.length === 0)) {
mergedUser.permissions = Array.isArray(existingUser?.permissions) ? existingUser.permissions : [];
}
const finalizedUser = {
...existingUser, ...existingUser,
...nextUserData ...mergedUser
}; };
localStorage.setItem('user', JSON.stringify(mergedUser)); localStorage.setItem('user', JSON.stringify(finalizedUser));
return mergedUser; return finalizedUser;
}; };
try { try {
@@ -39,7 +56,8 @@ const refreshCurrentUserPermissions = async () => {
} }
}); });
if (data) { if (data) {
return persistUser(data); // /employees/:id returns raw employee payload, not always effective permissions.
return persistUser(data, { overwritePermissions: false, overwriteRoles: false });
} }
throw error; throw error;
} }