feat(api): auth provider CRUD endpoints + test-connection (GRO-388)
Implements admin API endpoints for managing auth provider configuration. All gated by requireSuperUser(). Endpoints: - GET /api/admin/auth-provider - returns config with clientSecret=redacted - PUT /api/admin/auth-provider - encrypts clientSecret before DB write - POST /api/admin/auth-provider/test - validates OIDC discovery endpoint - DELETE /api/admin/auth-provider - removes DB config Fixes CTO review findings: - PUT uses db.transaction() for atomic upsert (was non-atomic delete+insert) - Rebased on latest main (drops stale GRO-404/406 commits) - Added EOF newlines to authProvider.ts and authProvider.test.ts Unit tests with 9 passing test cases covering all endpoints and RBAC. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -17,6 +17,7 @@ import { appointmentGroupsRouter } from "./routes/appointmentGroups.js";
|
||||
import { groomingLogsRouter } from "./routes/groomingLogs.js";
|
||||
import { impersonationRouter } from "./routes/impersonation.js";
|
||||
import { settingsRouter } from "./routes/settings.js";
|
||||
import { authProviderRouter } from "./routes/authProvider.js";
|
||||
import { searchRouter } from "./routes/search.js";
|
||||
import { getPresignedGetUrl } from "./lib/s3.js";
|
||||
import { calendarRouter } from "./routes/calendar.js";
|
||||
@@ -164,6 +165,7 @@ api.route("/appointment-groups", appointmentGroupsRouter);
|
||||
api.route("/grooming-logs", groomingLogsRouter);
|
||||
api.route("/impersonation", impersonationRouter);
|
||||
api.route("/admin/settings", settingsRouter);
|
||||
api.route("/admin/auth-provider", authProviderRouter);
|
||||
api.route("/admin/seed", adminSeedRouter);
|
||||
api.route("/search", searchRouter);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user