48 lines
1013 B
TypeScript
48 lines
1013 B
TypeScript
import { PrismaAdapter } from '@lucia-auth/adapter-prisma'
|
|
import { Lucia, TimeSpan } from 'lucia'
|
|
import prisma from '../prisma/client.ts'
|
|
|
|
declare module 'lucia' {
|
|
interface Register {
|
|
Lucia: typeof auth
|
|
UserId: string
|
|
DatabaseUserAttributes: DatabaseUserAttributes
|
|
DatabaseSessionAttributes: DatabaseSessionAttributes
|
|
}
|
|
}
|
|
|
|
interface DatabaseUserAttributes {
|
|
id: string
|
|
displayName: string
|
|
username: string
|
|
}
|
|
|
|
interface DatabaseSessionAttributes {
|
|
livekitToken: string | null
|
|
}
|
|
|
|
export const SESSION_EXPIRES_IN = new TimeSpan(30, 'd')
|
|
|
|
export const auth = new Lucia(new PrismaAdapter(prisma.session, prisma.user), {
|
|
sessionExpiresIn: SESSION_EXPIRES_IN,
|
|
sessionCookie: {
|
|
attributes: {
|
|
sameSite: 'none',
|
|
},
|
|
},
|
|
getUserAttributes: ({ id, displayName, username }) => {
|
|
return {
|
|
id,
|
|
displayName,
|
|
username,
|
|
}
|
|
},
|
|
getSessionAttributes: ({ livekitToken }) => {
|
|
return {
|
|
livekitToken,
|
|
}
|
|
},
|
|
})
|
|
|
|
export type Auth = typeof auth
|