feat(management): admin actions and session history #192
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Store owners/admins have no visibility into administrative operations (such as inventory stock adjustments, user creation/edits, password resets, and order modifications) and cannot inspect or revoke active user login sessions across devices.
Acceptance Criteria
actionLogs(action_logs) inapps/management/lib/db/schema.tstrackinguserId,userName,userRole,action,entityType,entityId,description,metadata(jsonb),ipAddress, andcreatedAt.sessions(session) inapps/management/lib/db/schema.tsreferencingusers.id.action_logsinapps/management/drizzle/.logAction(txOrDb, entry)inapps/management/lib/audit/service.ts.adjustStockActioninapps/management/lib/inventory/actions.ts)createUserAction,updateUserAction,resetPasswordActioninapps/management/lib/users/actions.ts)updateOrderActioninapps/management/lib/orders/actions.ts)apps/management/lib/audit/actions.ts:getActionLogs(filter)guarded byrequireAdmin().getSessions()guarded byrequireAdmin(), identifying current session and parsing userAgent for device/browser.revokeSessionAction(sessionId)guarded byrequireAdmin()(disallowing self-revocation).revokeAllOtherSessionsAction()guarded byrequireAdmin()./settings/auditguarded byrequireAdmin()(non-admins redirected to/).dashboard-nav.tsx.logAction,getActionLogs,getSessions, andrevokeSessionActionwith admin checks inapps/management/lib/audit/actions.test.ts.pnpm --filter garage testpasses.pnpm --filter garage typecheckpasses..forgejo/scripts/biome-gate.shpasses.