feat(web): auth provider section in settings page (GRO-391) #216

Merged
groombook-engineer[bot] merged 15 commits from feat/gro-392-oobe-auth-provider-bootstrap into main 2026-04-03 08:16:17 +00:00
2 changed files with 8 additions and 2 deletions
Showing only changes of commit 075fd68cde - Show all commits
+1 -1
View File
@@ -187,4 +187,4 @@ authProviderRouter.delete("/", requireSuperUser(), async (c) => {
await db.delete(authProviderConfig).where(eq(authProviderConfig.id, existing.id));
return c.json({ ok: true, message: "Auth provider config removed; auth will fall back to env vars" });
});
});
+7 -1
View File
@@ -110,6 +110,12 @@ const authProviderBootstrapSchema = z.object({
scopes: z.string().default("openid profile email"),
});
// Minimal schema for test endpoint — OIDC discovery only needs issuer/internal URLs
const authProviderTestSchema = z.object({
issuerUrl: z.string().url(),
internalBaseUrl: z.string().url().nullable().optional(),
});
/**
* POST /api/setup/auth-provider
* Unauthenticated endpoint for first-time auth provider setup during OOBE.
@@ -186,7 +192,7 @@ setupRouter.post("/auth-provider", zValidator("json", authProviderBootstrapSchem
* Fetches the OIDC discovery document to confirm the issuer is reachable.
* Only available when needsSetup is true (no super user = fresh install).
*/
setupRouter.post("/auth-provider/test", zValidator("json", authProviderBootstrapSchema), async (c) => {
setupRouter.post("/auth-provider/test", zValidator("json", authProviderTestSchema), async (c) => {
const db = getDb();
// Guard: only allow during fresh install (no super user yet)