.agents/features/users.md
Manages user identity, platform membership, roles, and session security. A User record ties a UserIdentity (the canonical email/password/OAuth identity) to a specific platform, enabling the same person to exist across multiple platforms. Platform roles gate what users can see and do.
packages/server/api/src/app/user/user-service.ts — user CRUD, getMe, profile update, role assignmentpackages/server/api/src/app/user/user-entity.ts — User and UserIdentity entitiespackages/server/api/src/app/user/platform/platform-user-controller.ts — platform admin user management endpoints (EE)packages/server/api/src/app/user/platform/platform-user-module.ts — platform user modulepackages/core/shared/src/lib/core/user/user.ts — User, UserWithMetaInformation schemas; PlatformRole and UserStatus enumspackages/web/src/app/routes/platform/users/index.tsx — platform admin user list pagepackages/web/src/app/routes/platform/users/columns.tsx — user table column definitionspackages/web/src/app/routes/platform/users/actions/user-actions.tsx — action menu for a user rowpackages/web/src/app/routes/platform/users/actions/update-user-dialog.tsx — edit role/status dialogpackages/web/src/app/routes/platform/users/actions/edit-user-action.tsx — edit action triggerpackages/web/src/app/routes/platform/users/actions/toggle-user-status-action.tsx — activate/deactivate actionpackages/web/src/app/routes/platform/users/actions/delete-user-action.tsx — delete user actionpackages/web/src/features/authentication/components/sign-in-form.tsx — sign-in formpackages/web/src/features/authentication/components/sign-up-form.tsx — sign-up formpackages/web/src/features/authentication/components/change-password.tsx — password change formpackages/web/src/features/authentication/hooks/auth-hooks.ts — auth React Query hooksGET /v1/users/me, POST /v1/users/meplatform-user-controller.ts (list, update role, deactivate, delete)Canonical term definitions live in the bounded-context glossaries — see CONTEXT-MAP.md.
ADMIN (full control), MEMBER (own projects only), OPERATOR (read access to all projects)User: id, platformRole (ADMIN/MEMBER/OPERATOR), status (ACTIVE/INACTIVE), identityId (FK to UserIdentity), externalId (nullable), platformId (FK), lastActiveDate. Unique on (platformId, identityId).
UserIdentity: id, email, password (hashed), firstName, lastName, provider (EMAIL/GOOGLE/SAML/JWT), verified (boolean), tokenVersion (for session invalidation). One identity → many users (across platforms).
tokenVersion in UserIdentity: incrementing invalidates all existing tokensGET /v1/users/me — get current user with identity infoPOST /v1/users/me — update profile (firstName, lastName, profilePicture)