41eb722369
- Invite flow: admin can invite users by email with role selection; accept-invite page sets password and creates the account; 72-hour token expiry; E2E tests - User deactivate/reactivate/delete: new tRPC procedures + UI buttons; deactivation revokes all active sessions immediately; delete cascades vacation/broadcast records; isActive field added via migration 20260402000000_user_isactive - Auth: block login for inactive users with audit entry - Favicon: SVG favicon + ICO/PNG fallbacks (16, 32, 180, 192, 512px); manifest updated - Dashboard: GridLayout dynamic-import loading skeleton prevents blank dark area on first login before react-grid-layout chunk is cached - Admin users: remove max-w-5xl constraint so table uses full page width - Dev: docker container restart workflow documented in LEARNINGS.md; Prisma generate must run inside the container after schema changes (named node_modules volume) Co-Authored-By: claude-flow <ruv@ruv.net>
9 lines
378 B
SQL
9 lines
378 B
SQL
-- Add isActive flag to users for soft deactivation.
|
|
-- Active sessions are purged on deactivation so existing JWTs stop working
|
|
-- on the next auth check.
|
|
|
|
ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "isActive" BOOLEAN NOT NULL DEFAULT TRUE;
|
|
|
|
-- Index for quick admin queries (active vs. inactive users)
|
|
CREATE INDEX IF NOT EXISTS "users_isActive_idx" ON "users"("isActive");
|