@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
|
@@ -17,6 +17,8 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const swagger_1 = require("@nestjs/swagger");
|
|
18
18
|
const auth_service_1 = require("../services/auth.service");
|
|
19
19
|
const google_auth_service_1 = require("../services/google.auth.service");
|
|
20
|
+
const tenant_membership_service_1 = require("../services/tenant.membership.service");
|
|
21
|
+
const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
|
|
20
22
|
const login_dto_1 = require("../dtos/login.dto");
|
|
21
23
|
const google_login_dto_1 = require("../dtos/google.login.dto");
|
|
22
24
|
const register_dto_1 = require("../dtos/register.dto");
|
|
@@ -25,29 +27,38 @@ const change_password_dto_1 = require("../dtos/change.password.dto");
|
|
|
25
27
|
const register_user_data_processor_1 = require("../processors/register.user.data.processor");
|
|
26
28
|
const google_user_data_processor_1 = require("../processors/google.user.data.processor");
|
|
27
29
|
const change_password_data_processor_1 = require("../processors/change.password.data.processor");
|
|
28
|
-
const tenant_entity_1 = require("../../tenant/entities/tenant.entity");
|
|
29
30
|
let AuthController = class AuthController {
|
|
30
|
-
constructor(authService, googleAuthService) {
|
|
31
|
+
constructor(authService, googleAuthService, tenantMembershipService, tenantInvitationService) {
|
|
31
32
|
this.authService = authService;
|
|
32
33
|
this.googleAuthService = googleAuthService;
|
|
34
|
+
this.tenantMembershipService = tenantMembershipService;
|
|
35
|
+
this.tenantInvitationService = tenantInvitationService;
|
|
33
36
|
}
|
|
34
37
|
async me() {
|
|
35
|
-
const { user, roles } = await this.authService.
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
const { user, roles } = await this.authService.validateIdentity();
|
|
39
|
+
const [current, organizations, invitations] = await Promise.all([
|
|
40
|
+
this.tenantMembershipService.sessionOrganization(user),
|
|
41
|
+
this.tenantMembershipService.organizationsOf(user.id),
|
|
42
|
+
this.tenantInvitationService.pendingFor(user),
|
|
43
|
+
]);
|
|
44
|
+
return {
|
|
45
|
+
user,
|
|
46
|
+
roles,
|
|
47
|
+
organization: current?.name ?? null,
|
|
48
|
+
organizations,
|
|
49
|
+
invitations,
|
|
50
|
+
};
|
|
40
51
|
}
|
|
41
52
|
async login(dto, request) {
|
|
42
53
|
const user = await this.authService.validateCredentials(dto.email, dto.password);
|
|
43
54
|
this.authService.assertTenantLogin(user);
|
|
44
|
-
return this.
|
|
55
|
+
return this.signIn(user, request);
|
|
45
56
|
}
|
|
46
57
|
async googleLogin(dto, request) {
|
|
47
58
|
const tokenInfo = await this.googleAuthService.verifyIdToken(dto.id_token);
|
|
48
59
|
const user = await new google_user_data_processor_1.GoogleUserDataProcessor().process(tokenInfo);
|
|
49
60
|
this.authService.assertTenantLogin(user);
|
|
50
|
-
return this.
|
|
61
|
+
return this.signIn(user, request);
|
|
51
62
|
}
|
|
52
63
|
async register(dto, request) {
|
|
53
64
|
const user = await new register_user_data_processor_1.RegisterUserDataProcessor().process(dto);
|
|
@@ -61,10 +72,16 @@ let AuthController = class AuthController {
|
|
|
61
72
|
return { success: true };
|
|
62
73
|
}
|
|
63
74
|
async changePassword(dto) {
|
|
64
|
-
const { user } = await this.authService.
|
|
75
|
+
const { user } = await this.authService.validateIdentity();
|
|
65
76
|
await new change_password_data_processor_1.ChangePasswordDataProcessor(user.id).process(dto);
|
|
66
77
|
return { success: true };
|
|
67
78
|
}
|
|
79
|
+
async signIn(user, request) {
|
|
80
|
+
return this.authService.issueTokens(user, {
|
|
81
|
+
...this.contextOf(request),
|
|
82
|
+
tenant_id: await this.tenantMembershipService.landingTenant(user),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
68
85
|
contextOf(request) {
|
|
69
86
|
return {
|
|
70
87
|
ip_address: request.ip,
|
|
@@ -78,6 +95,7 @@ __decorate([
|
|
|
78
95
|
(0, swagger_1.ApiBearerAuth)(),
|
|
79
96
|
(0, swagger_1.ApiOperation)({
|
|
80
97
|
summary: 'Resolve the current authenticated user and roles.',
|
|
98
|
+
description: "`roles` and `organization` belong to the session's organization. `organizations` lists every one the user may switch to, and `invitations` the pending ones addressed to them. Reachable while `user.password_change_required` is set — every other endpoint refuses until the one-time password is changed.",
|
|
81
99
|
}),
|
|
82
100
|
__metadata("design:type", Function),
|
|
83
101
|
__metadata("design:paramtypes", []),
|
|
@@ -87,6 +105,7 @@ __decorate([
|
|
|
87
105
|
(0, common_1.Post)('login'),
|
|
88
106
|
(0, swagger_1.ApiOperation)({
|
|
89
107
|
summary: 'Authenticate and receive an access/refresh token pair.',
|
|
108
|
+
description: 'The session works in the organization last switched to, or the first the user belongs to; it has none when they belong to none.',
|
|
90
109
|
}),
|
|
91
110
|
__param(0, (0, common_1.Body)()),
|
|
92
111
|
__param(1, (0, common_1.Req)()),
|
|
@@ -141,7 +160,10 @@ __decorate([
|
|
|
141
160
|
(0, common_1.Post)('change-password'),
|
|
142
161
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
143
162
|
(0, swagger_1.ApiBearerAuth)(),
|
|
144
|
-
(0, swagger_1.ApiOperation)({
|
|
163
|
+
(0, swagger_1.ApiOperation)({
|
|
164
|
+
summary: `Change the authenticated user's password.`,
|
|
165
|
+
description: 'Also how a one-time password is replaced: send it as `current_password`. Clears `password_change_required`.',
|
|
166
|
+
}),
|
|
145
167
|
__param(0, (0, common_1.Body)()),
|
|
146
168
|
__metadata("design:type", Function),
|
|
147
169
|
__metadata("design:paramtypes", [change_password_dto_1.ChangePasswordDto]),
|
|
@@ -151,6 +173,8 @@ exports.AuthController = AuthController = __decorate([
|
|
|
151
173
|
(0, swagger_1.ApiTags)('Auth'),
|
|
152
174
|
(0, common_1.Controller)('api/auth'),
|
|
153
175
|
__metadata("design:paramtypes", [auth_service_1.AuthService,
|
|
154
|
-
google_auth_service_1.GoogleAuthService
|
|
176
|
+
google_auth_service_1.GoogleAuthService,
|
|
177
|
+
tenant_membership_service_1.TenantMembershipService,
|
|
178
|
+
tenant_invitation_service_1.TenantInvitationService])
|
|
155
179
|
], AuthController);
|
|
156
180
|
//# sourceMappingURL=auth.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAAuE;AAEvE,2DAAuD;AACvD,yEAAoE;
|
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/auth.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,11 @@ import type { Request } from 'express';
|
|
|
2
2
|
import { TenantEntity } from '../../tenant/entities/tenant.entity';
|
|
3
3
|
import { ImpersonationLoginDto } from '../dtos/impersonation.login.dto';
|
|
4
4
|
import { ImpersonationService } from '../services/impersonation.service';
|
|
5
|
-
import {
|
|
5
|
+
import { OrganizationSession } from '../types/auth.types';
|
|
6
6
|
export declare class ImpersonationController {
|
|
7
7
|
private readonly impersonationService;
|
|
8
8
|
constructor(impersonationService: ImpersonationService);
|
|
9
|
-
login(dto: ImpersonationLoginDto, request: Request): Promise<
|
|
9
|
+
login(dto: ImpersonationLoginDto, request: Request): Promise<OrganizationSession>;
|
|
10
10
|
tenants(): Promise<TenantEntity[]>;
|
|
11
11
|
private contextOf;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impersonation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/impersonation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"impersonation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/impersonation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,oBAAoB;IAQjE,KAAK,CACD,GAAG,EAAE,qBAAqB,EAC3B,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,mBAAmB,CAAC;IAWzB,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIxC,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CommonParamsDto } from '../../common/dtos/common.params.dto';
|
|
2
|
+
import { ListFilterService } from '../../common/services/list.filter.service';
|
|
3
|
+
import { InviteTenantUserDto } from '../dtos/invite.tenant.user.dto';
|
|
4
|
+
import { TenantInvitationListDto } from '../dtos/tenant.invitation.list.dto';
|
|
5
|
+
import { AuthService } from '../services/auth.service';
|
|
6
|
+
import { TenantInvitationService } from '../services/tenant.invitation.service';
|
|
7
|
+
export declare class TenantInvitationController {
|
|
8
|
+
private readonly authService;
|
|
9
|
+
private readonly tenantInvitationService;
|
|
10
|
+
private readonly listFilterService;
|
|
11
|
+
constructor(authService: AuthService, tenantInvitationService: TenantInvitationService, listFilterService: ListFilterService);
|
|
12
|
+
invite(dto: InviteTenantUserDto): Promise<import("../..").TenantInvitationEntity>;
|
|
13
|
+
roles(): Promise<import("../..").SystemRoleEntity[]>;
|
|
14
|
+
list(dto: TenantInvitationListDto): Promise<import("../..").CommonListResult>;
|
|
15
|
+
resend({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
|
|
16
|
+
revoke({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=tenant.invitation.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.invitation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.invitation.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,iBAAiB,EAAE,iBAAiB;IASjD,MAAM,CAAS,GAAG,EAAE,mBAAmB;IAgBvC,KAAK;IAUL,IAAI,CAAS,GAAG,EAAE,uBAAuB;IAgBzC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAgBvC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAU9C"}
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TenantInvitationController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const common_params_dto_1 = require("../../common/dtos/common.params.dto");
|
|
19
|
+
const list_filter_service_1 = require("../../common/services/list.filter.service");
|
|
20
|
+
const invite_tenant_user_dto_1 = require("../dtos/invite.tenant.user.dto");
|
|
21
|
+
const tenant_invitation_list_dto_1 = require("../dtos/tenant.invitation.list.dto");
|
|
22
|
+
const tenant_role_enum_1 = require("../enums/tenant.role.enum");
|
|
23
|
+
const tenant_invitation_data_processor_1 = require("../processors/tenant.invitation.data.processor");
|
|
24
|
+
const tenant_invitation_list_processor_1 = require("../processors/tenant.invitation.list.processor");
|
|
25
|
+
const auth_service_1 = require("../services/auth.service");
|
|
26
|
+
const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
|
|
27
|
+
let TenantInvitationController = class TenantInvitationController {
|
|
28
|
+
constructor(authService, tenantInvitationService, listFilterService) {
|
|
29
|
+
this.authService = authService;
|
|
30
|
+
this.tenantInvitationService = tenantInvitationService;
|
|
31
|
+
this.listFilterService = listFilterService;
|
|
32
|
+
}
|
|
33
|
+
async invite(dto) {
|
|
34
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
35
|
+
return new tenant_invitation_data_processor_1.TenantInvitationDataProcessor(user, this.tenantInvitationService).process(dto);
|
|
36
|
+
}
|
|
37
|
+
async roles() {
|
|
38
|
+
await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
39
|
+
return this.tenantInvitationService.grantableRoles();
|
|
40
|
+
}
|
|
41
|
+
async list(dto) {
|
|
42
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
43
|
+
return new tenant_invitation_list_processor_1.TenantInvitationListProcessor(this.listFilterService).process({
|
|
44
|
+
...dto,
|
|
45
|
+
tenant_id: user.organization_id,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async resend({ id }) {
|
|
49
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
50
|
+
return this.tenantInvitationService.resend(id, user.organization_id, user.id);
|
|
51
|
+
}
|
|
52
|
+
async revoke({ id }) {
|
|
53
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
54
|
+
return this.tenantInvitationService.revoke(id, user.organization_id, user.id);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.TenantInvitationController = TenantInvitationController;
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, common_1.Post)(),
|
|
60
|
+
(0, swagger_1.ApiOperation)({
|
|
61
|
+
summary: 'Invite an email into the session organization.',
|
|
62
|
+
description: 'The roles in `role_ids` are granted in this organization when the invitee accepts. An email with no account gets one — named `full_name`, with a random one-time password mailed to it that must be changed at first sign-in. Refused for an existing member, a system account, or an email with a pending invitation here. Requires the `global.admin` tenant role.',
|
|
63
|
+
}),
|
|
64
|
+
__param(0, (0, common_1.Body)()),
|
|
65
|
+
__metadata("design:type", Function),
|
|
66
|
+
__metadata("design:paramtypes", [invite_tenant_user_dto_1.InviteTenantUserDto]),
|
|
67
|
+
__metadata("design:returntype", Promise)
|
|
68
|
+
], TenantInvitationController.prototype, "invite", null);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, common_1.Get)('roles'),
|
|
71
|
+
(0, swagger_1.ApiOperation)({
|
|
72
|
+
summary: 'Roles an invitation may grant.',
|
|
73
|
+
description: 'The active `sys_roles` catalogue, for the invite form. Requires the `global.admin` tenant role.',
|
|
74
|
+
}),
|
|
75
|
+
__metadata("design:type", Function),
|
|
76
|
+
__metadata("design:paramtypes", []),
|
|
77
|
+
__metadata("design:returntype", Promise)
|
|
78
|
+
], TenantInvitationController.prototype, "roles", null);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, common_1.Post)('list'),
|
|
81
|
+
(0, swagger_1.ApiOperation)({
|
|
82
|
+
summary: "List the session organization's invitations.",
|
|
83
|
+
description: 'Requires the `global.admin` tenant role.',
|
|
84
|
+
}),
|
|
85
|
+
__param(0, (0, common_1.Body)()),
|
|
86
|
+
__metadata("design:type", Function),
|
|
87
|
+
__metadata("design:paramtypes", [tenant_invitation_list_dto_1.TenantInvitationListDto]),
|
|
88
|
+
__metadata("design:returntype", Promise)
|
|
89
|
+
], TenantInvitationController.prototype, "list", null);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, common_1.Post)(':id/resend'),
|
|
92
|
+
(0, swagger_1.ApiOperation)({
|
|
93
|
+
summary: 'Give a pending invitation a fresh expiry.',
|
|
94
|
+
description: 'Also revives one that expired unanswered. When the invitation created the account and nobody has signed in to it yet, a fresh one-time password is mailed. Requires the `global.admin` tenant role.',
|
|
95
|
+
}),
|
|
96
|
+
__param(0, (0, common_1.Param)()),
|
|
97
|
+
__metadata("design:type", Function),
|
|
98
|
+
__metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
|
|
99
|
+
__metadata("design:returntype", Promise)
|
|
100
|
+
], TenantInvitationController.prototype, "resend", null);
|
|
101
|
+
__decorate([
|
|
102
|
+
(0, common_1.Delete)(':id'),
|
|
103
|
+
(0, swagger_1.ApiOperation)({
|
|
104
|
+
summary: 'Revoke a pending invitation.',
|
|
105
|
+
description: 'Requires the `global.admin` tenant role.',
|
|
106
|
+
}),
|
|
107
|
+
__param(0, (0, common_1.Param)()),
|
|
108
|
+
__metadata("design:type", Function),
|
|
109
|
+
__metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
|
|
110
|
+
__metadata("design:returntype", Promise)
|
|
111
|
+
], TenantInvitationController.prototype, "revoke", null);
|
|
112
|
+
exports.TenantInvitationController = TenantInvitationController = __decorate([
|
|
113
|
+
(0, swagger_1.ApiTags)('Organization Invitations'),
|
|
114
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
115
|
+
(0, common_1.Controller)('api/organization/invitations'),
|
|
116
|
+
__metadata("design:paramtypes", [auth_service_1.AuthService,
|
|
117
|
+
tenant_invitation_service_1.TenantInvitationService,
|
|
118
|
+
list_filter_service_1.ListFilterService])
|
|
119
|
+
], TenantInvitationController);
|
|
120
|
+
//# sourceMappingURL=tenant.invitation.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.invitation.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.invitation.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ListFilterService } from '../../common/services/list.filter.service';
|
|
2
|
+
import { MemberRolesDto } from '../dtos/member.roles.dto';
|
|
3
|
+
import { TenantMemberListDto } from '../dtos/tenant.member.list.dto';
|
|
4
|
+
import { AuthService } from '../services/auth.service';
|
|
5
|
+
import { TenantMembershipService } from '../services/tenant.membership.service';
|
|
6
|
+
export declare class TenantMemberController {
|
|
7
|
+
private readonly authService;
|
|
8
|
+
private readonly tenantMembershipService;
|
|
9
|
+
private readonly listFilterService;
|
|
10
|
+
constructor(authService: AuthService, tenantMembershipService: TenantMembershipService, listFilterService: ListFilterService);
|
|
11
|
+
list(dto: TenantMemberListDto): Promise<import("../..").CommonListResult>;
|
|
12
|
+
setRoles(userId: string, dto: MemberRolesDto): Promise<import("../..").SystemRoleEntity[]>;
|
|
13
|
+
deactivate(userId: string): Promise<import("../..").TenantUserEntity>;
|
|
14
|
+
reactivate(userId: string): Promise<import("../..").TenantUserEntity>;
|
|
15
|
+
remove(userId: string): Promise<import("../..").DeleteResult>;
|
|
16
|
+
private refuseSelf;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=tenant.member.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.member.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.member.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,iBAAiB,EAAE,iBAAiB;IASjD,IAAI,CAAS,GAAG,EAAE,mBAAmB;IAgBrC,QAAQ,CACoB,MAAM,EAAE,MAAM,EACtC,GAAG,EAAE,cAAc;IAoBvB,UAAU,CAAiC,MAAM,EAAE,MAAM;IAoBzD,UAAU,CAAiC,MAAM,EAAE,MAAM;IAkBzD,MAAM,CAAiC,MAAM,EAAE,MAAM;IAa3D,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TenantMemberController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const list_filter_service_1 = require("../../common/services/list.filter.service");
|
|
19
|
+
const operation_exception_1 = require("../../global/exceptions/operation.exception");
|
|
20
|
+
const member_roles_dto_1 = require("../dtos/member.roles.dto");
|
|
21
|
+
const tenant_member_list_dto_1 = require("../dtos/tenant.member.list.dto");
|
|
22
|
+
const tenant_role_enum_1 = require("../enums/tenant.role.enum");
|
|
23
|
+
const tenant_member_list_processor_1 = require("../processors/tenant.member.list.processor");
|
|
24
|
+
const auth_service_1 = require("../services/auth.service");
|
|
25
|
+
const tenant_membership_service_1 = require("../services/tenant.membership.service");
|
|
26
|
+
let TenantMemberController = class TenantMemberController {
|
|
27
|
+
constructor(authService, tenantMembershipService, listFilterService) {
|
|
28
|
+
this.authService = authService;
|
|
29
|
+
this.tenantMembershipService = tenantMembershipService;
|
|
30
|
+
this.listFilterService = listFilterService;
|
|
31
|
+
}
|
|
32
|
+
async list(dto) {
|
|
33
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
34
|
+
return new tenant_member_list_processor_1.TenantMemberListProcessor(this.listFilterService).process({
|
|
35
|
+
...dto,
|
|
36
|
+
tenant_id: user.organization_id,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async setRoles(userId, dto) {
|
|
40
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
41
|
+
return this.tenantMembershipService.setMemberRoles(userId, user.organization_id, dto.role_ids, user.id);
|
|
42
|
+
}
|
|
43
|
+
async deactivate(userId) {
|
|
44
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
45
|
+
this.refuseSelf(userId, user.id);
|
|
46
|
+
return this.tenantMembershipService.setMemberActive(userId, user.organization_id, false, user.id);
|
|
47
|
+
}
|
|
48
|
+
async reactivate(userId) {
|
|
49
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
50
|
+
return this.tenantMembershipService.setMemberActive(userId, user.organization_id, true, user.id);
|
|
51
|
+
}
|
|
52
|
+
async remove(userId) {
|
|
53
|
+
const { user } = await this.authService.validateRole(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
54
|
+
this.refuseSelf(userId, user.id);
|
|
55
|
+
return this.tenantMembershipService.removeMember(userId, user.organization_id, user.id);
|
|
56
|
+
}
|
|
57
|
+
refuseSelf(userId, callerId) {
|
|
58
|
+
if (userId === callerId)
|
|
59
|
+
throw new operation_exception_1.OperationException('Act on your own membership by leaving the organization.');
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.TenantMemberController = TenantMemberController;
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, common_1.Post)('list'),
|
|
65
|
+
(0, swagger_1.ApiOperation)({
|
|
66
|
+
summary: "List the session organization's members.",
|
|
67
|
+
description: 'Each row carries the roles held in this organization. Requires the `global.admin` tenant role.',
|
|
68
|
+
}),
|
|
69
|
+
__param(0, (0, common_1.Body)()),
|
|
70
|
+
__metadata("design:type", Function),
|
|
71
|
+
__metadata("design:paramtypes", [tenant_member_list_dto_1.TenantMemberListDto]),
|
|
72
|
+
__metadata("design:returntype", Promise)
|
|
73
|
+
], TenantMemberController.prototype, "list", null);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, common_1.Post)(':userId/roles'),
|
|
76
|
+
(0, swagger_1.ApiOperation)({
|
|
77
|
+
summary: "Replace a member's roles in the session organization.",
|
|
78
|
+
description: '`role_ids` is the complete set; omitted roles are revoked. Refused when it would leave the organization without a `global.admin`. Requires the `global.admin` tenant role.',
|
|
79
|
+
}),
|
|
80
|
+
__param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
|
|
81
|
+
__param(1, (0, common_1.Body)()),
|
|
82
|
+
__metadata("design:type", Function),
|
|
83
|
+
__metadata("design:paramtypes", [String, member_roles_dto_1.MemberRolesDto]),
|
|
84
|
+
__metadata("design:returntype", Promise)
|
|
85
|
+
], TenantMemberController.prototype, "setRoles", null);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, common_1.Post)(':userId/deactivate'),
|
|
88
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
89
|
+
(0, swagger_1.ApiOperation)({
|
|
90
|
+
summary: "Deactivate a member's membership of the session organization.",
|
|
91
|
+
description: 'The member keeps their roles but can no longer work in this organization, and their credentials bound to it are revoked. Their account and other memberships are untouched. Not for the caller, and refused for the last active `global.admin`. Requires the `global.admin` tenant role.',
|
|
92
|
+
}),
|
|
93
|
+
__param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
|
|
94
|
+
__metadata("design:type", Function),
|
|
95
|
+
__metadata("design:paramtypes", [String]),
|
|
96
|
+
__metadata("design:returntype", Promise)
|
|
97
|
+
], TenantMemberController.prototype, "deactivate", null);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, common_1.Post)(':userId/reactivate'),
|
|
100
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
101
|
+
(0, swagger_1.ApiOperation)({
|
|
102
|
+
summary: "Reactivate a member's membership of the session organization.",
|
|
103
|
+
description: 'Restores it with the roles it kept. Requires the `global.admin` tenant role.',
|
|
104
|
+
}),
|
|
105
|
+
__param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
|
|
106
|
+
__metadata("design:type", Function),
|
|
107
|
+
__metadata("design:paramtypes", [String]),
|
|
108
|
+
__metadata("design:returntype", Promise)
|
|
109
|
+
], TenantMemberController.prototype, "reactivate", null);
|
|
110
|
+
__decorate([
|
|
111
|
+
(0, common_1.Delete)(':userId'),
|
|
112
|
+
(0, swagger_1.ApiOperation)({
|
|
113
|
+
summary: 'Remove a member from the session organization.',
|
|
114
|
+
description: 'Ends the membership and its roles and revokes their credentials bound to this organization; the account and its other memberships stay. Not for the caller — use `POST /auth/organizations/:id/leave`. Requires the `global.admin` tenant role.',
|
|
115
|
+
}),
|
|
116
|
+
__param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)),
|
|
117
|
+
__metadata("design:type", Function),
|
|
118
|
+
__metadata("design:paramtypes", [String]),
|
|
119
|
+
__metadata("design:returntype", Promise)
|
|
120
|
+
], TenantMemberController.prototype, "remove", null);
|
|
121
|
+
exports.TenantMemberController = TenantMemberController = __decorate([
|
|
122
|
+
(0, swagger_1.ApiTags)('Organization Members'),
|
|
123
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
124
|
+
(0, common_1.Controller)('api/organization/members'),
|
|
125
|
+
__metadata("design:paramtypes", [auth_service_1.AuthService,
|
|
126
|
+
tenant_membership_service_1.TenantMembershipService,
|
|
127
|
+
list_filter_service_1.ListFilterService])
|
|
128
|
+
], TenantMemberController);
|
|
129
|
+
//# sourceMappingURL=tenant.member.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.member.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/tenant.member.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommonParamsDto } from '../../common/dtos/common.params.dto';
|
|
2
|
+
import { AuthService } from '../services/auth.service';
|
|
3
|
+
import { TenantInvitationService } from '../services/tenant.invitation.service';
|
|
4
|
+
export declare class UserInvitationController {
|
|
5
|
+
private readonly authService;
|
|
6
|
+
private readonly tenantInvitationService;
|
|
7
|
+
constructor(authService: AuthService, tenantInvitationService: TenantInvitationService);
|
|
8
|
+
pending(): Promise<import("../..").PendingInvitation[]>;
|
|
9
|
+
accept({ id }: CommonParamsDto): Promise<import("../..").OrganizationSummary>;
|
|
10
|
+
decline({ id }: CommonParamsDto): Promise<import("../..").TenantInvitationEntity>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=user.invitation.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.invitation.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/user.invitation.controller.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,qBAGa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBADvB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB;IAS7D,OAAO;IAYP,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAOvC,OAAO,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAG/C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.UserInvitationController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const common_params_dto_1 = require("../../common/dtos/common.params.dto");
|
|
19
|
+
const auth_service_1 = require("../services/auth.service");
|
|
20
|
+
const tenant_invitation_service_1 = require("../services/tenant.invitation.service");
|
|
21
|
+
let UserInvitationController = class UserInvitationController {
|
|
22
|
+
constructor(authService, tenantInvitationService) {
|
|
23
|
+
this.authService = authService;
|
|
24
|
+
this.tenantInvitationService = tenantInvitationService;
|
|
25
|
+
}
|
|
26
|
+
async pending() {
|
|
27
|
+
const { user } = await this.authService.validateRole();
|
|
28
|
+
return this.tenantInvitationService.pendingFor(user);
|
|
29
|
+
}
|
|
30
|
+
async accept({ id }) {
|
|
31
|
+
return this.tenantInvitationService.accept(id);
|
|
32
|
+
}
|
|
33
|
+
async decline({ id }) {
|
|
34
|
+
return this.tenantInvitationService.decline(id);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.UserInvitationController = UserInvitationController;
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, common_1.Get)(),
|
|
40
|
+
(0, swagger_1.ApiOperation)({
|
|
41
|
+
summary: 'Pending invitations addressed to the caller.',
|
|
42
|
+
description: 'Also returned by `GET /auth/me`. Works on a tenantless session, so a user with no organization yet can see and accept one.',
|
|
43
|
+
}),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", []),
|
|
46
|
+
__metadata("design:returntype", Promise)
|
|
47
|
+
], UserInvitationController.prototype, "pending", null);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, common_1.Post)(':id/accept'),
|
|
50
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
51
|
+
(0, swagger_1.ApiOperation)({
|
|
52
|
+
summary: 'Accept an invitation and join its organization.',
|
|
53
|
+
description: 'Adds the membership and the invited roles, and returns the organization. The session stays where it is — call `POST /auth/organizations/switch` to work in the new one.',
|
|
54
|
+
}),
|
|
55
|
+
__param(0, (0, common_1.Param)()),
|
|
56
|
+
__metadata("design:type", Function),
|
|
57
|
+
__metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
|
|
58
|
+
__metadata("design:returntype", Promise)
|
|
59
|
+
], UserInvitationController.prototype, "accept", null);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, common_1.Post)(':id/decline'),
|
|
62
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
63
|
+
(0, swagger_1.ApiOperation)({ summary: 'Decline an invitation.' }),
|
|
64
|
+
__param(0, (0, common_1.Param)()),
|
|
65
|
+
__metadata("design:type", Function),
|
|
66
|
+
__metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
|
|
67
|
+
__metadata("design:returntype", Promise)
|
|
68
|
+
], UserInvitationController.prototype, "decline", null);
|
|
69
|
+
exports.UserInvitationController = UserInvitationController = __decorate([
|
|
70
|
+
(0, swagger_1.ApiTags)('Auth'),
|
|
71
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
72
|
+
(0, common_1.Controller)('api/auth/invitations'),
|
|
73
|
+
__metadata("design:paramtypes", [auth_service_1.AuthService,
|
|
74
|
+
tenant_invitation_service_1.TenantInvitationService])
|
|
75
|
+
], UserInvitationController);
|
|
76
|
+
//# sourceMappingURL=user.invitation.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.invitation.controller.js","sourceRoot":"","sources":["../../../src/auth/controllers/user.invitation.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,6CAAuE;AACvE,2EAAsE;AACtE,2DAAuD;AACvD,qFAAgF;AAMzE,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YACmB,WAAwB,EACxB,uBAAgD;QADhD,gBAAW,GAAX,WAAW,CAAa;QACxB,4BAAuB,GAAvB,uBAAuB,CAAyB;IAChE,CAAC;IAQE,AAAN,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IASK,AAAN,KAAK,CAAC,MAAM,CAAU,EAAE,EAAE,EAAmB;QAC3C,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAKK,AAAN,KAAK,CAAC,OAAO,CAAU,EAAE,EAAE,EAAmB;QAC5C,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAlCY,4DAAwB;AAY7B;IANL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,8CAA8C;QACvD,WAAW,EACT,4HAA4H;KAC/H,CAAC;;;;uDAID;AASK;IAPL,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,iDAAiD;QAC1D,WAAW,EACT,yKAAyK;KAC5K,CAAC;IACY,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;sDAE5C;AAKK;IAHL,IAAA,aAAI,EAAC,aAAa,CAAC;IACnB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACrC,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;uDAE7C;mCAjCU,wBAAwB;IAHpC,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,sBAAsB,CAAC;qCAGD,0BAAW;QACC,mDAAuB;GAHxD,wBAAwB,CAkCpC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import { CommonParamsDto } from '../../common/dtos/common.params.dto';
|
|
3
|
+
import { RefreshTokenDto } from '../dtos/refresh.token.dto';
|
|
4
|
+
import { SwitchOrganizationDto } from '../dtos/switch.organization.dto';
|
|
5
|
+
import { AuthService } from '../services/auth.service';
|
|
6
|
+
import { TenantMembershipService } from '../services/tenant.membership.service';
|
|
7
|
+
import { AuthTokenPair, OrganizationSession, OrganizationSummary } from '../types/auth.types';
|
|
8
|
+
export declare class UserOrganizationController {
|
|
9
|
+
private readonly authService;
|
|
10
|
+
private readonly tenantMembershipService;
|
|
11
|
+
constructor(authService: AuthService, tenantMembershipService: TenantMembershipService);
|
|
12
|
+
organizations(): Promise<OrganizationSummary[]>;
|
|
13
|
+
switch(dto: SwitchOrganizationDto, request: Request): Promise<OrganizationSession>;
|
|
14
|
+
leave({ id }: CommonParamsDto, dto: RefreshTokenDto, request: Request): Promise<AuthTokenPair>;
|
|
15
|
+
private contextOf;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=user.organization.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.organization.controller.d.ts","sourceRoot":"","sources":["../../../src/auth/controllers/user.organization.controller.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAG7B,qBAGa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBADvB,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB;IAK7D,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAY/C,MAAM,CACF,GAAG,EAAE,qBAAqB,EAC3B,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,mBAAmB,CAAC;IAczB,KAAK,CACA,EAAE,EAAE,EAAE,EAAE,eAAe,EACxB,GAAG,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,GACtB,OAAO,CAAC,aAAa,CAAC;IAIzB,OAAO,CAAC,SAAS;CAMlB"}
|