shoc-frontend-new/src/tokenUtility.js
Adam Moussa e7fb682f71 Consolidate auth/token management into tokenUtility
- Make tokenUtility.js the single source of truth for localStorage
- Add getRawToken() and isAuthenticated() to tokenUtility
- Rewrite authService.js to delegate storage to tokenUtility
- Fix calendar api.js direct localStorage access
- Remove unused setToken import from apiUtil.js
2026-04-16 16:25:26 -04:00

50 lines
1.1 KiB
JavaScript

const tokenKey = "token";
export const setUser = (user) => {
if (user && user.token) {
window.localStorage.setItem(tokenKey, JSON.stringify(user));
}
else {
window.localStorage.removeItem(tokenKey);
}
}
export const getAccessToken = () => {
let result = window.localStorage.getItem(tokenKey);
if (!result) {
return "";
}
const user = JSON.parse(result);
return `Bearer ${user.token}`;
}
export const getRawToken = () => {
let result = window.localStorage.getItem(tokenKey);
if (!result) {
return null;
}
return JSON.parse(result).token || null;
}
export const getUser = () => {
let result = window.localStorage.getItem(tokenKey);
if (!result) {
return null;
}
return JSON.parse(result);
}
export const removeToken = () => {
window.localStorage.removeItem(tokenKey);
}
export const isAuthenticated = () => {
const token = getRawToken();
if (!token) return false;
try {
const payload = JSON.parse(atob(token.split(".")[1]));
return new Date(payload.exp * 1000) > new Date();
} catch (e) {
return false;
}
}