WebHooker/migrations
RhenCloud 9b8533cabc
feat(admin): role-based group members (owner/admin/viewer), invites and audit log
- Group model: members[] with roles owner/admin/viewer; legacy adminIds
  resolve to owners (backward compatible); last-owner and self-demotion
  guards
- Unified permission middleware (src/web/auth.ts): requireAnyAccess,
  requireGroup(Role), bearerAuthMiddleware replace per-route loadScope
- Single-use 7-day invite links (invite:{token}); accept via /admin/invite
  or the OAuth callback; self-signup personal group via ALLOW_SELF_SIGNUP
- D1 audit_logs (migration 0005): login/logout, group/route/member/invite
  changes; GET /admin/api/audit; scheduled prune after AUDIT_RETENTION_DAYS
- Env: ALLOW_SELF_SIGNUP, AUDIT_RETENTION_DAYS
2026-08-11 23:37:19 +08:00
..
0001_init.sql feat: migrate send logs and discord links to D1 2026-08-03 05:18:58 +08:00
0002_log_detail.sql feat(admin): add detailed send log viewer with extended fields 2026-08-03 05:19:02 +08:00
0003_telegram_links.sql feat: add Telegram push support with multi-target routes 2026-08-03 05:19:05 +08:00
0004_add_group_id.sql fix: allow duplicate route IDs across groups and add group_id to send_logs 2026-08-08 23:00:15 +08:00
0005_audit_logs.sql feat(admin): role-based group members (owner/admin/viewer), invites and audit log 2026-08-11 23:37:19 +08:00