export const auth = betterAuth({
database: drizzleAdapter(db, {
provider: "pg",
debugLogs: true,
}),
secondaryStorage: {
get: async (key) => await redis.get(key),
set: async (key, value, ttl) =>
await redis.set(key, value, "EX", `${ttl ?? ""}`),
delete: async (key) => {
await redis.del(key);
},
},
trustedOrigins: appConfig.TRUSTED_DOMAINS,
experimental: {
joins: true,
},
emailAndPassword: {
enabled: true,
minPasswordLength: 6,
requireEmailVerification: true,
sendResetPassword: async ({ user, url, token }) => {
console.log({ user, url, token });
return Promise.resolve();
},
},
basePath: "/api/auth",
plugins: [openAPI(), bearer()],
user: {
deleteUser: {
enabled: true,
afterDelete: async (user) => {
const key = `active-sessions-${user.id}`;
const listRaw = await redis.get(key);
if (!listRaw) return;
const list = JSON.parse(listRaw);
for (const session of list) {
await redis.del(session.token);
}
await redis.del(key);
},
},
},
});
export const auth = betterAuth({
database: drizzleAdapter(db, {
provider: "pg",
debugLogs: true,
}),
secondaryStorage: {
get: async (key) => await redis.get(key),
set: async (key, value, ttl) =>
await redis.set(key, value, "EX", `${ttl ?? ""}`),
delete: async (key) => {
await redis.del(key);
},
},
trustedOrigins: appConfig.TRUSTED_DOMAINS,
experimental: {
joins: true,
},
emailAndPassword: {
enabled: true,
minPasswordLength: 6,
requireEmailVerification: true,
sendResetPassword: async ({ user, url, token }) => {
console.log({ user, url, token });
return Promise.resolve();
},
},
basePath: "/api/auth",
plugins: [openAPI(), bearer()],
user: {
deleteUser: {
enabled: true,
afterDelete: async (user) => {
const key = `active-sessions-${user.id}`;
const listRaw = await redis.get(key);
if (!listRaw) return;
const list = JSON.parse(listRaw);
for (const session of list) {
await redis.del(session.token);
}
await redis.del(key);
},
},
},
});