draupnir4all-web

git clone git://archive.git.mtrnord.blog/MTRNord/draupnir4all-web.git
Log | Files | Refs | README | LICENSE

auth.ts (931B)


      1 'use client'
      2 
      3 export type User = {
      4     matrixId: string
      5     token: string
      6     homeserverUrl: string
      7     openidExpiration: number
      8 }
      9 
     10 export function createSession(user: User) {
     11     const localStorage = globalThis.localStorage;
     12     if (localStorage) {
     13         localStorage.setItem('session', JSON.stringify(user))
     14     }
     15 }
     16 
     17 export function deleteSession() {
     18     const localStorage = globalThis.localStorage;
     19     if (localStorage) {
     20         localStorage.removeItem('session')
     21     }
     22 }
     23 
     24 export function getSessionUser(): User | undefined {
     25     try {
     26         // Get the session from local storage
     27         const sessionCookie = globalThis.localStorage?.getItem('session')
     28         if (!sessionCookie) {
     29             return
     30         }
     31 
     32         return JSON.parse(sessionCookie) as User
     33     } catch (error) {
     34         globalThis.localStorage?.removeItem('session')
     35 
     36         console.error("Failed to verify session:", error)
     37         return
     38     }
     39 }