43 lines
1.3 KiB
TypeScript
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}`,
|
|
};
|