liljudd-website/src/lib/auth.ts
2024-03-01 20:50:11 +01:00

43 lines
1.3 KiB
TypeScript

import { DrizzlePostgreSQLAdapter } from "@lucia-auth/adapter-drizzle";
import { Discord } from "arctic";
import { Lucia } from "lucia";
import db from "~/drizzle";
import { sessions, users } from "~/drizzle/schema";
if (typeof import.meta.env.PROD === "undefined")
throw new Error("No env PROD found!");
if (typeof import.meta.env.VITE_DISCORD_CLIENT_ID === "undefined")
throw new Error("No env VITE_DISCORD_CLIENT_ID found!");
if (typeof import.meta.env.VITE_DISCORD_CLIENT_SECRET === "undefined")
throw new Error("No env PROD found!");
if (typeof import.meta.env.VITE_AUTH_REDIRECT_URL === "undefined")
throw new Error("No env VITE_AUTH_REDIRECT_URL found!");
const adapter = new DrizzlePostgreSQLAdapter(db, sessions, users);
export const lucia = new Lucia(adapter, {
sessionCookie: {
attributes: {
// set to `true` when using HTTPS
secure: import.meta.env.PROD,
},
},
getUserAttributes: (attributes) => attributes,
});
export const discord = new Discord(
import.meta.env.VITE_DISCORD_CLIENT_ID,
import.meta.env.VITE_DISCORD_CLIENT_SECRET,
import.meta.env.VITE_AUTH_REDIRECT_URL,
);
const unencoded = `${import.meta.env.VITE_DISCORD_CLIENT_ID}:${import.meta.env.VITE_DISCORD_CLIENT_SECRET}`;
const encoded = btoa(unencoded);
export const BasicAuth = {
unencoded: `Basic ${unencoded}`,
encoded: `Basic ${encoded}`,
};