feat(auth): superadmin user-management page + CRUD
/admin/users page and /api/admin/users/* JSON CRUD endpoints, all behind
require_role("superadmin"). Temp passwords are returned once on create/reset
and never stored in plaintext. Admins get 403; password_hash is never leaked.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,9 @@ app.middleware("http")(operator_gate)
|
||||
from backend.routers import operator_auth_routes
|
||||
app.include_router(operator_auth_routes.router)
|
||||
|
||||
from backend.routers import operator_users
|
||||
app.include_router(operator_users.router)
|
||||
|
||||
# Override TemplateResponse to include environment and version in context
|
||||
original_template_response = templates.TemplateResponse
|
||||
def custom_template_response(name, context=None, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user