@neohm/nestend 4.0.2 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -10
- package/dist/admin/controllers/admin.tenant.user.controller.d.ts +8 -1
- package/dist/admin/controllers/admin.tenant.user.controller.d.ts.map +1 -1
- package/dist/admin/controllers/admin.tenant.user.controller.js +75 -7
- package/dist/admin/controllers/admin.tenant.user.controller.js.map +1 -1
- package/dist/admin/dtos/add.client.membership.dto.d.ts +6 -0
- package/dist/admin/dtos/add.client.membership.dto.d.ts.map +1 -0
- package/dist/admin/dtos/add.client.membership.dto.js +41 -0
- package/dist/admin/dtos/add.client.membership.dto.js.map +1 -0
- package/dist/admin/es6.classes.d.ts +4 -2
- package/dist/admin/es6.classes.d.ts.map +1 -1
- package/dist/admin/es6.classes.js +4 -0
- package/dist/admin/es6.classes.js.map +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.js +13 -5
- package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.membership.data.processor.d.ts +14 -0
- package/dist/admin/libraries/client.membership.data.processor.d.ts.map +1 -0
- package/dist/admin/libraries/client.membership.data.processor.js +56 -0
- package/dist/admin/libraries/client.membership.data.processor.js.map +1 -0
- package/dist/admin/libraries/client.user.data.processor.d.ts +1 -2
- package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.js +24 -31
- package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.delete.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.user.delete.processor.js +4 -0
- package/dist/admin/libraries/client.user.delete.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.list.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.user.list.processor.js +14 -2
- package/dist/admin/libraries/client.user.list.processor.js.map +1 -1
- package/dist/admin/libraries/tenant.delete.processor.d.ts.map +1 -1
- package/dist/admin/libraries/tenant.delete.processor.js +22 -9
- package/dist/admin/libraries/tenant.delete.processor.js.map +1 -1
- package/dist/admin/libraries/user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/user.data.processor.js +4 -1
- package/dist/admin/libraries/user.data.processor.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +22 -3
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/controllers/auth.controller.d.ts +8 -7
- package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
- package/dist/auth/controllers/auth.controller.js +36 -12
- package/dist/auth/controllers/auth.controller.js.map +1 -1
- package/dist/auth/controllers/impersonation.controller.d.ts +2 -2
- package/dist/auth/controllers/impersonation.controller.d.ts.map +1 -1
- package/dist/auth/controllers/tenant.invitation.controller.d.ts +18 -0
- package/dist/auth/controllers/tenant.invitation.controller.d.ts.map +1 -0
- package/dist/auth/controllers/tenant.invitation.controller.js +120 -0
- package/dist/auth/controllers/tenant.invitation.controller.js.map +1 -0
- package/dist/auth/controllers/tenant.member.controller.d.ts +18 -0
- package/dist/auth/controllers/tenant.member.controller.d.ts.map +1 -0
- package/dist/auth/controllers/tenant.member.controller.js +129 -0
- package/dist/auth/controllers/tenant.member.controller.js.map +1 -0
- package/dist/auth/controllers/user.invitation.controller.d.ts +12 -0
- package/dist/auth/controllers/user.invitation.controller.d.ts.map +1 -0
- package/dist/auth/controllers/user.invitation.controller.js +76 -0
- package/dist/auth/controllers/user.invitation.controller.js.map +1 -0
- package/dist/auth/controllers/user.organization.controller.d.ts +17 -0
- package/dist/auth/controllers/user.organization.controller.d.ts.map +1 -0
- package/dist/auth/controllers/user.organization.controller.js +88 -0
- package/dist/auth/controllers/user.organization.controller.js.map +1 -0
- package/dist/auth/dtos/invite.tenant.user.dto.d.ts +6 -0
- package/dist/auth/dtos/invite.tenant.user.dto.d.ts.map +1 -0
- package/dist/auth/dtos/invite.tenant.user.dto.js +45 -0
- package/dist/auth/dtos/invite.tenant.user.dto.js.map +1 -0
- package/dist/auth/dtos/member.roles.dto.d.ts +4 -0
- package/dist/auth/dtos/member.roles.dto.d.ts.map +1 -0
- package/dist/auth/dtos/member.roles.dto.js +28 -0
- package/dist/auth/dtos/member.roles.dto.js.map +1 -0
- package/dist/auth/dtos/switch.organization.dto.d.ts +5 -0
- package/dist/auth/dtos/switch.organization.dto.d.ts.map +1 -0
- package/dist/auth/dtos/switch.organization.dto.js +25 -0
- package/dist/auth/dtos/switch.organization.dto.js.map +1 -0
- package/dist/auth/dtos/tenant.invitation.list.dto.d.ts +5 -0
- package/dist/auth/dtos/tenant.invitation.list.dto.d.ts.map +1 -0
- package/dist/auth/dtos/tenant.invitation.list.dto.js +27 -0
- package/dist/auth/dtos/tenant.invitation.list.dto.js.map +1 -0
- package/dist/auth/dtos/tenant.member.list.dto.d.ts +5 -0
- package/dist/auth/dtos/tenant.member.list.dto.d.ts.map +1 -0
- package/dist/auth/dtos/tenant.member.list.dto.js +27 -0
- package/dist/auth/dtos/tenant.member.list.dto.js.map +1 -0
- package/dist/auth/entities/tenant.invitation.entity.d.ts +13 -0
- package/dist/auth/entities/tenant.invitation.entity.d.ts.map +1 -0
- package/dist/auth/entities/tenant.invitation.entity.js +52 -0
- package/dist/auth/entities/tenant.invitation.entity.js.map +1 -0
- package/dist/auth/entities/tenant.user.entity.d.ts +8 -0
- package/dist/auth/entities/tenant.user.entity.d.ts.map +1 -0
- package/dist/auth/entities/tenant.user.entity.js +35 -0
- package/dist/auth/entities/tenant.user.entity.js.map +1 -0
- package/dist/auth/entities/user.entity.d.ts +5 -0
- package/dist/auth/entities/user.entity.d.ts.map +1 -1
- package/dist/auth/entities/user.entity.js +17 -0
- package/dist/auth/entities/user.entity.js.map +1 -1
- package/dist/auth/entities/user.role.entity.d.ts +2 -2
- package/dist/auth/entities/user.role.entity.d.ts.map +1 -1
- package/dist/auth/entities/user.role.entity.js +2 -2
- package/dist/auth/entities/user.role.entity.js.map +1 -1
- package/dist/auth/enums/auth.default.enum.d.ts +3 -1
- package/dist/auth/enums/auth.default.enum.d.ts.map +1 -1
- package/dist/auth/enums/auth.default.enum.js +2 -0
- package/dist/auth/enums/auth.default.enum.js.map +1 -1
- package/dist/auth/enums/tenant.invitation.default.enum.d.ts +4 -0
- package/dist/auth/enums/tenant.invitation.default.enum.d.ts.map +1 -0
- package/dist/auth/enums/tenant.invitation.default.enum.js +8 -0
- package/dist/auth/enums/tenant.invitation.default.enum.js.map +1 -0
- package/dist/auth/enums/tenant.invitation.status.enum.d.ts +7 -0
- package/dist/auth/enums/tenant.invitation.status.enum.d.ts.map +1 -0
- package/dist/auth/enums/tenant.invitation.status.enum.js +11 -0
- package/dist/auth/enums/tenant.invitation.status.enum.js.map +1 -0
- package/dist/auth/enums/user.type.enum.d.ts.map +1 -1
- package/dist/auth/enums/user.type.enum.js.map +1 -1
- package/dist/auth/es6.classes.d.ts +15 -4
- package/dist/auth/es6.classes.d.ts.map +1 -1
- package/dist/auth/es6.classes.js +35 -2
- package/dist/auth/es6.classes.js.map +1 -1
- package/dist/auth/helpers/auth.d.ts +1 -1
- package/dist/auth/helpers/auth.d.ts.map +1 -1
- package/dist/auth/helpers/auth.js +7 -4
- package/dist/auth/helpers/auth.js.map +1 -1
- package/dist/auth/processors/change.password.data.processor.d.ts.map +1 -1
- package/dist/auth/processors/change.password.data.processor.js +1 -0
- package/dist/auth/processors/change.password.data.processor.js.map +1 -1
- package/dist/auth/processors/google.user.data.processor.js +1 -1
- package/dist/auth/processors/google.user.data.processor.js.map +1 -1
- package/dist/auth/processors/register.user.data.processor.js +1 -1
- package/dist/auth/processors/register.user.data.processor.js.map +1 -1
- package/dist/auth/processors/tenant.invitation.data.processor.d.ts +20 -0
- package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -0
- package/dist/auth/processors/tenant.invitation.data.processor.js +112 -0
- package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -0
- package/dist/auth/processors/tenant.invitation.list.processor.d.ts +13 -0
- package/dist/auth/processors/tenant.invitation.list.processor.d.ts.map +1 -0
- package/dist/auth/processors/tenant.invitation.list.processor.js +67 -0
- package/dist/auth/processors/tenant.invitation.list.processor.js.map +1 -0
- package/dist/auth/processors/tenant.member.list.processor.d.ts +13 -0
- package/dist/auth/processors/tenant.member.list.processor.d.ts.map +1 -0
- package/dist/auth/processors/tenant.member.list.processor.js +66 -0
- package/dist/auth/processors/tenant.member.list.processor.js.map +1 -0
- package/dist/auth/services/admin.auth.service.d.ts.map +1 -1
- package/dist/auth/services/admin.auth.service.js +2 -2
- package/dist/auth/services/admin.auth.service.js.map +1 -1
- package/dist/auth/services/auth.service.d.ts +5 -0
- package/dist/auth/services/auth.service.d.ts.map +1 -1
- package/dist/auth/services/auth.service.js +51 -13
- package/dist/auth/services/auth.service.js.map +1 -1
- package/dist/auth/services/impersonation.service.d.ts +2 -2
- package/dist/auth/services/impersonation.service.d.ts.map +1 -1
- package/dist/auth/services/impersonation.service.js +1 -1
- package/dist/auth/services/impersonation.service.js.map +1 -1
- package/dist/auth/services/tenant.invitation.service.d.ts +26 -0
- package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -0
- package/dist/auth/services/tenant.invitation.service.js +212 -0
- package/dist/auth/services/tenant.invitation.service.js.map +1 -0
- package/dist/auth/services/tenant.membership.service.d.ts +29 -0
- package/dist/auth/services/tenant.membership.service.d.ts.map +1 -0
- package/dist/auth/services/tenant.membership.service.js +178 -0
- package/dist/auth/services/tenant.membership.service.js.map +1 -0
- package/dist/auth/types/auth.types.d.ts +24 -2
- package/dist/auth/types/auth.types.d.ts.map +1 -1
- package/dist/auth/utilities/access.revocation.d.ts +2 -0
- package/dist/auth/utilities/access.revocation.d.ts.map +1 -1
- package/dist/auth/utilities/access.revocation.js +12 -0
- package/dist/auth/utilities/access.revocation.js.map +1 -1
- package/dist/auth/utilities/auth.utilities.d.ts +1 -0
- package/dist/auth/utilities/auth.utilities.d.ts.map +1 -1
- package/dist/auth/utilities/auth.utilities.js +4 -0
- package/dist/auth/utilities/auth.utilities.js.map +1 -1
- package/dist/auth/utilities/tenant.access.d.ts +8 -0
- package/dist/auth/utilities/tenant.access.d.ts.map +1 -0
- package/dist/auth/utilities/tenant.access.js +61 -0
- package/dist/auth/utilities/tenant.access.js.map +1 -0
- package/dist/common/es6.classes.d.ts +2 -2
- package/dist/constants/entity.constants.d.ts +2 -0
- package/dist/constants/entity.constants.d.ts.map +1 -1
- package/dist/constants/entity.constants.js +2 -0
- package/dist/constants/entity.constants.js.map +1 -1
- package/dist/constants/entity.maps.d.ts +4 -0
- package/dist/constants/entity.maps.d.ts.map +1 -1
- package/dist/constants/entity.maps.js +4 -0
- package/dist/constants/entity.maps.js.map +1 -1
- package/dist/constants/job.constants.d.ts +1 -0
- package/dist/constants/job.constants.d.ts.map +1 -1
- package/dist/constants/job.constants.js +1 -0
- package/dist/constants/job.constants.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/migrations/1749600000003.CreateSysUsersTable.d.ts.map +1 -1
- package/dist/migrations/1749600000003.CreateSysUsersTable.js +4 -0
- package/dist/migrations/1749600000003.CreateSysUsersTable.js.map +1 -1
- package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.d.ts.map +1 -1
- package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js +8 -1
- package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js.map +1 -1
- package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts +6 -0
- package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts.map +1 -0
- package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js +33 -0
- package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js.map +1 -0
- package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts +6 -0
- package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts.map +1 -0
- package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js +43 -0
- package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js.map +1 -0
- package/dist/notification/enums/email.notification.default.enum.d.ts +1 -0
- package/dist/notification/enums/email.notification.default.enum.d.ts.map +1 -1
- package/dist/notification/enums/email.notification.default.enum.js +1 -0
- package/dist/notification/enums/email.notification.default.enum.js.map +1 -1
- package/dist/notification/enums/email.template.identifier.enum.d.ts +2 -1
- package/dist/notification/enums/email.template.identifier.enum.d.ts.map +1 -1
- package/dist/notification/enums/email.template.identifier.enum.js +1 -0
- package/dist/notification/enums/email.template.identifier.enum.js.map +1 -1
- package/dist/notification/es6.classes.d.ts +2 -1
- package/dist/notification/es6.classes.d.ts.map +1 -1
- package/dist/notification/es6.classes.js +6 -1
- package/dist/notification/es6.classes.js.map +1 -1
- package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts +14 -0
- package/dist/notification/jobs/tenant.user.invited.mail.job.d.ts.map +1 -0
- package/dist/notification/jobs/tenant.user.invited.mail.job.js +57 -0
- package/dist/notification/jobs/tenant.user.invited.mail.job.js.map +1 -0
- package/dist/notification/notification.module.d.ts.map +1 -1
- package/dist/notification/notification.module.js +3 -1
- package/dist/notification/notification.module.js.map +1 -1
- package/dist/notification/types/email.notification.types.d.ts +9 -0
- package/dist/notification/types/email.notification.types.d.ts.map +1 -1
- package/dist/tenant/middlewares/tenant.context.middleware.d.ts +2 -3
- package/dist/tenant/middlewares/tenant.context.middleware.d.ts.map +1 -1
- package/dist/tenant/middlewares/tenant.context.middleware.js +12 -23
- package/dist/tenant/middlewares/tenant.context.middleware.js.map +1 -1
- package/dist/tenant/services/tenant.service.d.ts +0 -2
- package/dist/tenant/services/tenant.service.d.ts.map +1 -1
- package/dist/tenant/services/tenant.service.js +0 -22
- package/dist/tenant/services/tenant.service.js.map +1 -1
- package/dist/tenant/types/tenant.types.d.ts +0 -5
- package/dist/tenant/types/tenant.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/tenant/enums/tenant.default.enum.d.ts +0 -4
- package/dist/tenant/enums/tenant.default.enum.d.ts.map +0 -1
- package/dist/tenant/enums/tenant.default.enum.js +0 -8
- package/dist/tenant/enums/tenant.default.enum.js.map +0 -1
package/README.md
CHANGED
|
@@ -104,14 +104,14 @@ these are free to change without a breaking release.
|
|
|
104
104
|
| Area | Key exports | Notes |
|
|
105
105
|
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
106
106
|
| Entities | `RootEntity`, `CommonEntity`, `CommonAdminEntity`, `UserEntity`, `AdminUserEntity`, `SystemRoleEntity`, `SystemAdminRoleEntity`, ... | uuid PK, soft deletes, `created_by`/`updated_by` (+ `creator`/`updater` relations), jsonb `attributes`; entity-level `findOneOrNew`, `hardDelete`, `restore`, `paginate` statics plus a row-wise `softDelete()` |
|
|
107
|
-
| Migrations | `MigrationUtility`, `SeederUtility` (the
|
|
107
|
+
| Migrations | `MigrationUtility`, `SeederUtility` (the 31 table migrations ship in `dist/migrations` — glob them, they are not barrel exports) | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding |
|
|
108
108
|
| Queue | `QueueModule`, `QueueModule.withConnection()`, `QueueService`, `CommonJob` | BullMQ `@Processor`/`WorkerHost` consumer; auto-discovered jobs, duplicate prevention, recurring schedulers, completed jobs cleared from Redis on success (1-day TTL on failures), `clearQueue()`, retries, failures persisted to `sys_failed_jobs`; connection from `BULL_REDIS_*` or supplied by the app — never register `BullModule.forRoot()` yourself, two roots race over the worker's connection |
|
|
109
109
|
| Scheduled events | `SystemScheduledTaskEntity`, `ScheduledEventEntity`, `ScheduleKind`, `ScheduleSpec`, `IsCronExpression` | schedule definitions in `sys_scheduled_tasks` → events in `sys_scheduled_events`; interval / cron / once specs with timezones, drift-free slots, horizon materialisation, catch-up + overlap policies, fire-once dispatch with backoff, cadence via `SCHEDULED_EVENT_MIN` |
|
|
110
|
-
| Auth | `AuthModule`, `AuthService.validateRole()`, `RoleTier`, `TenantRole`, `Auth`, `JwtMiddleware` | imperative auth (open by default); `<module>.<tier>` role hierarchy (manager > writer > viewer), with `global.admin` overriding every role check; JwtMiddleware resolves the user into `Auth`'s AsyncLocalStorage context per request; access + rotating refresh tokens; session-based logout invalidation (`sys_auth_sessions`); Google SSO via ID token at `POST /auth/google`; impersonation — a tenantless `has_global_access` user signs into one organization at `POST /auth/impersonation/login` |
|
|
110
|
+
| Auth | `AuthModule`, `AuthService.validateRole()`, `RoleTier`, `TenantRole`, `Auth`, `JwtMiddleware` | imperative auth (open by default); `<module>.<tier>` role hierarchy (manager > writer > viewer), with `global.admin` overriding every role check; JwtMiddleware resolves the user into `Auth`'s AsyncLocalStorage context per request; access + rotating refresh tokens; session-based logout invalidation (`sys_auth_sessions`); Google SSO via ID token at `POST /auth/google`; impersonation — a tenantless `has_global_access` user signs into one organization at `POST /auth/impersonation/login`; multi-organization membership with per-organization roles, organization switching and `global.admin` invitations (`TenantMembershipService`, `TenantInvitationService`) |
|
|
111
111
|
| Admin auth | `AdminAuthService.validateRole()`, `AdminAuth`, `AdminJwtMiddleware` (endpoints at `/admin/auth`) | fully separate stack for back-office admins — own users table (`sys_admin_users`), own roles (`sys_admin_roles`/`sys_auser_roles`), own sessions/refresh tokens (shared tables, `is_admin` flag) |
|
|
112
112
|
| API keys | `ApiKeyService`, `ApiKeyGuard` / `ApiKeyMiddleware`, `@ApiKeyScopes()`, `ApiKeyContext` | hashed keys in `sys_api_keys` (admin-owned), one tenant per key, expiry/revocation, `x-api-key` header; `validateAccess(scope)` returns the tenant the key acts for |
|
|
113
113
|
| Scopes | `ScopeService`, `AuthService.validateAccess()`, `ScopeEntity`, `TenantScopeEntity`, `ApiScopeEntity` | one feature named once in `sys_scopes`, optionally with child scopes under it, then granted per organization (`sys_tenant_scopes`) or per API key (`sys_api_scopes`) — never an array on the principal |
|
|
114
|
-
| Multi-tenancy | `TenantModule`, `TenantEntity`, `CommonTenantEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context
|
|
114
|
+
| Multi-tenancy | `TenantModule`, `TenantEntity`, `CommonTenantEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context bound from the authenticated session (or API key), never a client-supplied header; tenants are onboarded by admins (`TenantEntity.creator` → `AdminUserEntity`) |
|
|
115
115
|
| Admin | `AdminModule` (its controllers, DTOs and processors are internal — import the module and hit the endpoints), `GlobalAdminRoles` | back-office APIs: tenant onboarding, client/admin/system user registration (single + bulk), the `has_global_access` grant that enables impersonation, tenant + scheduled-task listing, the email/PDF template catalogues (read at content-reader, written at content-manager, deleted at global admin); 4-tier `GlobalAdminRoles` gate over `sys_admin_roles`; Swagger at `/docs` (hidden in production) |
|
|
116
116
|
| Notifications | `NotificationModule`, `NotificationService`, `FcmPushNotificationService` | in-app rows + FCM push (optional `firebase-admin`); device token registry |
|
|
117
117
|
| Email (SES) | `EmailNotificationService`, `ProcessEmailNotification`, `EmailTemplateEntity`, `EmailNotificationLogEntity` | templates in `sys_email_templates` (managed from the admin surface) rendered by a remote service, dispatched via SES per recipient (to/cc/bcc); logged to `sys_email_notification_logs` outside production; dispatch skipped when `AWS_SES_FROM_ADDRESS` unset |
|
|
@@ -223,7 +223,8 @@ const { user } = await this.authService.validateAccess(
|
|
|
223
223
|
|
|
224
224
|
`AuthController` (mounted at `/auth`) exposes the ready-made flows: `POST
|
|
225
225
|
/auth/login`, `/auth/google`, `/auth/register`, `/auth/refresh`, `/auth/logout`,
|
|
226
|
-
`/auth/change-password`, and `GET /auth/me
|
|
226
|
+
`/auth/change-password`, and `GET /auth/me` (user, roles in the session's
|
|
227
|
+
organization, `organizations` to switch to, pending `invitations`). Passwords are hashed/verified via
|
|
227
228
|
`AuthUtility` (bcrypt); the write flows use the processor lifecycle. Credential
|
|
228
229
|
misses spend the same bcrypt work as a wrong password
|
|
229
230
|
(`AuthUtility.compareAgainstDummy()`), so response timing does not reveal
|
|
@@ -252,6 +253,35 @@ impersonated session, for an in-app switcher), each login writes an
|
|
|
252
253
|
tenant from real membership with `Auth.isImpersonating()` /
|
|
253
254
|
`Auth.impersonatedTenant()`.
|
|
254
255
|
|
|
256
|
+
**Multiple organizations** — a tenant user may belong to many organizations
|
|
257
|
+
(`sys_tenant_users`), with roles granted per organization (`sys_user_roles.tenant_id`).
|
|
258
|
+
Each session works in one, held on its `sys_auth_sessions` row and mirrored onto
|
|
259
|
+
`Auth.user().organization_id`, so role and scope checks only ever see that
|
|
260
|
+
organization's grants. Login lands in the last organization switched to (remembered in
|
|
261
|
+
`sys_users.organization_id`) or the first membership; a user with none gets a
|
|
262
|
+
tenantless session. `GET /auth/organizations` lists memberships and
|
|
263
|
+
`POST /auth/organizations/switch` (`{ tenant_id, refresh_token }`) retires the current
|
|
264
|
+
session and returns a pair bound to the chosen one; `POST /auth/organizations/:id/leave`
|
|
265
|
+
ends a membership and returns a fresh pair. A refresh re-checks the membership and
|
|
266
|
+
the tenant, so a removed member or a deactivated tenant drops the organization.
|
|
267
|
+
|
|
268
|
+
**Invitations** — an organization's `global.admin` invites an email with roles at
|
|
269
|
+
`POST /organization/invitations` (`{ email, role_ids }`; also `POST .../list`,
|
|
270
|
+
`DELETE .../:id` to revoke, `GET .../roles` for the picker). An address with no account gets one: a random one-time password is mailed through the
|
|
271
|
+
`tenant-user-invited` template and `password_change_required` is set, so every endpoint
|
|
272
|
+
except `GET /auth/me` and `POST /auth/change-password` (`AuthService.validateIdentity()`)
|
|
273
|
+
refuses until it is changed; resending the invitation re-issues it. The invitee
|
|
274
|
+
sees pending ones on `GET /auth/me` / `GET /auth/invitations` and answers with
|
|
275
|
+
`POST /auth/invitations/:id/accept` (membership + roles, then switch to use it) or
|
|
276
|
+
`.../decline`. Invitations expire after `TENANT_INVITATION_EXPIRY` (default `7d`).
|
|
277
|
+
Acceptance trusts the account's email — emails are unique case-insensitively, but
|
|
278
|
+
verify addresses if you allow open self-registration. The same `global.admin` manages
|
|
279
|
+
members at `/organization/members` (`POST list`, `POST :userId/roles`,
|
|
280
|
+
`POST :userId/deactivate` / `reactivate`, `DELETE :userId`) and resends invitations
|
|
281
|
+
(`POST /organization/invitations/:id/resend`). Deactivation suspends the membership,
|
|
282
|
+
not the account (which may belong elsewhere); an organization always keeps at least
|
|
283
|
+
one active `global.admin`. A deactivated account is refused on its next request.
|
|
284
|
+
|
|
255
285
|
**Google SSO** — the client posts a Google ID token as `{ id_token }` to
|
|
256
286
|
`POST /auth/google`. `GoogleAuthService` verifies it against Google's tokeninfo
|
|
257
287
|
endpoint (audience must match `GOOGLE_CLIENT_ID`, issuer `accounts.google.com`,
|
|
@@ -272,13 +302,16 @@ export class ReportController {
|
|
|
272
302
|
}
|
|
273
303
|
```
|
|
274
304
|
|
|
275
|
-
Wire the middleware once in your app so the user is resolved per request
|
|
276
|
-
|
|
305
|
+
Wire the middleware once in your app so the user is resolved per request.
|
|
306
|
+
`TenantContextMiddleware` goes after it — it binds the session's organization
|
|
307
|
+
(or the API key's tenant), never a client-supplied header or hostname:
|
|
277
308
|
|
|
278
309
|
```ts
|
|
279
310
|
export class AppModule implements NestModule {
|
|
280
311
|
configure(consumer: MiddlewareConsumer) {
|
|
281
|
-
consumer
|
|
312
|
+
consumer
|
|
313
|
+
.apply(JwtMiddleware, ApiKeyMiddleware, TenantContextMiddleware)
|
|
314
|
+
.forRoutes('*'); // Express 5: e.g. '{*splat}'
|
|
282
315
|
}
|
|
283
316
|
}
|
|
284
317
|
```
|
|
@@ -637,9 +670,9 @@ Requires the optional peer dependency `puppeteer`.
|
|
|
637
670
|
|
|
638
671
|
### Multi-tenancy
|
|
639
672
|
|
|
640
|
-
| Variable
|
|
641
|
-
|
|
|
642
|
-
| `
|
|
673
|
+
| Variable | Default | Description |
|
|
674
|
+
| -------------------------- | ------- | ---------------------------------------------------- |
|
|
675
|
+
| `TENANT_INVITATION_EXPIRY` | `7d` | How long an organization invitation stays answerable |
|
|
643
676
|
|
|
644
677
|
### API Keys
|
|
645
678
|
|
|
@@ -1067,6 +1100,9 @@ pass the actor to a processor.
|
|
|
1067
1100
|
| `POST /admin/tenant-users/list` | content reader | `ClientUserListProcessor` |
|
|
1068
1101
|
| `GET /admin/tenant-users/:id` | content reader | the row |
|
|
1069
1102
|
| `DELETE /admin/tenant-users/:id` | admin | `ClientUserDeleteProcessor` |
|
|
1103
|
+
| `POST /admin/tenant-users/memberships` | admin | `ClientMembershipDataProcessor` — add an existing user to a tenant |
|
|
1104
|
+
| `DELETE /admin/tenant-users/:id/memberships/:tenantId` | admin | `TenantMembershipService.removeMember` |
|
|
1105
|
+
| `POST /admin/tenant-users/:id/memberships/:tenantId/deactivate` · `/reactivate` | admin | `TenantMembershipService.setMemberActive` |
|
|
1070
1106
|
| `POST /admin/system-users` | super admin | `SystemUserDataProcessor` (upsert — send `id` to update) |
|
|
1071
1107
|
| `POST /admin/system-users/list` | content reader | `SystemUserListProcessor` (scoped to `user_type = system.user`) |
|
|
1072
1108
|
| `GET /admin/system-users/:id` | content reader | the row |
|
|
@@ -7,15 +7,22 @@ import { AdminAccessService } from '../services/admin.access.service';
|
|
|
7
7
|
import { TenantService } from '../../tenant/services/tenant.service';
|
|
8
8
|
import { TenantUserOnboardedMailJob } from '../../notification/jobs/tenant.user.onboarded.mail.job';
|
|
9
9
|
import { ListFilterService } from '../../common/services/list.filter.service';
|
|
10
|
+
import { TenantMembershipService } from '../../auth/services/tenant.membership.service';
|
|
11
|
+
import { AddClientMembershipDto } from '../dtos/add.client.membership.dto';
|
|
10
12
|
export declare class AdminTenantUserController {
|
|
11
13
|
protected readonly adminAccessService: AdminAccessService;
|
|
12
14
|
protected readonly tenantService: TenantService;
|
|
13
15
|
protected readonly tenantUserOnboardedMailJob: TenantUserOnboardedMailJob;
|
|
14
16
|
private readonly listFilterService;
|
|
15
|
-
|
|
17
|
+
private readonly tenantMembershipService;
|
|
18
|
+
constructor(adminAccessService: AdminAccessService, tenantService: TenantService, tenantUserOnboardedMailJob: TenantUserOnboardedMailJob, listFilterService: ListFilterService, tenantMembershipService: TenantMembershipService);
|
|
16
19
|
clientUserDetail({ id }: CommonParamsDto): Promise<UserEntity>;
|
|
17
20
|
addClientUser(dto: AddClientUserDto): Promise<UserEntity>;
|
|
18
21
|
addClientUsersBulk(dto: AddBulkUsersDto): Promise<import("../types/admin.types").BulkUserResult>;
|
|
22
|
+
addMembership(dto: AddClientMembershipDto): Promise<import("../..").TenantUserEntity>;
|
|
23
|
+
deactivateMembership(id: string, tenantId: string): Promise<import("../..").TenantUserEntity>;
|
|
24
|
+
reactivateMembership(id: string, tenantId: string): Promise<import("../..").TenantUserEntity>;
|
|
25
|
+
removeMembership(id: string, tenantId: string): Promise<import("../..").DeleteResult>;
|
|
19
26
|
listClientUsers(dto: ClientUserListDto): Promise<import("../..").CommonListResult>;
|
|
20
27
|
removeClientUser(id: string): Promise<import("../..").DeleteResult>;
|
|
21
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.tenant.user.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.tenant.user.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,qBACa,yBAAyB;IAElC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B;IACzE,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAJrB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B,EACxD,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,uBAAuB;IAS7D,gBAAgB,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAkBjD,aAAa,CAAS,GAAG,EAAE,gBAAgB;IAa3C,kBAAkB,CAAS,GAAG,EAAE,eAAe;IAW/C,aAAa,CAAS,GAAG,EAAE,sBAAsB;IAWjD,oBAAoB,CACI,EAAE,EAAE,MAAM,EACJ,QAAQ,EAAE,MAAM;IAiB9C,oBAAoB,CACI,EAAE,EAAE,MAAM,EACJ,QAAQ,EAAE,MAAM;IAkB9C,gBAAgB,CACQ,EAAE,EAAE,MAAM,EACJ,QAAQ,EAAE,MAAM;IAiB9C,eAAe,CAAS,GAAG,EAAE,iBAAiB;IAW9C,gBAAgB,CAA6B,EAAE,EAAE,MAAM;CAI9D"}
|
|
@@ -29,18 +29,22 @@ const admin_access_service_1 = require("../services/admin.access.service");
|
|
|
29
29
|
const tenant_service_1 = require("../../tenant/services/tenant.service");
|
|
30
30
|
const tenant_user_onboarded_mail_job_1 = require("../../notification/jobs/tenant.user.onboarded.mail.job");
|
|
31
31
|
const list_filter_service_1 = require("../../common/services/list.filter.service");
|
|
32
|
+
const tenant_membership_service_1 = require("../../auth/services/tenant.membership.service");
|
|
33
|
+
const add_client_membership_dto_1 = require("../dtos/add.client.membership.dto");
|
|
34
|
+
const client_membership_data_processor_1 = require("../libraries/client.membership.data.processor");
|
|
32
35
|
let AdminTenantUserController = class AdminTenantUserController {
|
|
33
|
-
constructor(adminAccessService, tenantService, tenantUserOnboardedMailJob, listFilterService) {
|
|
36
|
+
constructor(adminAccessService, tenantService, tenantUserOnboardedMailJob, listFilterService, tenantMembershipService) {
|
|
34
37
|
this.adminAccessService = adminAccessService;
|
|
35
38
|
this.tenantService = tenantService;
|
|
36
39
|
this.tenantUserOnboardedMailJob = tenantUserOnboardedMailJob;
|
|
37
40
|
this.listFilterService = listFilterService;
|
|
41
|
+
this.tenantMembershipService = tenantMembershipService;
|
|
38
42
|
}
|
|
39
43
|
async clientUserDetail({ id }) {
|
|
40
44
|
await this.adminAccessService.validateContentReader();
|
|
41
45
|
const user = await user_entity_1.UserEntity.findOne({
|
|
42
46
|
where: { id, user_type: user_type_enum_1.UserType.TENANT_USER },
|
|
43
|
-
relations: {
|
|
47
|
+
relations: { memberships: { tenant: true }, userRoles: { role: true } },
|
|
44
48
|
});
|
|
45
49
|
if (!user)
|
|
46
50
|
throw new common_1.NotFoundException('No client user exists for this id');
|
|
@@ -54,6 +58,22 @@ let AdminTenantUserController = class AdminTenantUserController {
|
|
|
54
58
|
await this.adminAccessService.validateAdmin();
|
|
55
59
|
return new bulk_user_data_processor_1.BulkUserDataProcessor(this.tenantService).process(dto);
|
|
56
60
|
}
|
|
61
|
+
async addMembership(dto) {
|
|
62
|
+
await this.adminAccessService.validateAdmin();
|
|
63
|
+
return new client_membership_data_processor_1.ClientMembershipDataProcessor(this.tenantService).process(dto);
|
|
64
|
+
}
|
|
65
|
+
async deactivateMembership(id, tenantId) {
|
|
66
|
+
await this.adminAccessService.validateAdmin();
|
|
67
|
+
return this.tenantMembershipService.setMemberActive(id, tenantId, false, undefined, false);
|
|
68
|
+
}
|
|
69
|
+
async reactivateMembership(id, tenantId) {
|
|
70
|
+
await this.adminAccessService.validateAdmin();
|
|
71
|
+
return this.tenantMembershipService.setMemberActive(id, tenantId, true, undefined, false);
|
|
72
|
+
}
|
|
73
|
+
async removeMembership(id, tenantId) {
|
|
74
|
+
const { user } = await this.adminAccessService.validateAdmin();
|
|
75
|
+
return this.tenantMembershipService.removeMember(id, tenantId, user.id, false);
|
|
76
|
+
}
|
|
57
77
|
async listClientUsers(dto) {
|
|
58
78
|
await this.adminAccessService.validateContentReader();
|
|
59
79
|
return new client_user_list_processor_1.ClientUserListProcessor(this.listFilterService).process(dto);
|
|
@@ -68,7 +88,7 @@ __decorate([
|
|
|
68
88
|
(0, common_1.Get)(':id'),
|
|
69
89
|
(0, swagger_1.ApiOperation)({
|
|
70
90
|
summary: 'One client (tenant-scoped) user, in full.',
|
|
71
|
-
description: "Carries the user's tenant
|
|
91
|
+
description: "Carries the user's memberships (each with its tenant) and role grants (each with its `tenant_id`) alongside everything the listing leaves out. The grants matter for editing: a save reconciles one tenant's `role_ids` against them and revokes whatever the payload omits, so an edit form has to start from this list. Requires at least the global content reader role.",
|
|
72
92
|
}),
|
|
73
93
|
__param(0, (0, common_1.Param)()),
|
|
74
94
|
__metadata("design:type", Function),
|
|
@@ -79,7 +99,7 @@ __decorate([
|
|
|
79
99
|
(0, common_1.Post)(),
|
|
80
100
|
(0, swagger_1.ApiOperation)({
|
|
81
101
|
summary: 'Register a single client (tenant-scoped) user, or update one.',
|
|
82
|
-
description:
|
|
102
|
+
description: "Send an `id` to edit that user; omit it to register a new one as a member of `tenant_id`. `password` is required only when creating. `role_ids` replaces the grants held in `tenant_id`, so an edit must send that tenant's full set (read them from `GET :id`). On an edit `tenant_id` must be one of the user's memberships; others are untouched. Requires at least the global admin role.",
|
|
83
103
|
}),
|
|
84
104
|
__param(0, (0, common_1.Body)()),
|
|
85
105
|
__metadata("design:type", Function),
|
|
@@ -97,11 +117,58 @@ __decorate([
|
|
|
97
117
|
__metadata("design:paramtypes", [add_bulk_users_dto_1.AddBulkUsersDto]),
|
|
98
118
|
__metadata("design:returntype", Promise)
|
|
99
119
|
], AdminTenantUserController.prototype, "addClientUsersBulk", null);
|
|
120
|
+
__decorate([
|
|
121
|
+
(0, common_1.Post)('memberships'),
|
|
122
|
+
(0, swagger_1.ApiOperation)({
|
|
123
|
+
summary: 'Add an existing client user to another tenant.',
|
|
124
|
+
description: 'Creates the membership and grants `role_ids` in that tenant. Refused when the user is already a member. Requires at least the global admin role.',
|
|
125
|
+
}),
|
|
126
|
+
__param(0, (0, common_1.Body)()),
|
|
127
|
+
__metadata("design:type", Function),
|
|
128
|
+
__metadata("design:paramtypes", [add_client_membership_dto_1.AddClientMembershipDto]),
|
|
129
|
+
__metadata("design:returntype", Promise)
|
|
130
|
+
], AdminTenantUserController.prototype, "addMembership", null);
|
|
131
|
+
__decorate([
|
|
132
|
+
(0, common_1.Post)(':id/memberships/:tenantId/deactivate'),
|
|
133
|
+
(0, swagger_1.ApiOperation)({
|
|
134
|
+
summary: "Deactivate a client user's membership of one tenant.",
|
|
135
|
+
description: "Roles are kept; the user's credentials bound to the tenant are revoked and it can no longer be worked in. Reversible. Requires at least the global admin role.",
|
|
136
|
+
}),
|
|
137
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
138
|
+
__param(1, (0, common_1.Param)('tenantId', common_1.ParseUUIDPipe)),
|
|
139
|
+
__metadata("design:type", Function),
|
|
140
|
+
__metadata("design:paramtypes", [String, String]),
|
|
141
|
+
__metadata("design:returntype", Promise)
|
|
142
|
+
], AdminTenantUserController.prototype, "deactivateMembership", null);
|
|
143
|
+
__decorate([
|
|
144
|
+
(0, common_1.Post)(':id/memberships/:tenantId/reactivate'),
|
|
145
|
+
(0, swagger_1.ApiOperation)({
|
|
146
|
+
summary: "Reactivate a client user's membership of one tenant.",
|
|
147
|
+
description: 'Requires at least the global admin role.',
|
|
148
|
+
}),
|
|
149
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
150
|
+
__param(1, (0, common_1.Param)('tenantId', common_1.ParseUUIDPipe)),
|
|
151
|
+
__metadata("design:type", Function),
|
|
152
|
+
__metadata("design:paramtypes", [String, String]),
|
|
153
|
+
__metadata("design:returntype", Promise)
|
|
154
|
+
], AdminTenantUserController.prototype, "reactivateMembership", null);
|
|
155
|
+
__decorate([
|
|
156
|
+
(0, common_1.Delete)(':id/memberships/:tenantId'),
|
|
157
|
+
(0, swagger_1.ApiOperation)({
|
|
158
|
+
summary: 'Remove a client user from one tenant.',
|
|
159
|
+
description: "Ends that membership and its roles and revokes the user's credentials bound to the tenant; the account and its other memberships stay. Requires at least the global admin role.",
|
|
160
|
+
}),
|
|
161
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
162
|
+
__param(1, (0, common_1.Param)('tenantId', common_1.ParseUUIDPipe)),
|
|
163
|
+
__metadata("design:type", Function),
|
|
164
|
+
__metadata("design:paramtypes", [String, String]),
|
|
165
|
+
__metadata("design:returntype", Promise)
|
|
166
|
+
], AdminTenantUserController.prototype, "removeMembership", null);
|
|
100
167
|
__decorate([
|
|
101
168
|
(0, common_1.Post)('list'),
|
|
102
169
|
(0, swagger_1.ApiOperation)({
|
|
103
170
|
summary: 'List, search and filter client (tenant-scoped) users.',
|
|
104
|
-
description: 'Scoped to tenant users
|
|
171
|
+
description: 'Scoped to tenant users, one row per membership, joined to its tenant so rows carry `membership_id` and `tenant_name` alongside `tenant_id`. A user in no tenant appears once with no tenant. Requires the global super admin role.',
|
|
105
172
|
}),
|
|
106
173
|
__param(0, (0, common_1.Body)()),
|
|
107
174
|
__metadata("design:type", Function),
|
|
@@ -112,7 +179,7 @@ __decorate([
|
|
|
112
179
|
(0, common_1.Delete)(':id'),
|
|
113
180
|
(0, swagger_1.ApiOperation)({
|
|
114
181
|
summary: 'Delete a client user.',
|
|
115
|
-
description: "Soft delete, with the user's sessions and refresh tokens revoked in the same transaction so tokens already issued stop working immediately. Requires the global admin role.",
|
|
182
|
+
description: "Soft delete of the user and every membership, with the user's sessions and refresh tokens revoked in the same transaction so tokens already issued stop working immediately. Requires the global admin role.",
|
|
116
183
|
}),
|
|
117
184
|
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
118
185
|
__metadata("design:type", Function),
|
|
@@ -124,6 +191,7 @@ exports.AdminTenantUserController = AdminTenantUserController = __decorate([
|
|
|
124
191
|
__metadata("design:paramtypes", [admin_access_service_1.AdminAccessService,
|
|
125
192
|
tenant_service_1.TenantService,
|
|
126
193
|
tenant_user_onboarded_mail_job_1.TenantUserOnboardedMailJob,
|
|
127
|
-
list_filter_service_1.ListFilterService
|
|
194
|
+
list_filter_service_1.ListFilterService,
|
|
195
|
+
tenant_membership_service_1.TenantMembershipService])
|
|
128
196
|
], AdminTenantUserController);
|
|
129
197
|
//# sourceMappingURL=admin.tenant.user.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.tenant.user.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,6CAA+C;AAC/C,iEAA6D;AAC7D,oEAA2D;AAC3D,2EAAsE;AACtE,mEAA6D;AAC7D,qEAA+D;AAC/D,uEAAiE;AACjE,oFAA8E;AAC9E,wFAAkF;AAClF,4FAAsF;AACtF,wFAAkF;AAClF,2EAAsE;AACtE,yEAAqE;AACrE,2GAAoG;AACpG,mFAA8E;
|
|
1
|
+
{"version":3,"file":"admin.tenant.user.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.client.membership.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.client.membership.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,sBAAsB;IAIjC,OAAO,EAAE,MAAM,CAAC;IAKhB,SAAS,EAAE,MAAM,CAAC;IAUlB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AddClientMembershipDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
+
class AddClientMembershipDto {
|
|
16
|
+
}
|
|
17
|
+
exports.AddClientMembershipDto = AddClientMembershipDto;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, swagger_1.ApiProperty)({ format: 'uuid' }),
|
|
20
|
+
(0, class_validator_1.IsUUID)(),
|
|
21
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], AddClientMembershipDto.prototype, "user_id", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, swagger_1.ApiProperty)({ format: 'uuid', description: 'Tenant the user joins.' }),
|
|
26
|
+
(0, class_validator_1.IsUUID)(),
|
|
27
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], AddClientMembershipDto.prototype, "tenant_id", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
32
|
+
type: [String],
|
|
33
|
+
format: 'uuid',
|
|
34
|
+
description: 'sys_roles uuids granted in that tenant.',
|
|
35
|
+
}),
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsArray)(),
|
|
38
|
+
(0, class_validator_1.IsUUID)('all', { each: true }),
|
|
39
|
+
__metadata("design:type", Array)
|
|
40
|
+
], AddClientMembershipDto.prototype, "role_ids", void 0);
|
|
41
|
+
//# sourceMappingURL=add.client.membership.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.client.membership.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.client.membership.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,6CAAmE;AAGnE,MAAa,sBAAsB;CAoBlC;AApBD,wDAoBC;AAhBC;IAHC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/B,IAAA,wBAAM,GAAE;IACR,IAAA,4BAAU,GAAE;;uDACG;AAKhB;IAHC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACtE,IAAA,wBAAM,GAAE;IACR,IAAA,4BAAU,GAAE;;yDACK;AAUlB;IARC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,yCAAyC;KACvD,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,wBAAM,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;wDACV"}
|
|
@@ -19,6 +19,7 @@ import { AdminUserListProcessor } from './libraries/admin.user.list.processor';
|
|
|
19
19
|
import { ApiKeyDataProcessor } from './libraries/api.key.data.processor';
|
|
20
20
|
import { ApiKeyListProcessor } from './libraries/api.key.list.processor';
|
|
21
21
|
import { BulkUserDataProcessor } from './libraries/bulk.user.data.processor';
|
|
22
|
+
import { ClientMembershipDataProcessor } from './libraries/client.membership.data.processor';
|
|
22
23
|
import { ClientUserDataProcessor } from './libraries/client.user.data.processor';
|
|
23
24
|
import { ClientUserDeleteProcessor } from './libraries/client.user.delete.processor';
|
|
24
25
|
import { ClientUserListProcessor } from './libraries/client.user.list.processor';
|
|
@@ -40,6 +41,7 @@ import { TenantDeleteProcessor } from './libraries/tenant.delete.processor';
|
|
|
40
41
|
import { TenantListProcessor } from './libraries/tenant.list.processor';
|
|
41
42
|
import { AddAdminUserDto } from './dtos/add.admin.user.dto';
|
|
42
43
|
import { AddApiKeyDto } from './dtos/add.api.key.dto';
|
|
44
|
+
import { AddClientMembershipDto } from './dtos/add.client.membership.dto';
|
|
43
45
|
import { AddPdfTemplateDto } from './dtos/add.pdf.template.dto';
|
|
44
46
|
import { ScheduleDto } from './dtos/add.scheduled.task.dto';
|
|
45
47
|
import { AddScopeDto } from './dtos/add.scope.dto';
|
|
@@ -50,8 +52,8 @@ import { BaseUserDto } from './dtos/base.user.dto';
|
|
|
50
52
|
export declare const es6Classes: {
|
|
51
53
|
controllers: (typeof AdminApiKeyController | typeof AdminEmailTemplateController | typeof AdminPdfTemplateController | typeof AdminRoleController | typeof AdminScheduledTaskController | typeof AdminScopeController | typeof AdminTenantController | typeof AdminSystemUserController | typeof AdminTenantUserController | typeof AdminUserController | typeof SystemRoleController)[];
|
|
52
54
|
services: readonly [typeof AdminAccessService, typeof SystemUserService, typeof TemplateService];
|
|
53
|
-
libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof EmailTemplateDataProcessor | typeof EmailTemplateListProcessor | typeof PdfTemplateDataProcessor | typeof PdfTemplateListProcessor | typeof AdminRoleListProcessor | typeof RoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof SystemUserDataProcessor | typeof SystemUserListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor | typeof SystemRoleDataProcessor)[];
|
|
54
|
-
dtos: (typeof AddApiKeyDto | typeof ApiKeyListDto | typeof AddPdfTemplateDto | typeof ScheduleDto | typeof AddScopeDto | typeof AddTenantDto | typeof BaseUserDto | typeof AddAdminUserDto | typeof AddSystemRoleDto)[];
|
|
55
|
+
libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof EmailTemplateDataProcessor | typeof EmailTemplateListProcessor | typeof PdfTemplateDataProcessor | typeof PdfTemplateListProcessor | typeof AdminRoleListProcessor | typeof RoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof SystemUserDataProcessor | typeof SystemUserListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof ClientMembershipDataProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor | typeof SystemRoleDataProcessor)[];
|
|
56
|
+
dtos: (typeof AddApiKeyDto | typeof ApiKeyListDto | typeof AddPdfTemplateDto | typeof ScheduleDto | typeof AddScopeDto | typeof AddTenantDto | typeof BaseUserDto | typeof AddClientMembershipDto | typeof AddAdminUserDto | typeof AddSystemRoleDto)[];
|
|
55
57
|
jobs: any[];
|
|
56
58
|
subscribers: any[];
|
|
57
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ const admin_user_list_processor_1 = require("./libraries/admin.user.list.process
|
|
|
22
22
|
const api_key_data_processor_1 = require("./libraries/api.key.data.processor");
|
|
23
23
|
const api_key_list_processor_1 = require("./libraries/api.key.list.processor");
|
|
24
24
|
const bulk_user_data_processor_1 = require("./libraries/bulk.user.data.processor");
|
|
25
|
+
const client_membership_data_processor_1 = require("./libraries/client.membership.data.processor");
|
|
25
26
|
const client_user_data_processor_1 = require("./libraries/client.user.data.processor");
|
|
26
27
|
const client_user_delete_processor_1 = require("./libraries/client.user.delete.processor");
|
|
27
28
|
const client_user_list_processor_1 = require("./libraries/client.user.list.processor");
|
|
@@ -44,6 +45,7 @@ const tenant_list_processor_1 = require("./libraries/tenant.list.processor");
|
|
|
44
45
|
const add_admin_user_dto_1 = require("./dtos/add.admin.user.dto");
|
|
45
46
|
const add_api_key_dto_1 = require("./dtos/add.api.key.dto");
|
|
46
47
|
const add_bulk_users_dto_1 = require("./dtos/add.bulk.users.dto");
|
|
48
|
+
const add_client_membership_dto_1 = require("./dtos/add.client.membership.dto");
|
|
47
49
|
const add_client_user_dto_1 = require("./dtos/add.client.user.dto");
|
|
48
50
|
const add_email_template_dto_1 = require("./dtos/add.email.template.dto");
|
|
49
51
|
const add_pdf_template_dto_1 = require("./dtos/add.pdf.template.dto");
|
|
@@ -86,6 +88,7 @@ exports.es6Classes = {
|
|
|
86
88
|
api_key_data_processor_1.ApiKeyDataProcessor,
|
|
87
89
|
api_key_list_processor_1.ApiKeyListProcessor,
|
|
88
90
|
bulk_user_data_processor_1.BulkUserDataProcessor,
|
|
91
|
+
client_membership_data_processor_1.ClientMembershipDataProcessor,
|
|
89
92
|
client_user_data_processor_1.ClientUserDataProcessor,
|
|
90
93
|
client_user_delete_processor_1.ClientUserDeleteProcessor,
|
|
91
94
|
client_user_list_processor_1.ClientUserListProcessor,
|
|
@@ -110,6 +113,7 @@ exports.es6Classes = {
|
|
|
110
113
|
add_admin_user_dto_1.AddAdminUserDto,
|
|
111
114
|
add_api_key_dto_1.AddApiKeyDto,
|
|
112
115
|
add_bulk_users_dto_1.BulkUserItemDto,
|
|
116
|
+
add_client_membership_dto_1.AddClientMembershipDto,
|
|
113
117
|
add_client_user_dto_1.AddClientUserDto,
|
|
114
118
|
add_email_template_dto_1.AddEmailTemplateDto,
|
|
115
119
|
add_pdf_template_dto_1.AddPdfTemplateDto,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAC/E,mGAA6F;AAC7F,+FAAyF;AACzF,+EAA0E;AAC1E,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6FAAuF;AACvF,6FAAuF;AACvF,+EAA0E;AAC1E,iFAA4E;AAC5E,0EAAqE;AACrE,wEAAmE;AACnE,kEAA8D;AAC9D,qFAA+E;AAC/E,yFAAmF;AACnF,qFAA+E;AAC/E,qFAA+E;AAC/E,+EAAyE;AACzE,+EAAyE;AACzE,mFAA6E;AAC7E,uFAAiF;AACjF,2FAAqF;AACrF,uFAAiF;AACjF,6FAAuF;AACvF,6FAAuF;AACvF,yFAAmF;AACnF,yFAAmF;AACnF,yEAAoE;AACpE,6FAAuF;AACvF,iGAA2F;AAC3F,6FAAuF;AACvF,2EAAsE;AACtE,2EAAsE;AACtE,uFAAiF;AACjF,uFAAiF;AACjF,uFAAiF;AACjF,6EAAwE;AACxE,iFAA4E;AAC5E,6EAAwE;AACxE,kEAA4D;AAC5D,4DAAsD;AACtD,kEAA4D;AAC5D,oEAA8D;AAC9D,0EAAoE;AACpE,sEAAgE;AAChE,0EAA4D;AAC5D,wDAAmD;AACnD,oEAA8D;AAC9D,oEAA8D;AAC9D,0DAAqD;AACrD,oEAA8D;AAC9D,8DAAwD;AACxD,sEAAgE;AAChE,4EAAsE;AACtE,wEAAkE;AAClE,wDAAmD;AACnD,wDAAmD;AACnD,4EAAsE;AACtE,0DAAqD;AACrD,sEAAgE;AAChE,4DAAuD;AAE1C,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE;QACX,gDAAqB;QACrB,8DAA4B;QAC5B,0DAA0B;QAC1B,2CAAmB;QACnB,8DAA4B;QAC5B,6CAAoB;QACpB,+CAAqB;QACrB,2CAAmB;QACnB,wDAAyB;QACzB,wDAAyB;QACzB,6CAAoB;KACrB;IACD,QAAQ,EAAE,CAAC,yCAAkB,EAAE,uCAAiB,EAAE,kCAAe,CAAU;IAC3E,SAAS,EAAE;QACT,kDAAsB;QACtB,sDAAwB;QACxB,kDAAsB;QACtB,kDAAsB;QACtB,4CAAmB;QACnB,4CAAmB;QACnB,gDAAqB;QACrB,oDAAuB;QACvB,wDAAyB;QACzB,oDAAuB;QACvB,0DAA0B;QAC1B,0DAA0B;QAC1B,sDAAwB;QACxB,sDAAwB;QACxB,uCAAiB;QACjB,0DAA0B;QAC1B,8DAA4B;QAC5B,0DAA0B;QAC1B,yCAAkB;QAClB,yCAAkB;QAClB,oDAAuB;QACvB,oDAAuB;QACvB,oDAAuB;QACvB,2CAAmB;QACnB,+CAAqB;QACrB,2CAAmB;KACpB;IACD,IAAI,EAAE;QACJ,oCAAe;QACf,8BAAY;QACZ,oCAAe;QACf,sCAAgB;QAChB,4CAAmB;QACnB,wCAAiB;QACjB,oCAAW;QACX,2BAAW;QACX,sCAAgB;QAChB,sCAAgB;QAChB,6BAAY;QACZ,sCAAgB;QAChB,gCAAa;QACb,2BAAW;QACX,wCAAiB;QACjB,8CAAoB;QACpB,0CAAkB;QAClB,2BAAW;QACX,8CAAoB;QACpB,6BAAY;QACZ,wCAAiB;QACjB,+BAAa;KACd;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAC/E,mGAA6F;AAC7F,+FAAyF;AACzF,+EAA0E;AAC1E,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6FAAuF;AACvF,6FAAuF;AACvF,+EAA0E;AAC1E,iFAA4E;AAC5E,0EAAqE;AACrE,wEAAmE;AACnE,kEAA8D;AAC9D,qFAA+E;AAC/E,yFAAmF;AACnF,qFAA+E;AAC/E,qFAA+E;AAC/E,+EAAyE;AACzE,+EAAyE;AACzE,mFAA6E;AAC7E,mGAA6F;AAC7F,uFAAiF;AACjF,2FAAqF;AACrF,uFAAiF;AACjF,6FAAuF;AACvF,6FAAuF;AACvF,yFAAmF;AACnF,yFAAmF;AACnF,yEAAoE;AACpE,6FAAuF;AACvF,iGAA2F;AAC3F,6FAAuF;AACvF,2EAAsE;AACtE,2EAAsE;AACtE,uFAAiF;AACjF,uFAAiF;AACjF,uFAAiF;AACjF,6EAAwE;AACxE,iFAA4E;AAC5E,6EAAwE;AACxE,kEAA4D;AAC5D,4DAAsD;AACtD,kEAA4D;AAC5D,gFAA0E;AAC1E,oEAA8D;AAC9D,0EAAoE;AACpE,sEAAgE;AAChE,0EAA4D;AAC5D,wDAAmD;AACnD,oEAA8D;AAC9D,oEAA8D;AAC9D,0DAAqD;AACrD,oEAA8D;AAC9D,8DAAwD;AACxD,sEAAgE;AAChE,4EAAsE;AACtE,wEAAkE;AAClE,wDAAmD;AACnD,wDAAmD;AACnD,4EAAsE;AACtE,0DAAqD;AACrD,sEAAgE;AAChE,4DAAuD;AAE1C,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE;QACX,gDAAqB;QACrB,8DAA4B;QAC5B,0DAA0B;QAC1B,2CAAmB;QACnB,8DAA4B;QAC5B,6CAAoB;QACpB,+CAAqB;QACrB,2CAAmB;QACnB,wDAAyB;QACzB,wDAAyB;QACzB,6CAAoB;KACrB;IACD,QAAQ,EAAE,CAAC,yCAAkB,EAAE,uCAAiB,EAAE,kCAAe,CAAU;IAC3E,SAAS,EAAE;QACT,kDAAsB;QACtB,sDAAwB;QACxB,kDAAsB;QACtB,kDAAsB;QACtB,4CAAmB;QACnB,4CAAmB;QACnB,gDAAqB;QACrB,gEAA6B;QAC7B,oDAAuB;QACvB,wDAAyB;QACzB,oDAAuB;QACvB,0DAA0B;QAC1B,0DAA0B;QAC1B,sDAAwB;QACxB,sDAAwB;QACxB,uCAAiB;QACjB,0DAA0B;QAC1B,8DAA4B;QAC5B,0DAA0B;QAC1B,yCAAkB;QAClB,yCAAkB;QAClB,oDAAuB;QACvB,oDAAuB;QACvB,oDAAuB;QACvB,2CAAmB;QACnB,+CAAqB;QACrB,2CAAmB;KACpB;IACD,IAAI,EAAE;QACJ,oCAAe;QACf,8BAAY;QACZ,oCAAe;QACf,kDAAsB;QACtB,sCAAgB;QAChB,4CAAmB;QACnB,wCAAiB;QACjB,oCAAW;QACX,2BAAW;QACX,sCAAgB;QAChB,sCAAgB;QAChB,6BAAY;QACZ,sCAAgB;QAChB,gCAAa;QACb,2BAAW;QACX,wCAAiB;QACjB,8CAAoB;QACpB,0CAAkB;QAClB,2BAAW;QACX,8CAAoB;QACpB,6BAAY;QACZ,wCAAiB;QACjB,+BAAa;KACd;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bulk.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,qBAAa,qBAAsB,SAAQ,iBAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEN,aAAa,EAAE,aAAa;IAInD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAMlD,QAAQ;YAYR,MAAM;IAsCpB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,oBAAoB;YAQd,eAAe;CAe9B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BulkUserDataProcessor = void 0;
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
4
|
const user_data_processor_1 = require("./user.data.processor");
|
|
6
5
|
const user_entity_1 = require("../../auth/entities/user.entity");
|
|
7
6
|
const user_type_enum_1 = require("../../auth/enums/user.type.enum");
|
|
7
|
+
const tenant_user_entity_1 = require("../../auth/entities/tenant.user.entity");
|
|
8
8
|
const auth_utilities_1 = require("../../auth/utilities/auth.utilities");
|
|
9
9
|
class BulkUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
10
10
|
constructor(tenantService) {
|
|
@@ -38,7 +38,13 @@ class BulkUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
|
38
38
|
contact: user.contact,
|
|
39
39
|
active: user.active ?? true,
|
|
40
40
|
})));
|
|
41
|
-
await user_entity_1.UserEntity.
|
|
41
|
+
await user_entity_1.UserEntity.getRepository().manager.transaction(async (trx) => {
|
|
42
|
+
await trx.save(entities);
|
|
43
|
+
await trx.save(entities.map((user) => trx.create(tenant_user_entity_1.TenantUserEntity, {
|
|
44
|
+
user_id: user.id,
|
|
45
|
+
tenant_id: body.tenant_id,
|
|
46
|
+
})));
|
|
47
|
+
});
|
|
42
48
|
return {
|
|
43
49
|
created: entities.length,
|
|
44
50
|
users: entities.map((user) => this.stripSecrets(user)),
|
|
@@ -65,10 +71,12 @@ class BulkUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
|
65
71
|
}
|
|
66
72
|
async flagTakenEmails() {
|
|
67
73
|
const emails = this.payload.users.map((user) => user.email);
|
|
68
|
-
const existing = await user_entity_1.UserEntity.find({
|
|
69
|
-
|
|
74
|
+
const existing = await user_entity_1.UserEntity.find({
|
|
75
|
+
where: { email: user_entity_1.UserEntity.emailMatching(emails) },
|
|
76
|
+
});
|
|
77
|
+
const taken = new Set(existing.map((user) => user.email.toLowerCase()));
|
|
70
78
|
this.payload.users.forEach((user, index) => {
|
|
71
|
-
if (taken.has(user.email)) {
|
|
79
|
+
if (taken.has(user.email.toLowerCase())) {
|
|
72
80
|
this.setColumnError(`users[${index}].email`, 'Email is already registered');
|
|
73
81
|
}
|
|
74
82
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"bulk.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CommonDataProcessor } from '../../common/libraries/common.data.processor';
|
|
2
|
+
import { TenantUserEntity } from '../../auth/entities/tenant.user.entity';
|
|
3
|
+
import { TenantService } from '../../tenant/services/tenant.service';
|
|
4
|
+
import { AddClientMembershipDto } from '../dtos/add.client.membership.dto';
|
|
5
|
+
export declare class ClientMembershipDataProcessor extends CommonDataProcessor {
|
|
6
|
+
private readonly tenantService;
|
|
7
|
+
protected payload: AddClientMembershipDto;
|
|
8
|
+
constructor(tenantService: TenantService);
|
|
9
|
+
process(payload: AddClientMembershipDto): Promise<TenantUserEntity>;
|
|
10
|
+
private validate;
|
|
11
|
+
private validateRoles;
|
|
12
|
+
private create;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=client.membership.data.processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.membership.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.membership.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAI1E,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAM3E,qBAAa,6BAA8B,SAAQ,mBAAmB;IAGxD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAC;gBAEb,aAAa,EAAE,aAAa;IAInD,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAM3D,QAAQ;YAgBR,aAAa;YAiBb,MAAM;CAWrB"}
|