Suspend / Reactivate / Ban buttons on the user detail page; wired to spoke endpoints (sase.tr#27). Admin SDK - suspendUser/reactivateUser/banUser on SaseAdmin + LifecycleResult. - SASE_ADMIN_ENDPOINTS updated. Route - POST /api/sase/users/[id]/lifecycle (action + reason). Auth + spoke wired + min reason length checks. Audit on both success and failure. RO model - Sase Prisma schema adds status/statusReason/statusChangedAt/ statusChangedBy. getUser() returns lifecycleStatus + statusReason. UI - LifecycleStatusBadge in header next to email reveal. - LifecycleButtons renders the right actions for the current state. - Modals with reason textarea; ban requires a double-confirm checkbox. - Impersonate hidden when user is suspended/banned (AuthGuard rejects). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
6.6 KiB
6.6 KiB