feat: user invite flow, deactivate/delete, favicon, dashboard loading fix, admin full-width
- 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>
This commit is contained in:
@@ -4,6 +4,9 @@ import {
|
||||
countActiveUsers,
|
||||
CreateUserInputSchema,
|
||||
createUser,
|
||||
deactivateUser,
|
||||
reactivateUser,
|
||||
deleteUser,
|
||||
disableTotp,
|
||||
getEffectiveUserPermissions,
|
||||
LinkUserResourceInputSchema,
|
||||
@@ -116,6 +119,18 @@ export const userRouter = createTRPCRouter({
|
||||
.input(VerifyAndEnableTotpInputSchema)
|
||||
.mutation(({ ctx, input }) => verifyAndEnableTotpSelfService(ctx, input)),
|
||||
|
||||
deactivate: adminProcedure
|
||||
.input(UserIdInputSchema)
|
||||
.mutation(({ ctx, input }) => deactivateUser(ctx, input)),
|
||||
|
||||
reactivate: adminProcedure
|
||||
.input(UserIdInputSchema)
|
||||
.mutation(({ ctx, input }) => reactivateUser(ctx, input)),
|
||||
|
||||
delete: adminProcedure
|
||||
.input(UserIdInputSchema)
|
||||
.mutation(({ ctx, input }) => deleteUser(ctx, input)),
|
||||
|
||||
/** Admin override: disable TOTP for a specific user. */
|
||||
disableTotp: adminProcedure
|
||||
.input(UserIdInputSchema)
|
||||
|
||||
Reference in New Issue
Block a user