@proveanything/smartlinks-auth-ui
Version:
Lightweight React authentication UI components with bearer token support and Smartlinks SDK integration
72 lines (71 loc) • 1.9 kB
JavaScript
const TOKEN_KEY = 'smartlinks_auth_token';
const USER_KEY = 'smartlinks_auth_user';
const ACCOUNT_DATA_KEY = 'smartlinks_account_data';
export const tokenStorage = {
saveToken(token, expiresAt) {
const authToken = {
token,
expiresAt: expiresAt || Date.now() + 3600000, // Default 1 hour
};
localStorage.setItem(TOKEN_KEY, JSON.stringify(authToken));
},
getToken() {
const stored = localStorage.getItem(TOKEN_KEY);
if (!stored)
return null;
try {
const authToken = JSON.parse(stored);
// Check if token is expired
if (authToken.expiresAt && authToken.expiresAt < Date.now()) {
this.clearToken();
return null;
}
return authToken;
}
catch {
return null;
}
},
clearToken() {
localStorage.removeItem(TOKEN_KEY);
},
saveUser(user) {
localStorage.setItem(USER_KEY, JSON.stringify(user));
},
getUser() {
const stored = localStorage.getItem(USER_KEY);
if (!stored)
return null;
try {
return JSON.parse(stored);
}
catch {
return null;
}
},
clearUser() {
localStorage.removeItem(USER_KEY);
},
clearAll() {
this.clearToken();
this.clearUser();
this.clearAccountData();
},
saveAccountData(data) {
localStorage.setItem(ACCOUNT_DATA_KEY, JSON.stringify(data));
},
getAccountData() {
const stored = localStorage.getItem(ACCOUNT_DATA_KEY);
if (!stored)
return null;
try {
return JSON.parse(stored);
}
catch {
return null;
}
},
clearAccountData() {
localStorage.removeItem(ACCOUNT_DATA_KEY);
},
};