import { Lucia } from 'lucia'; import { dev } from '$app/environment'; import { DrizzlePostgreSQLAdapter } from '@lucia-auth/adapter-drizzle'; import { db } from './db'; import { sessions, users } from './db/schema'; import { Gitea } from 'arctic'; import { GITEA_BASE_URL, GITEA_CLIENT_ID, GITEA_CLIENT_SECRET, CALLBACK_BASE_URL } from '$env/static/private'; const adapter = new DrizzlePostgreSQLAdapter(db, sessions, users); export const lucia = new Lucia(adapter, { sessionCookie: { attributes: { secure: !dev } }, getUserAttributes: (attributes) => { return { username: attributes.username, giteaId: attributes.giteaId, avatarUrl: attributes.avatarUrl }; } }); declare module 'lucia' { interface Register { Lucia: typeof lucia; DatabaseUserAttributes: DatabaseUserAttributes; } } interface DatabaseUserAttributes { username: string; giteaId: number; avatarUrl: string; } export const gitea = new Gitea( GITEA_BASE_URL, GITEA_CLIENT_ID, GITEA_CLIENT_SECRET, CALLBACK_BASE_URL + '/login/gitea/callback' );