role = staff (@Roles([userRoleEnum.enum.staff]) at the class level). Sign-up is disabled by design in v1 (ADR 0015), so User creation happens only through this surface, and set-password links are minted here and delivered to the client through the staff member’s existing channel because Sintropix does not send email in v1.
Source:
apps/erp-backend/src/auth/onboarding/onboarding.controller.ts. Base path: /api/onboarding.POST /onboarding/users
Create a User.
- Body:
CreateUserDto. - Response:
onboardedUserSchema.
GET /onboarding/users
Look up a User by email.
- Query:
FindUserByEmailDto(email). - Response:
onboardedUserSchema.
POST /onboarding/users/:userId/memberships
Grant an Entity Membership to a User. client Users see and edit exactly the Entities they hold a Membership row for; staff Users bypass the check entirely and do not need Memberships.
- Body:
GrantMembershipDto. - Status:
204.
DELETE /onboarding/users/:userId/memberships
Revoke an Entity Membership. Body shape matches POST (the same GrantMembershipDto).
- Body:
GrantMembershipDto. - Status:
204.
POST /onboarding/users/:userId/set-password-link
Mint a one-time link the User can follow to set (or reset) their password. Delivery is manual: the staff member sends the link to the client over their existing channel (Sintropix has no transactional email provider in v1).
- Response:
setPasswordLinkSchema.
POST /onboarding/users/:userId/revoke-sessions
Revoke every active session for a User, forcing a fresh sign-in on their next request. Use after a suspected credential compromise.
- Status:
204.