feat(api): user management and audit log for admins (M1)
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 47s
ci / ts / ts (packages + web) (push) Successful in 38s
ci / api / api (push) Successful in 18s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 35s

- /admin/users: list with search, role filter and cursor pages; create
  with a one-time temporary password; rename, change role, block;
  reset password; delete
- every change is checked against the role policy, a forbidden field
  rejects the whole patch; the last active admin is locked in the
  transaction and cannot be demoted, blocked or deleted
- role change and blocking revoke access tokens at once; blocking and
  password reset also end all sessions
- /admin/audit: newest-first journal with actor names
- path and query parameter errors are problem+json now

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-20 06:18:02 +03:00
1 parent ed4a492dba
commit f075863f15
13 files changed
+2578 -70

No files matched your search

+12
View File
@@ -95,6 +95,18 @@ type Principal struct {
MustChangeCredentials bool
}
// AuditRecord — прочитанная запись audit_log с логином автора.
type AuditRecord struct {
ID uuid.UUID
ActorID *uuid.UUID
ActorUsername *string
Action string
TargetType *string
TargetID *uuid.UUID
Payload map[string]any
CreatedAt time.Time
}
// AuditEntry — запись audit_log.
type AuditEntry struct {
ActorID *uuid.UUID