refactor: restructure auth initialization to fix type errors
This commit is contained in:
parent
89315bb8a1
commit
e6793c9655
1 changed files with 14 additions and 9 deletions
|
|
@ -14,13 +14,9 @@ import { ensureOnlyOneUser } from "./auth-middlewares/only-one-user";
|
||||||
|
|
||||||
export type AuthMiddlewareContext = MiddlewareContext<MiddlewareOptions, AuthContext<BetterAuthOptions>>;
|
export type AuthMiddlewareContext = MiddlewareContext<MiddlewareOptions, AuthContext<BetterAuthOptions>>;
|
||||||
|
|
||||||
let _auth: ReturnType<typeof betterAuth> | null = null;
|
const createBetterAuth = (secret: string) =>
|
||||||
|
betterAuth({
|
||||||
const createAuth = async () => {
|
secret,
|
||||||
if (_auth) return _auth;
|
|
||||||
|
|
||||||
_auth = betterAuth({
|
|
||||||
secret: await cryptoUtils.deriveSecret("better-auth"),
|
|
||||||
hooks: {
|
hooks: {
|
||||||
before: createAuthMiddleware(async (ctx) => {
|
before: createAuthMiddleware(async (ctx) => {
|
||||||
await ensureOnlyOneUser(ctx);
|
await ensureOnlyOneUser(ctx);
|
||||||
|
|
@ -53,10 +49,19 @@ const createAuth = async () => {
|
||||||
plugins: [username({})],
|
plugins: [username({})],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
type Auth = ReturnType<typeof createBetterAuth>;
|
||||||
|
|
||||||
|
let _auth: Auth | null = null;
|
||||||
|
|
||||||
|
const createAuth = async (): Promise<Auth> => {
|
||||||
|
if (_auth) return _auth;
|
||||||
|
|
||||||
|
_auth = createBetterAuth(await cryptoUtils.deriveSecret("better-auth"));
|
||||||
|
|
||||||
return _auth;
|
return _auth;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const auth = {
|
export const auth: Auth = {
|
||||||
get api() {
|
get api() {
|
||||||
if (!_auth) throw new Error("Auth not initialized. Call initAuth() first.");
|
if (!_auth) throw new Error("Auth not initialized. Call initAuth() first.");
|
||||||
return _auth.api;
|
return _auth.api;
|
||||||
|
|
@ -65,6 +70,6 @@ export const auth = {
|
||||||
if (!_auth) throw new Error("Auth not initialized. Call initAuth() first.");
|
if (!_auth) throw new Error("Auth not initialized. Call initAuth() first.");
|
||||||
return _auth.handler;
|
return _auth.handler;
|
||||||
},
|
},
|
||||||
};
|
} as Auth;
|
||||||
|
|
||||||
export const initAuth = createAuth;
|
export const initAuth = createAuth;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue