6fdf9a9d54
Roles: - Add GET /api/v1/roles (built-in SuperAdmin/Admin/Operator/Viewer) and wire role assignment into user create/update (UserRepository.SetRoles / GetRoleNames / ListRoles). User responses now include roles. - User dialog gains a roles multi-select; the users list shows role chips. OIDC / SSO config UI: - Default role is now a dropdown populated from /roles. - Issuer URL shows real provider examples (Entra/Okta/Google). - Replace the confusing manual "Redirect URL" field with a read-only, auto-derived callback URL (from the browser origin / public URL) plus a copy button — the exact value to register at the IdP. The backend still auto-derives the callback and honors an env override. Verified: /roles lists the four roles; creating/updating a user with roles round-trips through GET. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>