Changeset 298f9b3 for src/lib/auth.ts
- Timestamp:
- 01/21/26 18:03:04 (8 months ago)
- Branches:
- master
- Children:
- 50f2fb4
- Parents:
- 997d094
- File:
-
- 1 edited
-
src/lib/auth.ts (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/lib/auth.ts
r997d094 r298f9b3 2 2 accessToken: string; 3 3 refreshToken: string; 4 }; 5 6 export type UserRole = 'Professor' | 'Student' | string; 7 8 export type AuthSession = AuthTokens & { 9 role: UserRole; 4 10 }; 5 11 … … 12 18 access: 'iknow.auth.access', 13 19 refresh: 'iknow.auth.refresh', 20 role: 'iknow.auth.role', 14 21 } as const; 15 22 … … 59 66 } 60 67 68 export function setUserRole(role: UserRole) { 69 // Keep role TTL aligned with access token TTL. 70 writeStoredToken(STORAGE_KEYS.role, role, ACCESS_TOKEN_TTL_MS); 71 } 72 61 73 export function getAccessToken(): string | null { 62 74 return readStoredToken(STORAGE_KEYS.access)?.value ?? null; … … 67 79 } 68 80 81 export function getUserRole(): UserRole | null { 82 return readStoredToken(STORAGE_KEYS.role)?.value ?? null; 83 } 84 69 85 export function clearAuthTokens() { 70 86 if (!isBrowser()) return; 71 87 window.localStorage.removeItem(STORAGE_KEYS.access); 72 88 window.localStorage.removeItem(STORAGE_KEYS.refresh); 89 window.localStorage.removeItem(STORAGE_KEYS.role); 73 90 } 74 91 75 export async function login(params: { email: string; password: string }) {92 export async function login(params: { email: string; password: string }): Promise<AuthSession> { 76 93 const baseUrl = process.env.NEXT_PUBLIC_API_BASE_URL ?? 'https://iknow-api.onrender.com'; 77 94 … … 100 117 101 118 const data = (await response.json()) as { 102 token?: { accessToken?: string; refreshToken?: string }; 119 token?: string; 120 refreshToken?: string; 121 role?: string; 103 122 }; 104 123 105 const accessToken = data?.token?.accessToken; 106 const refreshToken = data?.token?.refreshToken; 124 const accessToken = data?.token; 125 const refreshToken = data?.refreshToken; 126 const role = data?.role; 107 127 108 128 if (!accessToken || !refreshToken) { … … 110 130 } 111 131 112 const tokens: AuthTokens = { accessToken, refreshToken }; 113 setAuthTokens(tokens); 114 return tokens; 132 const session: AuthSession = { 133 accessToken, 134 refreshToken, 135 role: role ?? 'Student', 136 }; 137 138 setAuthTokens(session); 139 setUserRole(session.role); 140 return session; 115 141 }
Note:
See TracChangeset
for help on using the changeset viewer.
