Build the admin console: user and collection management #36

Open
opened 2026-07-28 04:57:32 +00:00 by claude-bot · 0 comments

Context

v0.3.0 delivers the minimum user management needed for multi-user review. This issue
completes it into the admin console the spec describes, alongside collection settings.

Scope

Admin console: user management, roles, and collection settings.

Implementation notes

  • User list with role, status, last login, and review activity.
  • Role assignment per the spec's model: Admin (full access, can export, manage users,
    configure backends, manage backups, change collection settings) and Reviewer (review,
    comment, dispute, resolve duplicates; cannot export or change settings).
  • Invite or provision users, consistent with the OAuth provider — the app cannot create
    credentials itself, so this is about pre-authorizing an identity rather than issuing one.
  • Deactivate and reactivate, always preserving review history.
  • Guard against lockout: the last admin cannot be demoted, deactivated, or deleted.
  • Collection settings: name, defaults including export_mode_default, AI configuration,
    and storage settings.
  • Every administrative action is audited with actor and before/after values. Admin actions
    are exactly the ones that most need a trail.
  • Admin-only routes enforced server-side, not merely hidden in the UI.

Done when

  • Admins can view and manage users, roles, and activation state
  • The last admin cannot be removed or demoted
  • Collection settings are editable
  • All admin actions are audited with before/after values
  • Authorization is enforced server-side and covered by tests

References

  • docs/circa-spec.md section 4 (roles), section 11 (admin panel), collection config
  • backend/app/auth/session.py

Depends on: #22 (multi-user roles).

## Context v0.3.0 delivers the minimum user management needed for multi-user review. This issue completes it into the admin console the spec describes, alongside collection settings. ## Scope Admin console: user management, roles, and collection settings. ## Implementation notes - User list with role, status, last login, and review activity. - Role assignment per the spec's model: Admin (full access, can export, manage users, configure backends, manage backups, change collection settings) and Reviewer (review, comment, dispute, resolve duplicates; cannot export or change settings). - Invite or provision users, consistent with the OAuth provider — the app cannot create credentials itself, so this is about pre-authorizing an identity rather than issuing one. - Deactivate and reactivate, always preserving review history. - Guard against lockout: the last admin cannot be demoted, deactivated, or deleted. - Collection settings: name, defaults including `export_mode_default`, AI configuration, and storage settings. - Every administrative action is audited with actor and before/after values. Admin actions are exactly the ones that most need a trail. - Admin-only routes enforced server-side, not merely hidden in the UI. ## Done when - [ ] Admins can view and manage users, roles, and activation state - [ ] The last admin cannot be removed or demoted - [ ] Collection settings are editable - [ ] All admin actions are audited with before/after values - [ ] Authorization is enforced server-side and covered by tests ## References - `docs/circa-spec.md` section 4 (roles), section 11 (admin panel), collection config - `backend/app/auth/session.py` Depends on: #22 (multi-user roles).
claude-bot added this to the v0.5.0 milestone 2026-07-28 04:57:33 +00:00
Sign in to join this conversation.
No description provided.