session lifetime
This commit is contained in:
+28
-8
@@ -1,6 +1,18 @@
|
||||
export function passwordKey(workspaceSlug) { return `rustpad:workspace:${workspaceSlug}:password`; }
|
||||
export function getPassword(workspaceSlug) { return sessionStorage.getItem(passwordKey(workspaceSlug)) || ""; }
|
||||
export function setPassword(workspaceSlug, password) { if (password) sessionStorage.setItem(passwordKey(workspaceSlug), password); else sessionStorage.removeItem(passwordKey(workspaceSlug)); }
|
||||
export function accessTokenKey(resourceKind, resourceSlug) { return `rustpad:access:${resourceKind}:${resourceSlug}`; }
|
||||
export function getAccessToken(resourceKind, resourceSlug) {
|
||||
return localStorage.getItem(accessTokenKey(resourceKind, resourceSlug)) || "";
|
||||
}
|
||||
export function setAccessToken(resourceKind, resourceSlug, token) {
|
||||
const key = accessTokenKey(resourceKind, resourceSlug);
|
||||
if (token) localStorage.setItem(key, token);
|
||||
else localStorage.removeItem(key);
|
||||
}
|
||||
// Remove plaintext passwords saved by the previous frontend version.
|
||||
for (let i = localStorage.length - 1; i >= 0; i--) {
|
||||
const key = localStorage.key(i);
|
||||
if (key?.startsWith("rustpad:workspace:") && key.endsWith(":password")) localStorage.removeItem(key);
|
||||
}
|
||||
|
||||
const NICKNAME_KEY = "rustpad:nickname";
|
||||
const NICKNAME_COOKIE = "rustpad_nickname";
|
||||
// A session cookie is shared by tabs, but disappears when the browser session
|
||||
@@ -29,11 +41,19 @@ export function setNickname(value) {
|
||||
}
|
||||
|
||||
const AUTH_TOKEN_KEY = "rustpad:auth-token";
|
||||
const legacyAuthToken = localStorage.getItem(AUTH_TOKEN_KEY);
|
||||
if (legacyAuthToken && !sessionStorage.getItem(AUTH_TOKEN_KEY)) sessionStorage.setItem(AUTH_TOKEN_KEY, legacyAuthToken);
|
||||
localStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
export function getAuthToken() { return sessionStorage.getItem(AUTH_TOKEN_KEY) || ""; }
|
||||
export function setAuthSession(session) { sessionStorage.setItem(AUTH_TOKEN_KEY, session.token); setNickname(session.nickname); }
|
||||
// Account sessions must be shared by every tab on this origin. Keep a
|
||||
// compatibility fallback for sessions created by older frontend versions.
|
||||
const legacySessionToken = sessionStorage.getItem(AUTH_TOKEN_KEY);
|
||||
if (legacySessionToken && !localStorage.getItem(AUTH_TOKEN_KEY)) {
|
||||
localStorage.setItem(AUTH_TOKEN_KEY, legacySessionToken);
|
||||
}
|
||||
sessionStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
export function getAuthToken() { return localStorage.getItem(AUTH_TOKEN_KEY) || ""; }
|
||||
export function setAuthSession(session) {
|
||||
localStorage.setItem(AUTH_TOKEN_KEY, session.token);
|
||||
sessionStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
setNickname(session.nickname);
|
||||
}
|
||||
export function clearAuthSession() {
|
||||
localStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
sessionStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
|
||||
Reference in New Issue
Block a user