mirror of
https://github.com/isledecomp/isle.pizza.git
synced 2026-05-03 03:03:56 +00:00
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { betterAuth } from "better-auth";
|
|
import { anonymous } from "better-auth/plugins";
|
|
|
|
export type Variables = {
|
|
session: { user: { id: string } };
|
|
};
|
|
|
|
export type Env = {
|
|
DB: D1Database;
|
|
API_URL: string;
|
|
BETTER_AUTH_SECRET: string;
|
|
DISCORD_CLIENT_ID?: string;
|
|
DISCORD_CLIENT_SECRET?: string;
|
|
};
|
|
|
|
export function createAuth(env: Env) {
|
|
return betterAuth({
|
|
database: env.DB,
|
|
baseURL: env.API_URL,
|
|
secret: env.BETTER_AUTH_SECRET,
|
|
plugins: [
|
|
anonymous({
|
|
onLinkAccount: async ({ anonymousUser, newUser }) => {
|
|
// Transfer all data from anonymous to linked account
|
|
await env.DB.batch([
|
|
env.DB.prepare(
|
|
"UPDATE memory_completions SET user_id = ? WHERE user_id = ?"
|
|
).bind(newUser.user.id, anonymousUser.user.id),
|
|
env.DB.prepare(
|
|
"UPDATE user_saves SET user_id = ? WHERE user_id = ?"
|
|
).bind(newUser.user.id, anonymousUser.user.id),
|
|
env.DB.prepare(
|
|
"UPDATE user_config SET user_id = ? WHERE user_id = ?"
|
|
).bind(newUser.user.id, anonymousUser.user.id),
|
|
]);
|
|
},
|
|
}),
|
|
],
|
|
socialProviders: {
|
|
...(env.DISCORD_CLIENT_ID && env.DISCORD_CLIENT_SECRET
|
|
? {
|
|
discord: {
|
|
clientId: env.DISCORD_CLIENT_ID,
|
|
clientSecret: env.DISCORD_CLIENT_SECRET,
|
|
},
|
|
}
|
|
: {}),
|
|
},
|
|
trustedOrigins: ["http://localhost:5173", "http://localhost:3000", "https://isle.pizza", "https://dev.isle.pizza"],
|
|
});
|
|
}
|