mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-25 05:46:13 +00:00
feat(tenancy): implement workspace isolation
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
export const ACTIVE_WORKSPACE_STORAGE_KEY = 'langbot_active_workspace_uuid';
|
||||
export const PENDING_INVITATION_TOKEN_KEY = 'langbot_pending_invitation_token';
|
||||
|
||||
let activeWorkspaceUuid: string | null = null;
|
||||
|
||||
function readStoredWorkspaceUuid(): string | null {
|
||||
if (typeof window === 'undefined') return null;
|
||||
const value = localStorage.getItem(ACTIVE_WORKSPACE_STORAGE_KEY)?.trim();
|
||||
return value || null;
|
||||
}
|
||||
|
||||
export function getActiveWorkspaceUuid(): string | null {
|
||||
if (activeWorkspaceUuid) return activeWorkspaceUuid;
|
||||
activeWorkspaceUuid = readStoredWorkspaceUuid();
|
||||
return activeWorkspaceUuid;
|
||||
}
|
||||
|
||||
export function setActiveWorkspaceUuid(workspaceUuid: string): void {
|
||||
const normalized = workspaceUuid.trim();
|
||||
if (!normalized) {
|
||||
throw new Error('Workspace UUID cannot be empty');
|
||||
}
|
||||
activeWorkspaceUuid = normalized;
|
||||
if (typeof window !== 'undefined') {
|
||||
localStorage.setItem(ACTIVE_WORKSPACE_STORAGE_KEY, normalized);
|
||||
}
|
||||
}
|
||||
|
||||
export function clearActiveWorkspaceUuid(): void {
|
||||
activeWorkspaceUuid = null;
|
||||
if (typeof window !== 'undefined') {
|
||||
localStorage.removeItem(ACTIVE_WORKSPACE_STORAGE_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
export function getPendingInvitationToken(): string | null {
|
||||
if (typeof window === 'undefined') return null;
|
||||
const token = sessionStorage.getItem(PENDING_INVITATION_TOKEN_KEY)?.trim();
|
||||
return token || null;
|
||||
}
|
||||
|
||||
export function setPendingInvitationToken(token: string): void {
|
||||
const normalized = token.trim();
|
||||
if (!normalized) throw new Error('Invitation token cannot be empty');
|
||||
if (typeof window !== 'undefined') {
|
||||
sessionStorage.setItem(PENDING_INVITATION_TOKEN_KEY, normalized);
|
||||
}
|
||||
}
|
||||
|
||||
export function clearPendingInvitationToken(): void {
|
||||
if (typeof window !== 'undefined') {
|
||||
sessionStorage.removeItem(PENDING_INVITATION_TOKEN_KEY);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user