This commit is contained in:
2026-08-14 01:38:34 +02:00
parent a9395585f8
commit dc9ea628c1
12 changed files with 163 additions and 140 deletions
+7 -11
View File
@@ -343,12 +343,10 @@ func (s *Server) Router() http.Handler {
r.Route("/api/admin", func(r chi.Router) {
r.Use(s.RequireSession)
// Non-prod only: user switch / impersonation (handlers also fail closed).
if !s.Config.IsProduction() {
r.Get("/dev/switchable-users", s.handleAdminDevListSwitchableUsers)
r.Post("/dev/stop-impersonate", s.handleAdminDevStopImpersonate)
r.Post("/users/{id}/impersonate", s.handleAdminDevImpersonate)
}
// User switch / impersonation: platform staff_role=admin (handlers enforce).
r.Get("/dev/switchable-users", s.handleAdminDevListSwitchableUsers)
r.Post("/dev/stop-impersonate", s.handleAdminDevStopImpersonate)
r.Post("/users/{id}/impersonate", s.handleAdminDevImpersonate)
// Support desk: full admin OR support_staff (least privilege).
r.Group(func(r chi.Router) {
@@ -389,11 +387,9 @@ func (s *Server) Router() http.Handler {
r.Get("/users", s.handleAdminListUsers)
r.Patch("/users/{id}/staff-role", s.handleAdminSetStaffRole)
r.Put("/support/agents/{id}", s.handleAdminSetSupportAgent)
r.Get("/staff", s.handleAdminListStaff)
if !s.Config.IsProduction() {
r.Post("/users/{id}/dev-password", s.handleAdminDevSetPassword)
}
r.Get("/companies", s.handleAdminListCompanies)
r.Get("/staff", s.handleAdminListStaff)
r.Post("/users/{id}/dev-password", s.handleAdminDevSetPassword)
r.Get("/companies", s.handleAdminListCompanies)
r.Get("/readiness", s.handleAdminReadiness)
r.Get("/diagnostics", s.handleAdminDiagnostics)
r.Get("/analytics", s.handleAdminAnalytics)