@kominal/common-nestjs 0.0.26 → 0.0.29

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.
@@ -0,0 +1,5 @@
1
+ import { UserContext } from '../helpers/context.decorator';
2
+ import { StoredFile } from '../models/stored-file.model';
3
+ export declare class FileController {
4
+ uploadFile(userContext: UserContext, file: any, tenantId: string): Promise<StoredFile>;
5
+ }
@@ -0,0 +1,60 @@
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.FileController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const platform_express_1 = require("@nestjs/platform-express");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ const uuid_1 = require("uuid");
20
+ const tenant_guard_1 = require("../guards/tenant.guard");
21
+ const context_decorator_1 = require("../helpers/context.decorator");
22
+ const custom_operation_name_decorator_1 = require("../helpers/custom-operation-name.decorator");
23
+ const s3_helper_1 = require("../helpers/s3.helper");
24
+ const stored_file_model_1 = require("../models/stored-file.model");
25
+ let FileController = class FileController {
26
+ async uploadFile(userContext, file, tenantId) {
27
+ return (0, s3_helper_1.storeFile)(tenantId, file.buffer, file.originalname, `${(0, uuid_1.v4)()}_${(0, uuid_1.v4)()}_${file.originalname}`, userContext.userId, userContext.email);
28
+ }
29
+ };
30
+ exports.FileController = FileController;
31
+ __decorate([
32
+ (0, common_1.Post)('upload'),
33
+ (0, swagger_1.ApiConsumes)('multipart/form-data'),
34
+ (0, swagger_1.ApiBody)({
35
+ schema: {
36
+ type: 'object',
37
+ properties: {
38
+ file: {
39
+ type: 'string',
40
+ format: 'binary',
41
+ },
42
+ },
43
+ },
44
+ }),
45
+ (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
46
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
47
+ (0, swagger_1.ApiCreatedResponse)({ type: stored_file_model_1.StoredFile }),
48
+ __param(0, (0, context_decorator_1.UserCtx)()),
49
+ __param(1, (0, common_1.UploadedFile)()),
50
+ __param(2, (0, common_1.Param)('tenantId')),
51
+ __metadata("design:type", Function),
52
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, Object, String]),
53
+ __metadata("design:returntype", Promise)
54
+ ], FileController.prototype, "uploadFile", null);
55
+ exports.FileController = FileController = __decorate([
56
+ (0, common_1.UseGuards)(tenant_guard_1.TenantGuard),
57
+ (0, swagger_1.ApiTags)('file-http'),
58
+ (0, common_1.Controller)('tenants/:tenantId/files')
59
+ ], FileController);
60
+ //# sourceMappingURL=file.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../src/controllers/file.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmG;AACnG,+DAA2D;AAC3D,6CAAoF;AACpF,+BAA0B;AAC1B,yDAAqD;AACrD,oEAAoE;AACpE,gGAAiF;AACjF,oDAAiD;AACjD,mEAAyD;AAKlD,IAAM,cAAc,GAApB,MAAM,cAAc;IAiBZ,AAAN,KAAK,CAAC,UAAU,CAAY,WAAwB,EAAkB,IAAS,EAAqB,QAAgB;QACzH,OAAO,IAAA,qBAAS,EAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,IAAA,SAAE,GAAE,IAAI,IAAA,SAAE,GAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5I,CAAC;CACF,CAAA;AApBY,wCAAc;AAiBZ;IAhBZ,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,qBAAW,EAAC,qBAAqB,CAAC;IAClC,IAAA,iBAAO,EAAC;QACP,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF,CAAC;IACD,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;IACxC,IAAA,qDAAmB,GAAE;IACrB,IAAA,4BAAkB,EAAC,EAAE,IAAI,EAAE,8BAAU,EAAE,CAAC;IAChB,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,qBAAY,GAAE,CAAA;IAAa,WAAA,IAAA,cAAK,EAAC,UAAU,CAAC,CAAA;;qCAA1D,+BAAW;;gDAE1D;yBAnBU,cAAc;IAH1B,IAAA,kBAAS,EAAC,0BAAW,CAAC;IACtB,IAAA,iBAAO,EAAC,WAAW,CAAC;IACpB,IAAA,mBAAU,EAAC,yBAAyB,CAAC;GACzB,cAAc,CAoB1B"}
@@ -0,0 +1,12 @@
1
+ import { Membership, MembershipCreateRequest, MembershipUpdateRequest } from '../entities/membership.entity';
2
+ import { UserContext } from '../helpers/context.decorator';
3
+ import { EntitiesPathParams, EntityPathParams, ListParams, ListResponse } from '../helpers/entity-service.helper';
4
+ import { MembershipService } from '../services/membership.service';
5
+ export declare class MembershipController {
6
+ private service;
7
+ constructor(service: MembershipService);
8
+ create(userContext: UserContext, entitiesPathParams: EntitiesPathParams, createRequest: MembershipCreateRequest): Promise<void>;
9
+ list(entitiesPathParams: EntitiesPathParams, listParams: ListParams): Promise<ListResponse<Membership>>;
10
+ update(userContext: UserContext, entityPathParams: EntityPathParams, body: MembershipUpdateRequest): Promise<void>;
11
+ delete(userContext: UserContext, entityPathParams: EntityPathParams): Promise<void>;
12
+ }
@@ -0,0 +1,88 @@
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.MembershipController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const membership_entity_1 = require("../entities/membership.entity");
19
+ const tenant_guard_1 = require("../guards/tenant.guard");
20
+ const context_decorator_1 = require("../helpers/context.decorator");
21
+ const custom_operation_name_decorator_1 = require("../helpers/custom-operation-name.decorator");
22
+ const entity_service_helper_1 = require("../helpers/entity-service.helper");
23
+ const membership_service_1 = require("../services/membership.service");
24
+ let MembershipController = class MembershipController {
25
+ constructor(service) {
26
+ this.service = service;
27
+ }
28
+ create(userContext, entitiesPathParams, createRequest) {
29
+ return this.service.create(userContext, entitiesPathParams, createRequest);
30
+ }
31
+ list(entitiesPathParams, listParams) {
32
+ return this.service.list(entitiesPathParams, listParams);
33
+ }
34
+ update(userContext, entityPathParams, body) {
35
+ return this.service.update(userContext, entityPathParams, body);
36
+ }
37
+ delete(userContext, entityPathParams) {
38
+ return this.service.delete(userContext, entityPathParams);
39
+ }
40
+ };
41
+ exports.MembershipController = MembershipController;
42
+ __decorate([
43
+ (0, common_1.Post)(),
44
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
45
+ __param(0, (0, context_decorator_1.UserCtx)()),
46
+ __param(1, (0, common_1.Param)()),
47
+ __param(2, (0, common_1.Body)()),
48
+ __metadata("design:type", Function),
49
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, entity_service_helper_1.EntitiesPathParams, membership_entity_1.MembershipCreateRequest]),
50
+ __metadata("design:returntype", Promise)
51
+ ], MembershipController.prototype, "create", null);
52
+ __decorate([
53
+ (0, common_1.Get)(),
54
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
55
+ (0, entity_service_helper_1.OpenApiPaginationResponse)(membership_entity_1.Membership),
56
+ __param(0, (0, common_1.Param)()),
57
+ __param(1, (0, common_1.Query)()),
58
+ __metadata("design:type", Function),
59
+ __metadata("design:paramtypes", [entity_service_helper_1.EntitiesPathParams, entity_service_helper_1.ListParams]),
60
+ __metadata("design:returntype", Promise)
61
+ ], MembershipController.prototype, "list", null);
62
+ __decorate([
63
+ (0, common_1.UseGuards)(tenant_guard_1.TenantGuard),
64
+ (0, common_1.Put)(':uuid'),
65
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
66
+ __param(0, (0, context_decorator_1.UserCtx)()),
67
+ __param(1, (0, common_1.Param)()),
68
+ __param(2, (0, common_1.Body)()),
69
+ __metadata("design:type", Function),
70
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, entity_service_helper_1.EntityPathParams, membership_entity_1.MembershipUpdateRequest]),
71
+ __metadata("design:returntype", Promise)
72
+ ], MembershipController.prototype, "update", null);
73
+ __decorate([
74
+ (0, common_1.Delete)(':uuid'),
75
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
76
+ __param(0, (0, context_decorator_1.UserCtx)()),
77
+ __param(1, (0, common_1.Param)()),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, entity_service_helper_1.EntityPathParams]),
80
+ __metadata("design:returntype", Promise)
81
+ ], MembershipController.prototype, "delete", null);
82
+ exports.MembershipController = MembershipController = __decorate([
83
+ (0, common_1.UseGuards)(tenant_guard_1.TenantGuard),
84
+ (0, swagger_1.ApiTags)('membership-http'),
85
+ (0, common_1.Controller)('tenants/:tenantId/memberships'),
86
+ __metadata("design:paramtypes", [membership_service_1.MembershipService])
87
+ ], MembershipController);
88
+ //# sourceMappingURL=membership.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.controller.js","sourceRoot":"","sources":["../../src/controllers/membership.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmG;AACnG,6CAA0C;AAC1C,qEAA6G;AAC7G,yDAAqD;AACrD,oEAAoE;AACpE,gGAAiF;AACjF,4EAA6I;AAC7I,uEAAmE;AAK5D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA2B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAIlD,MAAM,CAAY,WAAwB,EAAW,kBAAsC,EAAU,aAAsC;QAChJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAKM,IAAI,CAAU,kBAAsC,EAAW,UAAsB;QAC1F,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAKM,MAAM,CAAY,WAAwB,EAAW,gBAAkC,EAAU,IAA6B;QACnI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAIM,MAAM,CAAY,WAAwB,EAAW,gBAAkC;QAC5F,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AA5BY,oDAAoB;AAKxB;IAFN,IAAA,aAAI,GAAE;IACN,IAAA,qDAAmB,GAAE;IACP,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,cAAK,GAAE,CAAA;IAA0C,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAArE,+BAAW,EAA+B,0CAAkB,EAAyB,2CAAuB;;kDAEjJ;AAKM;IAHN,IAAA,YAAG,GAAE;IACL,IAAA,qDAAmB,GAAE;IACrB,IAAA,iDAAyB,EAAC,8BAAU,CAAC;IACzB,WAAA,IAAA,cAAK,GAAE,CAAA;IAA0C,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAA5B,0CAAkB,EAAuB,kCAAU;;gDAE3F;AAKM;IAHN,IAAA,kBAAS,EAAC,0BAAW,CAAC;IACtB,IAAA,YAAG,EAAC,OAAO,CAAC;IACZ,IAAA,qDAAmB,GAAE;IACP,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,cAAK,GAAE,CAAA;IAAsC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAjE,+BAAW,EAA6B,wCAAgB,EAAgB,2CAAuB;;kDAEpI;AAIM;IAFN,IAAA,eAAM,EAAC,OAAO,CAAC;IACf,IAAA,qDAAmB,GAAE;IACP,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAArB,+BAAW,EAA6B,wCAAgB;;kDAE7F;+BA3BU,oBAAoB;IAHhC,IAAA,kBAAS,EAAC,0BAAW,CAAC;IACtB,IAAA,iBAAO,EAAC,iBAAiB,CAAC;IAC1B,IAAA,mBAAU,EAAC,+BAA+B,CAAC;qCAEN,sCAAiB;GAD1C,oBAAoB,CA4BhC"}
@@ -0,0 +1,14 @@
1
+ import { Tenant, TenantCreateRequest, TenantUpdateRequest } from '../entities/tenant.entity';
2
+ import { UserContext } from '../helpers/context.decorator';
3
+ import { KominalCommonOptions } from '../kominal-common.module';
4
+ import { TenantService } from '../services/tenant.service';
5
+ export declare class TenantController {
6
+ private tenantService;
7
+ private kominalCommonOptions;
8
+ constructor(tenantService: TenantService, kominalCommonOptions: KominalCommonOptions);
9
+ createForUser(userContext: UserContext, body: TenantCreateRequest): Promise<Tenant>;
10
+ read(tenantId: string): Promise<Tenant>;
11
+ list(userContext: UserContext, select: string): Promise<Tenant[]>;
12
+ listForUser(userContext: UserContext): Promise<Tenant[]>;
13
+ tenantId(userContext: UserContext, tenantId: string, body: TenantUpdateRequest): Promise<void>;
14
+ }
@@ -0,0 +1,109 @@
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.TenantController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const tenant_entity_1 = require("../entities/tenant.entity");
19
+ const tenant_guard_1 = require("../guards/tenant.guard");
20
+ const user_guard_1 = require("../guards/user.guard");
21
+ const context_decorator_1 = require("../helpers/context.decorator");
22
+ const custom_operation_name_decorator_1 = require("../helpers/custom-operation-name.decorator");
23
+ const kominal_common_module_1 = require("../kominal-common.module");
24
+ const tenant_service_1 = require("../services/tenant.service");
25
+ let TenantController = class TenantController {
26
+ constructor(tenantService, kominalCommonOptions) {
27
+ this.tenantService = tenantService;
28
+ this.kominalCommonOptions = kominalCommonOptions;
29
+ }
30
+ createForUser(userContext, body) {
31
+ if (this.kominalCommonOptions.tenantCreation === 'ADMIN' && !userContext.admin) {
32
+ throw new Error('Tenant creation is only allowed for admin users.');
33
+ }
34
+ return this.tenantService.createForUser(userContext, body);
35
+ }
36
+ read(tenantId) {
37
+ return this.tenantService.read({ uuid: tenantId });
38
+ }
39
+ list(userContext, select) {
40
+ return this.tenantService.listForUser(userContext, select);
41
+ }
42
+ listForUser(userContext) {
43
+ return this.tenantService.listForUser(userContext);
44
+ }
45
+ tenantId(userContext, tenantId, body) {
46
+ return this.tenantService.updateForUser(userContext, tenantId, body);
47
+ }
48
+ };
49
+ exports.TenantController = TenantController;
50
+ __decorate([
51
+ (0, common_1.UseGuards)(user_guard_1.UserGuard),
52
+ (0, common_1.Post)(),
53
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
54
+ (0, swagger_1.ApiCreatedResponse)({ type: tenant_entity_1.Tenant }),
55
+ __param(0, (0, context_decorator_1.UserCtx)()),
56
+ __param(1, (0, common_1.Body)()),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, tenant_entity_1.TenantCreateRequest]),
59
+ __metadata("design:returntype", Promise)
60
+ ], TenantController.prototype, "createForUser", null);
61
+ __decorate([
62
+ (0, common_1.UseGuards)(tenant_guard_1.TenantGuard),
63
+ (0, common_1.Get)(':tenantId'),
64
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
65
+ (0, swagger_1.ApiOkResponse)({ type: tenant_entity_1.Tenant }),
66
+ __param(0, (0, common_1.Param)('tenantId')),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", [String]),
69
+ __metadata("design:returntype", Promise)
70
+ ], TenantController.prototype, "read", null);
71
+ __decorate([
72
+ (0, common_1.UseGuards)(user_guard_1.UserGuard),
73
+ (0, common_1.Get)(),
74
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
75
+ (0, swagger_1.ApiOkResponse)({ type: tenant_entity_1.Tenant, isArray: true }),
76
+ __param(0, (0, context_decorator_1.UserCtx)()),
77
+ __param(1, (0, common_1.Query)('select')),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, String]),
80
+ __metadata("design:returntype", Promise)
81
+ ], TenantController.prototype, "list", null);
82
+ __decorate([
83
+ (0, common_1.UseGuards)(user_guard_1.UserGuard),
84
+ (0, common_1.Get)(),
85
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
86
+ (0, swagger_1.ApiOkResponse)({ type: tenant_entity_1.Tenant, isArray: true }),
87
+ __param(0, (0, context_decorator_1.UserCtx)()),
88
+ __metadata("design:type", Function),
89
+ __metadata("design:paramtypes", [context_decorator_1.UserContext]),
90
+ __metadata("design:returntype", Promise)
91
+ ], TenantController.prototype, "listForUser", null);
92
+ __decorate([
93
+ (0, common_1.UseGuards)(tenant_guard_1.TenantGuard),
94
+ (0, common_1.Put)(':tenantId'),
95
+ (0, custom_operation_name_decorator_1.CustomOperationName)(),
96
+ __param(0, (0, context_decorator_1.UserCtx)()),
97
+ __param(1, (0, common_1.Param)('tenantId')),
98
+ __param(2, (0, common_1.Body)()),
99
+ __metadata("design:type", Function),
100
+ __metadata("design:paramtypes", [context_decorator_1.UserContext, String, tenant_entity_1.TenantUpdateRequest]),
101
+ __metadata("design:returntype", Promise)
102
+ ], TenantController.prototype, "tenantId", null);
103
+ exports.TenantController = TenantController = __decorate([
104
+ (0, swagger_1.ApiTags)('tenant-http'),
105
+ (0, common_1.Controller)('tenants'),
106
+ __param(1, (0, common_1.Inject)(kominal_common_module_1.KOMINAL_COMMON_OPTIONS)),
107
+ __metadata("design:paramtypes", [tenant_service_1.TenantService, Object])
108
+ ], TenantController);
109
+ //# sourceMappingURL=tenant.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.controller.js","sourceRoot":"","sources":["../../src/controllers/tenant.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmG;AACnG,6CAA6E;AAC7E,6DAA6F;AAC7F,yDAAqD;AACrD,qDAAiD;AACjD,oEAAoE;AACpE,gGAAiF;AACjF,oEAAwF;AACxF,+DAA2D;AAIpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACU,aAA4B,EACI,oBAA0C;QAD1E,kBAAa,GAAb,aAAa,CAAe;QACI,yBAAoB,GAApB,oBAAoB,CAAsB;IACjF,CAAC;IAMG,aAAa,CAAY,WAAwB,EAAU,IAAyB;QACzF,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAMM,IAAI,CAAoB,QAAgB;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAMM,IAAI,CAAY,WAAwB,EAAmB,MAAc;QAC9E,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAMM,WAAW,CAAY,WAAwB;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAKM,QAAQ,CAAY,WAAwB,EAAqB,QAAgB,EAAU,IAAyB;QACzH,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AAhDY,4CAAgB;AAUpB;IAJN,IAAA,kBAAS,EAAC,sBAAS,CAAC;IACpB,IAAA,aAAI,GAAE;IACN,IAAA,qDAAmB,GAAE;IACrB,IAAA,4BAAkB,EAAC,EAAE,IAAI,EAAE,sBAAM,EAAE,CAAC;IACf,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAApB,+BAAW,EAAgB,mCAAmB;;qDAM1F;AAMM;IAJN,IAAA,kBAAS,EAAC,0BAAW,CAAC;IACtB,IAAA,YAAG,EAAC,WAAW,CAAC;IAChB,IAAA,qDAAmB,GAAE;IACrB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,sBAAM,EAAE,CAAC;IACnB,WAAA,IAAA,cAAK,EAAC,UAAU,CAAC,CAAA;;;;4CAE7B;AAMM;IAJN,IAAA,kBAAS,EAAC,sBAAS,CAAC;IACpB,IAAA,YAAG,GAAE;IACL,IAAA,qDAAmB,GAAE;IACrB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,sBAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClC,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;;qCAA7B,+BAAW;;4CAE9C;AAMM;IAJN,IAAA,kBAAS,EAAC,sBAAS,CAAC;IACpB,IAAA,YAAG,GAAE;IACL,IAAA,qDAAmB,GAAE;IACrB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,sBAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,WAAA,IAAA,2BAAO,GAAE,CAAA;;qCAAc,+BAAW;;mDAErD;AAKM;IAHN,IAAA,kBAAS,EAAC,0BAAW,CAAC;IACtB,IAAA,YAAG,EAAC,WAAW,CAAC;IAChB,IAAA,qDAAmB,GAAE;IACL,WAAA,IAAA,2BAAO,GAAE,CAAA;IAA4B,WAAA,IAAA,cAAK,EAAC,UAAU,CAAC,CAAA;IAAoB,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAzD,+BAAW,UAAqD,mCAAmB;;gDAE1H;2BA/CU,gBAAgB;IAF5B,IAAA,iBAAO,EAAC,aAAa,CAAC;IACtB,IAAA,mBAAU,EAAC,SAAS,CAAC;IAIjB,WAAA,IAAA,eAAM,EAAC,8CAAsB,CAAC,CAAA;qCADR,8BAAa;GAF3B,gBAAgB,CAgD5B"}
@@ -26,6 +26,7 @@ export declare const MembershipSchema: import("mongoose").Schema<Membership, Mod
26
26
  }>;
