@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.
- package/controllers/file.controller.d.ts +5 -0
- package/controllers/file.controller.js +60 -0
- package/controllers/file.controller.js.map +1 -0
- package/controllers/membership.controller.d.ts +12 -0
- package/controllers/membership.controller.js +88 -0
- package/controllers/membership.controller.js.map +1 -0
- package/controllers/tenant.controller.d.ts +14 -0
- package/controllers/tenant.controller.js +109 -0
- package/controllers/tenant.controller.js.map +1 -0
- package/entities/membership.entity.d.ts +1 -0
- package/entities/membership.entity.js.map +1 -1
- package/executables/bootstrap.js +4 -0
- package/executables/bootstrap.js.map +1 -1
- package/helpers/s3.helper.d.ts +2 -0
- package/helpers/s3.helper.js +30 -0
- package/helpers/s3.helper.js.map +1 -0
- package/kominal-common.module.d.ts +6 -2
- package/kominal-common.module.js +37 -8
- package/kominal-common.module.js.map +1 -1
- package/package.json +2 -1
- package/services/membership.service.d.ts +15 -0
- package/services/membership.service.js +91 -0
- package/services/membership.service.js.map +1 -0
- package/services/tenant.service.d.ts +12 -0
- package/services/tenant.service.js +65 -0
- package/services/tenant.service.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -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;
|
|
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"}
|
package/executables/bootstrap.js
CHANGED
|
@@ -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":";;
|
|
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,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 {
|
|
2
|
-
export declare const
|
|
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
|
}
|
package/kominal-common.module.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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(
|
|
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: [
|
|
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":"
|
|
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.
|
|
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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"}
|