export class Auth {
static initialized = false;
private static instance: ReturnType<typeof betterAuth>;
static async init(c: Context<Env>) {
if (Auth.instance) {
await Auth.getSession(c);
Auth.initialized = true;
return Object.freeze(Auth.instance);
}
Auth.instance = betterAuth({
database: drizzleAdapter(
{
dialect: new D1Dialect({
database: c.env.DB,
}),
},
),
});
Auth.initialized = true;
await Auth.getSession(c);
return Object.freeze(Auth.instance);
}
static async getSession(c: Context) {
const session = await Auth.instance.api.getSession({
headers: c.req.raw.headers,
});
c.set("user", session?.user ?? null);
c.set("session", session?.session ?? null);
return session;
}
static getInstance() {
if (!Auth.instance) {
throw new Error("Auth instance not initialized");
}
return Object.freeze(Auth.instance);
}
}
export class Auth {
static initialized = false;
private static instance: ReturnType<typeof betterAuth>;
static async init(c: Context<Env>) {
if (Auth.instance) {
await Auth.getSession(c);
Auth.initialized = true;
return Object.freeze(Auth.instance);
}
Auth.instance = betterAuth({
database: drizzleAdapter(
{
dialect: new D1Dialect({
database: c.env.DB,
}),
},
),
});
Auth.initialized = true;
await Auth.getSession(c);
return Object.freeze(Auth.instance);
}
static async getSession(c: Context) {
const session = await Auth.instance.api.getSession({
headers: c.req.raw.headers,
});
c.set("user", session?.user ?? null);
c.set("session", session?.session ?? null);
return session;
}
static getInstance() {
if (!Auth.instance) {
throw new Error("Auth instance not initialized");
}
return Object.freeze(Auth.instance);
}
}