27
27
  export declare class MembershipCreateRequest {
28
28
  email: string;
29
+ permissions: string[];
29
30
  }
30
31
  declare const MembershipPopulated_base: import("@nestjs/common").Type<Partial<Membership>>;
31
32
  export declare class MembershipPopulated extends MembershipPopulated_base {
@@ -1 +1 @@
1
- {"version":3,"file":"membership.entity.js","sourceRoot":"","sources":["../../src/entities/membership.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+D;AAC/D,6CAA2D;AAC3D,qDAA4D;AAE5D,yDAAsD;AAGtD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;AACvB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AACY,QAAA,yBAAyB,GAAG,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAGxG,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,2BAAY;CAM3C,CAAA;AANY,gCAAU;AACqB;IAAzC,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,0BAAQ,GAAE;;0CAAuB;AACf;IAAzC,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,0BAAQ,GAAE;;yCAAsB;AACW;IAAlE,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,yBAAO,GAAE;IAAE,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;+CAA8B;AACtB;IAAlE,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,yBAAO,GAAE;IAAE,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yCAAwB;AACf;IAAnE,IAAA,eAAI,GAAE;IAAE,iCAAyB;IAAE,IAAA,wBAAM,EAAC,gBAAgB,CAAC;;0CAAiC;qBALlF,UAAU;IADtB,IAAA,iBAAM,GAAE;GACI,UAAU,CAMtB;AAIY,QAAA,gBAAgB,GAAG,wBAAa,CAAC,cAAc,CAAC,UAAU,CAAC;KACrE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;KACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACjD,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvD,MAAa,uBAAuB;CAEnC;AAFD,0DAEC;AAED,MAAa,mBAAoB,SAAQ,IAAA,qBAAW,EAAC,UAAU,CAAC;CAE/D;AAFD,kDAEC;AAED,MAAa,uBAAuB;CAEnC;AAFD,0DAEC;AAED,MAAa,oBAAoB;CAEhC;AAFD,oDAEC"}
1
+ {"version":3,"file":"membership.entity.js","sourceRoot":"","sources":["../../src/entities/membership.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+D;AAC/D,6CAA2D;AAC3D,qDAA4D;AAE5D,yDAAsD;AAGtD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;AACvB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AACY,QAAA,yBAAyB,GAAG,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAGxG,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,2BAAY;CAM3C,CAAA;AANY,gCAAU;AACqB;IAAzC,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,0BAAQ,GAAE;;0CAAuB;AACf;IAAzC,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,0BAAQ,GAAE;;yCAAsB;AACW;IAAlE,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,yBAAO,GAAE;IAAE,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;+CAA8B;AACtB;IAAlE,IAAA,eAAI,GAAE;IAAE,IAAA,qBAAW,GAAE;IAAE,IAAA,yBAAO,GAAE;IAAE,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yCAAwB;AACf;IAAnE,IAAA,eAAI,GAAE;IAAE,iCAAyB;IAAE,IAAA,wBAAM,EAAC,gBAAgB,CAAC;;0CAAiC;qBALlF,UAAU;IADtB,IAAA,iBAAM,GAAE;GACI,UAAU,CAMtB;AAIY,QAAA,gBAAgB,GAAG,wBAAa,CAAC,cAAc,CAAC,UAAU,CAAC;KACrE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;KACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACjD,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvD,MAAa,uBAAuB;CAGnC;AAHD,0DAGC;AAED,MAAa,mBAAoB,SAAQ,IAAA,qBAAW,EAAC,UAAU,CAAC;CAE/D;AAFD,kDAEC;AAED,MAAa,uBAAuB;CAEnC;AAFD,0DAEC;AAED,MAAa,oBAAoB;CAEhC;AAFD,oDAEC"}
@@ -6,6 +6,7 @@ const common_1 = require("@nestjs/common");
6
6
  const core_1 = require("@nestjs/core");
7
7
  const swagger_1 = require("@nestjs/swagger");
8
8
  const testing_1 = require("@nestjs/testing");
9
+ const body_parser_1 = require("body-parser");
9
10
  const fs_1 = require("fs");
10
11
  const process_1 = require("process");
11
12
  const exception_filter_1 = require("../helpers/exception-filter");
@@ -45,6 +46,9 @@ async function bootstrap(module, bodyParser = true) {
45
46
  app.useGlobalPipes(new common_1.ValidationPipe());
46
47
  app.useGlobalFilters(new exception_filter_1.CommonExceptionFilter());
47
48
  app.enableCors();
49
+ if (bodyParser) {
50
+ app.use((0, body_parser_1.json)({ limit: '8mb' }));
51
+ }
48
52
  swagger_1.SwaggerModule.setup('api', app, getOpenAPIObject(app));
49
53
  await app.listen(3000);
50
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/executables/bootstrap.ts"],"names":[],"mappings":";;AAuBA,0CAKC;AAED,8BAqBC;AAnDD,2CAAkE;AAClE,uCAAsD;AACtD,6CAAgF;AAChF,6CAAsD;AACtD,2BAAmC;AACnC,qCAA+B;AAC/B,kEAAoE;AACpE,8CAAiD;AAEjD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,EAAE;IAC5C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,GAAqB;IAC7C,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;SACjC,QAAQ,CAAC,MAAM,CAAC;SAChB,SAAS,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC9C,aAAa,EAAE;SACf,KAAK,EAAE,CAAC;IAEX,OAAO,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,eAAe,CAAC,MAAW;IACzC,MAAM,SAAS,GAAG,IAAI,gBAAS,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAQ,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAQ,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAU,EAAE,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;AAC9G,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAW,EAAE,UAAU,GAAG,IAAI;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;aACtG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACrB,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAE9C,IAAA,kBAAa,EAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAA,cAAI,EAAC,CAAC,CAAC,CAAC;IACV,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3C,MAAM,EAAE,IAAI,qBAAY,EAAE;YAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YACrB,UAAU;SACX,CAAC,CAAC;QACH,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAc,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wCAAqB,EAAE,CAAC,CAAC;QAClD,GAAG,CAAC,UAAU,EAAE,CAAC;QACjB,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/executables/bootstrap.ts"],"names":[],"mappings":";;AAwBA,0CAKC;AAED,8BAwBC;AAvDD,2CAAkE;AAClE,uCAAsD;AACtD,6CAAgF;AAChF,6CAAsD;AACtD,6CAAmC;AACnC,2BAAmC;AACnC,qCAA+B;AAC/B,kEAAoE;AACpE,8CAAiD;AAEjD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,EAAE;IAC5C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,GAAqB;IAC7C,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;SACjC,QAAQ,CAAC,MAAM,CAAC;SAChB,SAAS,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC9C,aAAa,EAAE;SACf,KAAK,EAAE,CAAC;IAEX,OAAO,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,eAAe,CAAC,MAAW;IACzC,MAAM,SAAS,GAAG,IAAI,gBAAS,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAQ,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAQ,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAU,EAAE,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;AAC9G,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAW,EAAE,UAAU,GAAG,IAAI;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;aACtG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACrB,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAE9C,IAAA,kBAAa,EAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAA,cAAI,EAAC,CAAC,CAAC,CAAC;IACV,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3C,MAAM,EAAE,IAAI,qBAAY,EAAE;YAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YACrB,UAAU;SACX,CAAC,CAAC;QACH,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAc,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC,gBAAgB,CAAC,IAAI,wCAAqB,EAAE,CAAC,CAAC;QAClD,GAAG,CAAC,UAAU,EAAE,CAAC;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,GAAG,CAAC,IAAA,kBAAI,EAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { StoredFile } from '../models/stored-file.model';
2
+ export declare function storeFile(tenantId: string, buffer: Buffer, originalname: string, fileName: string, userId: string, email: string): Promise<StoredFile>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.storeFile = storeFile;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ async function storeFile(tenantId, buffer, originalname, fileName, userId, email) {
6
+ const s3Client = new client_s3_1.S3Client({
7
+ endpoint: process.env.S3_ENDPOINT,
8
+ forcePathStyle: true,
9
+ region: 'eu',
10
+ credentials: {
11
+ accessKeyId: process.env.S3_ACCESS_KEY || '',
12
+ secretAccessKey: process.env.S3_SECRET_KEY || '',
13
+ },
14
+ });
15
+ const params = {
16
+ Bucket: process.env.S3_BUCKET || '',
17
+ Key: `uploads/${tenantId}/${fileName}`,
18
+ Body: buffer,
19
+ ACL: 'public-read',
20
+ Metadata: {
21
+ tenantId,
22
+ userId,
23
+ email,
24
+ originalname,
25
+ },
26
+ };
27
+ await s3Client.send(new client_s3_1.PutObjectCommand(params));
28
+ return { name: originalname, location: `${process.env.S3_ENDPOINT}/${process.env.S3_BUCKET}/${params.Key}`, key: params.Key || '' };
29
+ }
30
+ //# sourceMappingURL=s3.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.helper.js","sourceRoot":"","sources":["../../src/helpers/s3.helper.ts"],"names":[],"mappings":";;AAGA,8BA2BC;AA9BD,kDAAuF;AAGhF,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAE,YAAoB,EAAE,QAAgB,EAAE,MAAc,EAAE,KAAa;IACrI,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACjC,cAAc,EAAE,IAAI;QACpB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE;YACX,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;YAC5C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;SACjD;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAA0B;QACpC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;QACnC,GAAG,EAAE,WAAW,QAAQ,IAAI,QAAQ,EAAE;QACtC,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE;YACR,QAAQ;YACR,MAAM;YACN,KAAK;YACL,YAAY;SACb;KACF,CAAC;IAEF,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,4BAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAElD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;AACtI,CAAC"}
@@ -1,4 +1,8 @@
1
- import { ModelDefinition } from '@nestjs/mongoose';
2
- export declare const kominalCommonModelDefinitions: ModelDefinition[];
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare const KOMINAL_COMMON_OPTIONS = "KOMINAL_COMMON_OPTIONS";
3
+ export interface KominalCommonOptions {
4
+ tenantCreation: 'USER' | 'ADMIN';
5
+ }
3
6
  export declare class KominalCommonModule {
7
+ static forRoot(options: KominalCommonOptions): DynamicModule;
4
8
  }
@@ -5,11 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var KominalCommonModule_1;
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.KominalCommonModule = exports.kominalCommonModelDefinitions = void 0;
10
+ exports.KominalCommonModule = exports.KOMINAL_COMMON_OPTIONS = void 0;
10
11
  const common_1 = require("@nestjs/common");
11
12
  const mongoose_1 = require("@nestjs/mongoose");
13
+ const file_controller_1 = require("./controllers/file.controller");
12
14
  const health_controller_1 = require("./controllers/health.controller");
15
+ const membership_controller_1 = require("./controllers/membership.controller");
16
+ const tenant_controller_1 = require("./controllers/tenant.controller");
13
17
  const access_token_entity_1 = require("./entities/access-token.entity");
14
18
  const membership_entity_1 = require("./entities/membership.entity");
15
19
  const tenant_entity_1 = require("./entities/tenant.entity");
@@ -21,21 +25,46 @@ const user_guard_1 = require("./guards/user.guard");
21
25
  const auth_service_1 = require("./services/auth.service");
22
26
  const file_service_1 = require("./services/file.service");
23
27
  const health_service_1 = require("./services/health.service");
24
- exports.kominalCommonModelDefinitions = [
28
+ const membership_service_1 = require("./services/membership.service");
29
+ const tenant_service_1 = require("./services/tenant.service");
30
+ exports.KOMINAL_COMMON_OPTIONS = 'KOMINAL_COMMON_OPTIONS';
31
+ const kominalCommonModelDefinitions = [
25
32
  { name: access_token_entity_1.AccessToken.name, schema: access_token_entity_1.AccessTokenSchema },
26
33
  { name: membership_entity_1.Membership.name, schema: membership_entity_1.MembershipSchema },
27
34
  { name: tenant_entity_1.Tenant.name, schema: tenant_entity_1.TenantSchema },
28
35
  { name: user_entity_1.User.name, schema: user_entity_1.UserSchema },
29
36
  ];
30
- let KominalCommonModule = class KominalCommonModule {
37
+ let KominalCommonModule = KominalCommonModule_1 = class KominalCommonModule {
38
+ static forRoot(options) {
39
+ return {
40
+ module: KominalCommonModule_1,
41
+ providers: [
42
+ {
43
+ provide: exports.KOMINAL_COMMON_OPTIONS,
44
+ useValue: options,
45
+ },
46
+ ],
47
+ };
48
+ }
31
49
  };
32
50
  exports.KominalCommonModule = KominalCommonModule;
33
- exports.KominalCommonModule = KominalCommonModule = __decorate([
51
+ exports.KominalCommonModule = KominalCommonModule = KominalCommonModule_1 = __decorate([
34
52
  (0, common_1.Module)({
35
- imports: [mongoose_1.MongooseModule.forFeature(exports.kominalCommonModelDefinitions)],
36
- controllers: [health_controller_1.HealthController],
37
- providers: [auth_service_1.AuthService, file_service_1.FileService, health_service_1.HealthService, admin_guard_1.AdminGuard, tenant_guard_1.TenantGuard, user_guard_1.UserGuard, system_guard_1.SystemGuard],
38
- exports: [auth_service_1.AuthService, file_service_1.FileService, health_service_1.HealthService, admin_guard_1.AdminGuard, tenant_guard_1.TenantGuard, user_guard_1.UserGuard, system_guard_1.SystemGuard, mongoose_1.MongooseModule.forFeature(exports.kominalCommonModelDefinitions)],
53
+ imports: [mongoose_1.MongooseModule.forFeature(kominalCommonModelDefinitions)],
54
+ controllers: [file_controller_1.FileController, health_controller_1.HealthController, membership_controller_1.MembershipController, tenant_controller_1.TenantController],
55
+ providers: [auth_service_1.AuthService, file_service_1.FileService, health_service_1.HealthService, membership_service_1.MembershipService, tenant_service_1.TenantService, admin_guard_1.AdminGuard, tenant_guard_1.TenantGuard, user_guard_1.UserGuard, system_guard_1.SystemGuard],
56
+ exports: [
57
+ auth_service_1.AuthService,
58
+ file_service_1.FileService,
59
+ health_service_1.HealthService,
60
+ membership_service_1.MembershipService,
61
+ tenant_service_1.TenantService,
62
+ admin_guard_1.AdminGuard,
63
+ tenant_guard_1.TenantGuard,
64
+ user_guard_1.UserGuard,
65
+ system_guard_1.SystemGuard,
66
+ mongoose_1.MongooseModule.forFeature(kominalCommonModelDefinitions),
67
+ ],
39
68
  })
40
69
  ], KominalCommonModule);
41
70
  //# sourceMappingURL=kominal-common.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kominal-common.module.js","sourceRoot":"","sources":["../src/kominal-common.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAAmE;AACnE,uEAAmE;AACnE,wEAAgF;AAChF,oEAA4E;AAC5E,4DAAgE;AAChE,wDAA0D;AAC1D,sDAAkD;AAClD,wDAAoD;AACpD,wDAAoD;AACpD,oDAAgD;AAChD,0DAAsD;AACtD,0DAAsD;AACtD,8DAA0D;AAE7C,QAAA,6BAA6B,GAAsB;IAC9D,EAAE,IAAI,EAAE,iCAAW,CAAC,IAAI,EAAE,MAAM,EAAE,uCAAiB,EAAE;IACrD,EAAE,IAAI,EAAE,8BAAU,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAgB,EAAE;IACnD,EAAE,IAAI,EAAE,sBAAM,CAAC,IAAI,EAAE,MAAM,EAAE,4BAAY,EAAE;IAC3C,EAAE,IAAI,EAAE,kBAAI,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAU,EAAE;CACxC,CAAC;AAQK,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAN/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,yBAAc,CAAC,UAAU,CAAC,qCAA6B,CAAC,CAAC;QACnE,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,0BAAW,EAAE,0BAAW,EAAE,8BAAa,EAAE,wBAAU,EAAE,0BAAW,EAAE,sBAAS,EAAE,0BAAW,CAAC;QACrG,OAAO,EAAE,CAAC,0BAAW,EAAE,0BAAW,EAAE,8BAAa,EAAE,wBAAU,EAAE,0BAAW,EAAE,sBAAS,EAAE,0BAAW,EAAE,yBAAc,CAAC,UAAU,CAAC,qCAA6B,CAAC,CAAC;KAC9J,CAAC;GACW,mBAAmB,CAAG"}
1
+ {"version":3,"file":"kominal-common.module.js","sourceRoot":"","sources":["../src/kominal-common.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,+CAAmE;AACnE,mEAA+D;AAC/D,uEAAmE;AACnE,+EAA2E;AAC3E,uEAAmE;AACnE,wEAAgF;AAChF,oEAA4E;AAC5E,4DAAgE;AAChE,wDAA0D;AAC1D,sDAAkD;AAClD,wDAAoD;AACpD,wDAAoD;AACpD,oDAAgD;AAChD,0DAAsD;AACtD,0DAAsD;AACtD,8DAA0D;AAC1D,sEAAkE;AAClE,8DAA0D;AAE7C,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAM/D,MAAM,6BAA6B,GAAsB;IACvD,EAAE,IAAI,EAAE,iCAAW,CAAC,IAAI,EAAE,MAAM,EAAE,uCAAiB,EAAE;IACrD,EAAE,IAAI,EAAE,8BAAU,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAgB,EAAE;IACnD,EAAE,IAAI,EAAE,sBAAM,CAAC,IAAI,EAAE,MAAM,EAAE,4BAAY,EAAE;IAC3C,EAAE,IAAI,EAAE,kBAAI,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAU,EAAE;CACxC,CAAC;AAmBK,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IACvB,MAAM,CAAC,OAAO,CAAC,OAA6B;QACjD,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,8BAAsB;oBAC/B,QAAQ,EAAE,OAAO;iBAClB;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAZY,kDAAmB;8BAAnB,mBAAmB;IAjB/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,yBAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;QACnE,WAAW,EAAE,CAAC,gCAAc,EAAE,oCAAgB,EAAE,4CAAoB,EAAE,oCAAgB,CAAC;QACvF,SAAS,EAAE,CAAC,0BAAW,EAAE,0BAAW,EAAE,8BAAa,EAAE,sCAAiB,EAAE,8BAAa,EAAE,wBAAU,EAAE,0BAAW,EAAE,sBAAS,EAAE,0BAAW,CAAC;QACvI,OAAO,EAAE;YACP,0BAAW;YACX,0BAAW;YACX,8BAAa;YACb,sCAAiB;YACjB,8BAAa;YACb,wBAAU;YACV,0BAAW;YACX,sBAAS;YACT,0BAAW;YACX,yBAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC;SACzD;KACF,CAAC;GACW,mBAAmB,CAY/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kominal/common-nestjs",
3
- "version": "0.0.26",
3
+ "version": "0.0.29",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -18,6 +18,7 @@
18
18
  "@aws-sdk/s3-request-presigner": "^3.787.0",
19
19
  "@nestjs/common": "^11.0.20",
20
20
  "@nestjs/mongoose": "^11.0.3",
21
+ "@nestjs/platform-express": "^11.1.1",
21
22
  "@nestjs/swagger": "^11.1.4",
22
23
  "@nestjs/testing": "^11.1.1",
23
24
  "body-parser": "^2.2.0",
@@ -0,0 +1,15 @@
1
+ import { Membership, MembershipCreateRequest, MembershipModel, MembershipUpdateRequest } from '../entities/membership.entity';
2
+ import { TenantModel } from '../entities/tenant.entity';
3
+ import { UserModel } from '../entities/user.entity';
4
+ import { UserContext } from '../helpers/context.decorator';
5
+ import { EntitiesPathParams, EntityPathParams, ListParams, ListResponse } from '../helpers/entity-service.helper';
6
+ export declare class MembershipService {
7
+ private tenantModel;
8
+ private membershipModel;
9
+ private userModel;
10
+ constructor(tenantModel: TenantModel, membershipModel: MembershipModel, userModel: UserModel);
11
+ create(userContext: UserContext, entitiesPathParams: EntitiesPathParams, membershipCreateRequest: MembershipCreateRequest): Promise<void>;
12
+ list(entitiesPathParams: EntitiesPathParams, { active, direction, pageIndex, pageSize, filter }: ListParams): Promise<ListResponse<Membership>>;
13
+ update(userContext: UserContext, entityPathParams: EntityPathParams, body: MembershipUpdateRequest): Promise<void>;
14
+ delete(userContext: UserContext, entityPathParams: EntityPathParams): Promise<void>;
15
+ }
@@ -0,0 +1,91 @@
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.MembershipService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("@nestjs/mongoose");
18
+ const uuid_1 = require("uuid");
19
+ const membership_entity_1 = require("../entities/membership.entity");
20
+ const tenant_entity_1 = require("../entities/tenant.entity");
21
+ const user_entity_1 = require("../entities/user.entity");
22
+ let MembershipService = class MembershipService {
23
+ constructor(tenantModel, membershipModel, userModel) {
24
+ this.tenantModel = tenantModel;
25
+ this.membershipModel = membershipModel;
26
+ this.userModel = userModel;
27
+ }
28
+ async create(userContext, entitiesPathParams, membershipCreateRequest) {
29
+ const email = membershipCreateRequest.email.toLocaleLowerCase();
30
+ const tenant = await this.tenantModel.findOne({ uuid: entitiesPathParams.tenantId }).orFail(new common_1.HttpException('Tenant not found', 404));
31
+ const users = await this.userModel.find({ email });
32
+ if (users.length > 0) {
33
+ for (const user of users) {
34
+ await this.membershipModel.updateOne({ tenantId: tenant.uuid, userId: user.userId }, {
35
+ email,
36
+ status: membership_entity_1.MembershipStatus.ACTIVE,
37
+ uuid: (0, uuid_1.v4)(),
38
+ createdAt: new Date(),
39
+ createdBy: userContext.email,
40
+ updatedAt: new Date(),
41
+ updatedBy: userContext.email,
42
+ }, { upsert: true });
43
+ }
44
+ }
45
+ else {
46
+ await this.membershipModel.updateOne({ tenantId: tenant.uuid, email }, {
47
+ status: membership_entity_1.MembershipStatus.INVITED,
48
+ uuid: (0, uuid_1.v4)(),
49
+ createdAt: new Date(),
50
+ createdBy: userContext.email,
51
+ updatedAt: new Date(),
52
+ updatedBy: userContext.email,
53
+ }, { upsert: true });
54
+ }
55
+ }
56
+ async list(entitiesPathParams, { active, direction, pageIndex, pageSize, filter }) {
57
+ const items = await this.membershipModel
58
+ .find({ ...(filter ? JSON.parse(filter) : {}), ...entitiesPathParams })
59
+ .sort({ [active || '_id']: (direction || 'asc') })
60
+ .skip((pageIndex || 0) * (pageSize || 10))
61
+ .limit(pageSize || 10);
62
+ const count = await this.membershipModel.countDocuments({
63
+ ...(filter ? JSON.parse(filter) : {}),
64
+ ...entitiesPathParams,
65
+ });
66
+ return { items: items, count };
67
+ }
68
+ async update(userContext, entityPathParams, body) {
69
+ const membership = await this.membershipModel.findOne(entityPathParams).orFail(new common_1.HttpException('Membership not found', 404));
70
+ membership.permissions = body.permissions;
71
+ membership.updatedAt = new Date();
72
+ membership.updatedBy = userContext.email;
73
+ await membership.save();
74
+ }
75
+ async delete(userContext, entityPathParams) {
76
+ const membership = await this.membershipModel.findOne(entityPathParams).orFail(new common_1.HttpException('Membership not found', 404));
77
+ if (membership.userId === userContext.userId) {
78
+ return;
79
+ }
80
+ await this.membershipModel.deleteOne(entityPathParams);
81
+ }
82
+ };
83
+ exports.MembershipService = MembershipService;
84
+ exports.MembershipService = MembershipService = __decorate([
85
+ (0, common_1.Injectable)(),
86
+ __param(0, (0, mongoose_1.InjectModel)(tenant_entity_1.Tenant.name)),
87
+ __param(1, (0, mongoose_1.InjectModel)(membership_entity_1.Membership.name)),
88
+ __param(2, (0, mongoose_1.InjectModel)(user_entity_1.User.name)),
89
+ __metadata("design:paramtypes", [Object, Object, Object])
90
+ ], MembershipService);
91
+ //# sourceMappingURL=membership.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.service.js","sourceRoot":"","sources":["../../src/services/membership.service.ts"],"names":[],"mappings":"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"}