Files
el-inv/src/lib/server/auth.ts
2025-11-21 22:23:50 +00:00

45 lines
1.1 KiB
TypeScript

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'
);