fix(auth): apply effective trusted origins and honor allowed hostnames in public mode
This commit is contained in:
@@ -53,7 +53,7 @@ export function deriveAuthTrustedOrigins(config: Config): string[] {
|
|||||||
// Better Auth will surface invalid base URL separately.
|
// Better Auth will surface invalid base URL separately.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (config.deploymentMode === "authenticated" && config.deploymentExposure === "private") {
|
if (config.deploymentMode === "authenticated") {
|
||||||
for (const hostname of config.allowedHostnames) {
|
for (const hostname of config.allowedHostnames) {
|
||||||
const trimmed = hostname.trim().toLowerCase();
|
const trimmed = hostname.trim().toLowerCase();
|
||||||
if (!trimmed) continue;
|
if (!trimmed) continue;
|
||||||
@@ -65,15 +65,15 @@ export function deriveAuthTrustedOrigins(config: Config): string[] {
|
|||||||
return Array.from(trustedOrigins);
|
return Array.from(trustedOrigins);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createBetterAuthInstance(db: Db, config: Config): BetterAuthInstance {
|
export function createBetterAuthInstance(db: Db, config: Config, trustedOrigins?: string[]): BetterAuthInstance {
|
||||||
const baseUrl = config.authBaseUrlMode === "explicit" ? config.authPublicBaseUrl : undefined;
|
const baseUrl = config.authBaseUrlMode === "explicit" ? config.authPublicBaseUrl : undefined;
|
||||||
const secret = process.env.BETTER_AUTH_SECRET ?? process.env.PAPERCLIP_AGENT_JWT_SECRET ?? "paperclip-dev-secret";
|
const secret = process.env.BETTER_AUTH_SECRET ?? process.env.PAPERCLIP_AGENT_JWT_SECRET ?? "paperclip-dev-secret";
|
||||||
const trustedOrigins = deriveAuthTrustedOrigins(config);
|
const effectiveTrustedOrigins = trustedOrigins ?? deriveAuthTrustedOrigins(config);
|
||||||
|
|
||||||
const authConfig = {
|
const authConfig = {
|
||||||
baseURL: baseUrl,
|
baseURL: baseUrl,
|
||||||
secret,
|
secret,
|
||||||
trustedOrigins,
|
trustedOrigins: effectiveTrustedOrigins,
|
||||||
database: drizzleAdapter(db, {
|
database: drizzleAdapter(db, {
|
||||||
provider: "pg",
|
provider: "pg",
|
||||||
schema: {
|
schema: {
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ if (config.deploymentMode === "authenticated") {
|
|||||||
},
|
},
|
||||||
"Authenticated mode auth origin configuration",
|
"Authenticated mode auth origin configuration",
|
||||||
);
|
);
|
||||||
const auth = createBetterAuthInstance(db as any, config);
|
const auth = createBetterAuthInstance(db as any, config, effectiveTrustedOrigins);
|
||||||
betterAuthHandler = createBetterAuthHandler(auth);
|
betterAuthHandler = createBetterAuthHandler(auth);
|
||||||
resolveSession = (req) => resolveBetterAuthSession(auth, req);
|
resolveSession = (req) => resolveBetterAuthSession(auth, req);
|
||||||
resolveSessionFromHeaders = (headers) => resolveBetterAuthSessionFromHeaders(auth, headers);
|
resolveSessionFromHeaders = (headers) => resolveBetterAuthSessionFromHeaders(auth, headers);
|
||||||
|
|||||||
Reference in New Issue
Block a user