feat(admin): add audited Refine staging console

This commit is contained in:
Jesse
2026-07-28 09:47:13 +08:00
parent 43581ac0f7
commit 02ec5db361
35 changed files with 4545 additions and 272 deletions
+18 -3
View File
@@ -16,6 +16,8 @@ interface AdminRoleRow {
ban_expires: Date | null;
}
export type IdentityAdminSurfaceRole = "admin" | "viewer";
export function createIdentityPool(databaseUrl: string): Pool {
return new Pool({
connectionString: databaseUrl,
@@ -27,8 +29,9 @@ export function createIdentityPool(databaseUrl: string): Pool {
});
}
export function createDatabaseAdminAuthorizer(
function createDatabaseRoleAuthorizer(
pool: Pool,
allowedRoles: ReadonlySet<string>,
): AdminUserAuthorizer {
return async (userId) => {
const result = await pool.query<AdminRoleRow>(
@@ -52,10 +55,22 @@ export function createDatabaseAdminAuthorizer(
return user.role
.split(",")
.map((role) => role.trim())
.includes("admin");
.some((role) => allowedRoles.has(role));
};
}
export function createDatabaseAdminAuthorizer(
pool: Pool,
): AdminUserAuthorizer {
return createDatabaseRoleAuthorizer(pool, new Set(["admin"]));
}
export function createDatabaseAdminSurfaceAuthorizer(
pool: Pool,
): AdminUserAuthorizer {
return createDatabaseRoleAuthorizer(pool, new Set(["admin", "viewer"]));
}
export interface IdentityAuthServices {
pool: Pool;
user: ReturnType<typeof betterAuth>;
@@ -80,7 +95,7 @@ export function createIdentityAuthServices(
from: config.resendFrom,
});
const authorizeAdminUser =
dependencies.authorizeAdminUser ?? createDatabaseAdminAuthorizer(pool);
dependencies.authorizeAdminUser ?? createDatabaseAdminSurfaceAuthorizer(pool);
return {
pool,