@lenne.tech/nest-server 8.0.2 → 8.3.0
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/dist/config.env.js +3 -2
- package/dist/config.env.js.map +1 -1
- package/dist/core/common/args/pagination.args.js +1 -1
- package/dist/core/common/args/pagination.args.js.map +1 -1
- package/dist/core/common/decorators/restricted.decorator.d.ts +3 -0
- package/dist/core/common/decorators/restricted.decorator.js +14 -8
- package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
- package/dist/core/common/enums/role.enum.d.ts +3 -2
- package/dist/core/common/enums/role.enum.js +3 -2
- package/dist/core/common/enums/role.enum.js.map +1 -1
- package/dist/core/common/helpers/config.helper.d.ts +2 -1
- package/dist/core/common/helpers/config.helper.js +11 -7
- package/dist/core/common/helpers/config.helper.js.map +1 -1
- package/dist/core/common/helpers/context.helper.d.ts +7 -1
- package/dist/core/common/helpers/context.helper.js +33 -29
- package/dist/core/common/helpers/context.helper.js.map +1 -1
- package/dist/core/common/helpers/db.helper.d.ts +37 -0
- package/dist/core/common/helpers/db.helper.js +356 -0
- package/dist/core/common/helpers/db.helper.js.map +1 -0
- package/dist/core/common/helpers/file.helper.d.ts +8 -1
- package/dist/core/common/helpers/file.helper.js +43 -31
- package/dist/core/common/helpers/file.helper.js.map +1 -1
- package/dist/core/common/helpers/filter.helper.d.ts +3 -0
- package/dist/core/common/helpers/filter.helper.js +93 -81
- package/dist/core/common/helpers/filter.helper.js.map +1 -1
- package/dist/core/common/helpers/graphql.helper.d.ts +24 -1
- package/dist/core/common/helpers/graphql.helper.js +144 -96
- package/dist/core/common/helpers/graphql.helper.js.map +1 -1
- package/dist/core/common/helpers/input.helper.d.ts +42 -4
- package/dist/core/common/helpers/input.helper.js +256 -97
- package/dist/core/common/helpers/input.helper.js.map +1 -1
- package/dist/core/common/helpers/model.helper.d.ts +11 -0
- package/dist/core/common/helpers/model.helper.js +41 -29
- package/dist/core/common/helpers/model.helper.js.map +1 -1
- package/dist/core/common/helpers/service.helper.d.ts +21 -1
- package/dist/core/common/helpers/service.helper.js +80 -72
- package/dist/core/common/helpers/service.helper.js.map +1 -1
- package/dist/core/common/inputs/combined-filter.input.js +1 -1
- package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
- package/dist/core/common/inputs/core-input.input.js +1 -1
- package/dist/core/common/inputs/core-input.input.js.map +1 -1
- package/dist/core/common/interceptors/check-response.interceptor.js +1 -1
- package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
- package/dist/core/common/interfaces/resolve-selector.interface.d.ts +5 -0
- package/dist/core/common/interfaces/resolve-selector.interface.js +3 -0
- package/dist/core/common/interfaces/resolve-selector.interface.js.map +1 -0
- package/dist/core/common/interfaces/service-options.interface.d.ts +36 -0
- package/dist/core/common/interfaces/service-options.interface.js +3 -0
- package/dist/core/common/interfaces/service-options.interface.js.map +1 -0
- package/dist/core/common/models/core-model.model.d.ts +5 -1
- package/dist/core/common/models/core-model.model.js +1 -1
- package/dist/core/common/models/core-model.model.js.map +1 -1
- package/dist/core/common/pipes/check-input.pipe.js +2 -2
- package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
- package/dist/core/common/services/crud.service.d.ts +13 -0
- package/dist/core/common/services/crud.service.js +57 -0
- package/dist/core/common/services/crud.service.js.map +1 -0
- package/dist/core/common/services/email.service.js +8 -8
- package/dist/core/common/services/email.service.js.map +1 -1
- package/dist/core/common/services/module.service.d.ts +40 -0
- package/dist/core/common/services/module.service.js +80 -0
- package/dist/core/common/services/module.service.js.map +1 -0
- package/dist/core/common/types/core-model-constructor.type.d.ts +21 -0
- package/dist/core/common/types/core-model-constructor.type.js +3 -0
- package/dist/core/common/types/core-model-constructor.type.js.map +1 -0
- package/dist/core/common/types/field-selection.type.d.ts +4 -0
- package/dist/core/common/types/field-selection.type.js +3 -0
- package/dist/core/common/types/field-selection.type.js.map +1 -0
- package/dist/core/common/types/ids.type.d.ts +8 -0
- package/dist/core/common/types/ids.type.js +3 -0
- package/dist/core/common/types/ids.type.js.map +1 -0
- package/dist/core/common/types/string-or-object-id.type.d.ts +2 -0
- package/dist/core/common/types/string-or-object-id.type.js +3 -0
- package/dist/core/common/types/string-or-object-id.type.js.map +1 -0
- package/dist/core/modules/auth/core-auth.resolver.d.ts +2 -1
- package/dist/core/modules/auth/core-auth.resolver.js +4 -3
- package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
- package/dist/core/modules/auth/guards/roles.guard.js +1 -2
- package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth-user.service.d.ts +3 -1
- package/dist/core/modules/auth/services/core-auth-user.service.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -1
- package/dist/core/modules/auth/services/core-auth.service.js +6 -4
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/core/modules/user/core-user.model.js +1 -1
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.d.ts +16 -25
- package/dist/core/modules/user/core-user.service.js +69 -90
- package/dist/core/modules/user/core-user.service.js.map +1 -1
- package/dist/core.module.js +1 -1
- package/dist/core.module.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/server/modules/auth/auth.resolver.d.ts +2 -1
- package/dist/server/modules/auth/auth.resolver.js +4 -3
- package/dist/server/modules/auth/auth.resolver.js.map +1 -1
- package/dist/server/modules/file/file.controller.js +1 -1
- package/dist/server/modules/file/file.controller.js.map +1 -1
- package/dist/server/modules/user/avatar.controller.js +2 -2
- package/dist/server/modules/user/avatar.controller.js.map +1 -1
- package/dist/server/modules/user/user.model.d.ts +2 -1
- package/dist/server/modules/user/user.module.js +7 -3
- package/dist/server/modules/user/user.module.js.map +1 -1
- package/dist/server/modules/user/user.resolver.d.ts +8 -7
- package/dist/server/modules/user/user.resolver.js +85 -49
- package/dist/server/modules/user/user.resolver.js.map +1 -1
- package/dist/server/modules/user/user.service.d.ts +9 -18
- package/dist/server/modules/user/user.service.js +23 -30
- package/dist/server/modules/user/user.service.js.map +1 -1
- package/dist/test/test.helper.d.ts +1 -2
- package/dist/test/test.helper.js +1 -16
- package/dist/test/test.helper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +58 -59
- package/src/config.env.ts +3 -2
- package/src/core/common/args/pagination.args.ts +2 -2
- package/src/core/common/decorators/restricted.decorator.ts +24 -12
- package/src/core/common/enums/role.enum.ts +23 -5
- package/src/core/common/helpers/config.helper.ts +26 -6
- package/src/core/common/helpers/context.helper.ts +42 -33
- package/src/core/common/helpers/db.helper.ts +595 -0
- package/src/core/common/helpers/file.helper.ts +76 -49
- package/src/core/common/helpers/filter.helper.ts +119 -96
- package/src/core/common/helpers/graphql.helper.ts +219 -117
- package/src/core/common/helpers/input.helper.ts +349 -108
- package/src/core/common/helpers/model.helper.ts +102 -57
- package/src/core/common/helpers/service.helper.ts +149 -117
- package/src/core/common/inputs/combined-filter.input.ts +2 -2
- package/src/core/common/inputs/core-input.input.ts +2 -2
- package/src/core/common/interceptors/check-response.interceptor.ts +2 -2
- package/src/core/common/interfaces/resolve-selector.interface.ts +9 -0
- package/src/core/common/interfaces/service-options.interface.ts +71 -0
- package/src/core/common/models/core-model.model.ts +7 -3
- package/src/core/common/pipes/check-input.pipe.ts +4 -4
- package/src/core/common/pipes/map-and-validate.pipe.ts +2 -2
- package/src/core/common/services/crud.service.ts +100 -0
- package/src/core/common/services/email.service.ts +9 -9
- package/src/core/common/services/module.service.ts +188 -0
- package/src/core/common/types/core-model-constructor.type.ts +30 -0
- package/src/core/common/types/field-selection.type.ts +8 -0
- package/src/core/common/types/ids.type.ts +7 -0
- package/src/core/common/types/string-or-object-id.type.ts +3 -0
- package/src/core/modules/auth/core-auth.module.ts +1 -1
- package/src/core/modules/auth/core-auth.resolver.ts +8 -3
- package/src/core/modules/auth/guards/roles.guard.ts +5 -7
- package/src/core/modules/auth/services/core-auth-user.service.ts +7 -1
- package/src/core/modules/auth/services/core-auth.service.ts +14 -4
- package/src/core/modules/user/core-user.model.ts +2 -1
- package/src/core/modules/user/core-user.service.ts +115 -185
- package/src/core.module.ts +2 -2
- package/src/index.ts +9 -1
- package/src/main.ts +1 -1
- package/src/server/modules/auth/auth.resolver.ts +8 -3
- package/src/server/modules/file/file.controller.ts +2 -2
- package/src/server/modules/user/avatar.controller.ts +3 -3
- package/src/server/modules/user/user.module.ts +7 -3
- package/src/server/modules/user/user.resolver.ts +74 -43
- package/src/server/modules/user/user.service.ts +30 -53
- package/src/test/test.helper.ts +31 -30
- package/dist/core/modules/user/core-basic-user.service.d.ts +0 -17
- package/dist/core/modules/user/core-basic-user.service.js +0 -73
- package/dist/core/modules/user/core-basic-user.service.js.map +0 -1
- package/src/core/modules/user/core-basic-user.service.ts +0 -138
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleService = void 0;
|
|
4
|
+
const mongoose_1 = require("mongoose");
|
|
5
|
+
const db_helper_1 = require("../helpers/db.helper");
|
|
6
|
+
const input_helper_1 = require("../helpers/input.helper");
|
|
7
|
+
const service_helper_1 = require("../helpers/service.helper");
|
|
8
|
+
class ModuleService {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.mainDbModel = options === null || options === void 0 ? void 0 : options.mainDbModel;
|
|
11
|
+
this.mainModelConstructor = options === null || options === void 0 ? void 0 : options.mainModelConstructor;
|
|
12
|
+
}
|
|
13
|
+
checkRights(input, currentUser, options) {
|
|
14
|
+
const config = Object.assign({ metatype: this.mainModelConstructor }, options);
|
|
15
|
+
return (0, input_helper_1.check)(input, currentUser, config);
|
|
16
|
+
}
|
|
17
|
+
async process(serviceFunc, options) {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
const config = Object.assign({ checkRights: true, dbObject: options === null || options === void 0 ? void 0 : options.dbObject, input: options === null || options === void 0 ? void 0 : options.input, processFieldSelection: {}, prepareInput: {}, prepareOutput: {}, pubSub: true }, options === null || options === void 0 ? void 0 : options.serviceOptions);
|
|
20
|
+
if (config.prepareInput && this.prepareInput) {
|
|
21
|
+
await this.prepareInput(config.input, config.prepareInput);
|
|
22
|
+
}
|
|
23
|
+
const getDbObject = async () => {
|
|
24
|
+
if (config.dbObject) {
|
|
25
|
+
if (typeof config.dbObject === 'string' || config.dbObject instanceof mongoose_1.Types.ObjectId) {
|
|
26
|
+
const dbObject = await this.get((0, db_helper_1.getStringIds)(config.dbObject));
|
|
27
|
+
if (dbObject) {
|
|
28
|
+
config.dbObject = dbObject;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return config.dbObject;
|
|
33
|
+
};
|
|
34
|
+
let ownerIds = undefined;
|
|
35
|
+
if (config.checkRights && this.checkRights) {
|
|
36
|
+
ownerIds = (0, db_helper_1.getStringIds)(config.ownerIds);
|
|
37
|
+
if (!(ownerIds === null || ownerIds === void 0 ? void 0 : ownerIds.length)) {
|
|
38
|
+
ownerIds = (_a = (await getDbObject())) === null || _a === void 0 ? void 0 : _a.ownerIds;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (config.input && config.checkRights && this.checkRights) {
|
|
42
|
+
const opts = { creator: (_b = (await getDbObject())) === null || _b === void 0 ? void 0 : _b.createdBy, ownerIds, roles: config.roles };
|
|
43
|
+
if (config.inputType) {
|
|
44
|
+
opts.metatype = config.resultType;
|
|
45
|
+
}
|
|
46
|
+
config.input = await this.checkRights(config.input, config.currentUser, opts);
|
|
47
|
+
}
|
|
48
|
+
let result = await serviceFunc(config);
|
|
49
|
+
if (config.processFieldSelection && config.fieldSelection && this.processFieldSelection) {
|
|
50
|
+
await this.processFieldSelection(result, config.fieldSelection, config.processFieldSelection);
|
|
51
|
+
}
|
|
52
|
+
if (config.prepareOutput && this.prepareOutput) {
|
|
53
|
+
if (config.processFieldSelection && config.fieldSelection && this.processFieldSelection) {
|
|
54
|
+
config.prepareOutput.targetModel = null;
|
|
55
|
+
}
|
|
56
|
+
result = await this.prepareOutput(result, config.prepareOutput);
|
|
57
|
+
}
|
|
58
|
+
if (config.checkRights && this.checkRights) {
|
|
59
|
+
const opts = { creator: (_c = (await getDbObject())) === null || _c === void 0 ? void 0 : _c.createdBy, ownerIds, roles: config.roles, throwError: false };
|
|
60
|
+
if (config.resultType) {
|
|
61
|
+
opts.metatype = config.resultType;
|
|
62
|
+
}
|
|
63
|
+
result = await this.checkRights(result, config.currentUser, opts);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
async prepareInput(input, options = {}) {
|
|
68
|
+
return (0, service_helper_1.prepareInput)(input, options.currentUser, options.prepareInput);
|
|
69
|
+
}
|
|
70
|
+
async prepareOutput(output, options = {}) {
|
|
71
|
+
const config = Object.assign({ targetModel: this.mainModelConstructor }, options === null || options === void 0 ? void 0 : options.prepareOutput);
|
|
72
|
+
return (0, service_helper_1.prepareOutput)(output, config);
|
|
73
|
+
}
|
|
74
|
+
async processFieldSelection(data, fieldsSelection, options = {}) {
|
|
75
|
+
const config = Object.assign({ model: this.mainModelConstructor, dbModel: this.mainDbModel }, options);
|
|
76
|
+
return (0, db_helper_1.popAndMap)(data, fieldsSelection, config.model, config.dbModel);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.ModuleService = ModuleService;
|
|
80
|
+
//# sourceMappingURL=module.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/module.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CoreModel } from '../models/core-model.model';
|
|
2
|
+
export declare type CoreModelConstructor<T extends CoreModel> = {
|
|
3
|
+
new (): T;
|
|
4
|
+
init(this: new (...args: any[]) => T, ...args: any[]): T;
|
|
5
|
+
map(this: new (...args: any[]) => T, data: Partial<T> | Record<string, any>, options?: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
cloneDeep?: boolean;
|
|
8
|
+
funcAllowed?: boolean;
|
|
9
|
+
init?: any;
|
|
10
|
+
item?: T;
|
|
11
|
+
mapId?: boolean;
|
|
12
|
+
}): T;
|
|
13
|
+
mapDeep(this: new (...args: any[]) => T, data: Partial<T> | Record<string, any>, options: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
cloneDeep?: boolean;
|
|
16
|
+
funcAllowed?: boolean;
|
|
17
|
+
init?: any;
|
|
18
|
+
item?: T;
|
|
19
|
+
mapId?: boolean;
|
|
20
|
+
}): T;
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-model-constructor.type.js","sourceRoot":"","sources":["../../../../src/core/common/types/core-model-constructor.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-selection.type.js","sourceRoot":"","sources":["../../../../src/core/common/types/field-selection.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Types } from 'mongoose';
|
|
2
|
+
export declare type IdsType = string | Types.ObjectId | {
|
|
3
|
+
id?: string | Types.ObjectId;
|
|
4
|
+
_id?: string | Types.ObjectId;
|
|
5
|
+
} | (string | Types.ObjectId | {
|
|
6
|
+
id?: string | Types.ObjectId;
|
|
7
|
+
_id?: string | Types.ObjectId;
|
|
8
|
+
})[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.type.js","sourceRoot":"","sources":["../../../../src/core/common/types/ids.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-or-object-id.type.js","sourceRoot":"","sources":["../../../../src/core/common/types/string-or-object-id.type.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { GraphQLResolveInfo } from 'graphql';
|
|
1
2
|
import { CoreAuthModel } from './core-auth.model';
|
|
2
3
|
import { CoreAuthService } from './services/core-auth.service';
|
|
3
4
|
export declare class CoreAuthResolver {
|
|
4
5
|
protected readonly authService: CoreAuthService;
|
|
5
6
|
constructor(authService: CoreAuthService);
|
|
6
|
-
signIn(email: string, password: string): Promise<Partial<CoreAuthModel>>;
|
|
7
|
+
signIn(email: string, password: string, info: GraphQLResolveInfo): Promise<Partial<CoreAuthModel>>;
|
|
7
8
|
}
|
|
@@ -20,16 +20,17 @@ let CoreAuthResolver = class CoreAuthResolver {
|
|
|
20
20
|
constructor(authService) {
|
|
21
21
|
this.authService = authService;
|
|
22
22
|
}
|
|
23
|
-
async signIn(email, password) {
|
|
24
|
-
return await this.authService.signIn(email, password);
|
|
23
|
+
async signIn(email, password, info) {
|
|
24
|
+
return await this.authService.signIn(email, password, { fieldSelection: { info, select: 'signIn' } });
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
__decorate([
|
|
28
28
|
(0, graphql_1.Query)((returns) => core_auth_model_1.CoreAuthModel, { description: 'Get JWT token' }),
|
|
29
29
|
__param(0, (0, graphql_1.Args)('email')),
|
|
30
30
|
__param(1, (0, graphql_1.Args)('password')),
|
|
31
|
+
__param(2, (0, graphql_1.Info)()),
|
|
31
32
|
__metadata("design:type", Function),
|
|
32
|
-
__metadata("design:paramtypes", [String, String]),
|
|
33
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
33
34
|
__metadata("design:returntype", Promise)
|
|
34
35
|
], CoreAuthResolver.prototype, "signIn", null);
|
|
35
36
|
CoreAuthResolver = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-auth.resolver.js","sourceRoot":"","sources":["../../../../src/core/modules/auth/core-auth.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"core-auth.resolver.js","sourceRoot":"","sources":["../../../../src/core/modules/auth/core-auth.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA8D;AAE9D,uDAAkD;AAClD,oEAA+D;AAM/D,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAI3B,YAA+B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAU/D,KAAK,CAAC,MAAM,CACK,KAAa,EACV,QAAgB,EAC1B,IAAwB;QAEhC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;CACF,CAAA;AAPC;IADC,IAAA,eAAK,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,+BAAa,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAEjE,WAAA,IAAA,cAAI,EAAC,OAAO,CAAC,CAAA;IACb,WAAA,IAAA,cAAI,EAAC,UAAU,CAAC,CAAA;IAChB,WAAA,IAAA,cAAI,GAAE,CAAA;;;;8CAGR;AApBU,gBAAgB;IAD5B,IAAA,kBAAQ,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,+BAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;qCAKR,mCAAe;GAJhD,gBAAgB,CAqB5B;AArBY,4CAAgB"}
|
|
@@ -32,8 +32,7 @@ let RolesGuard = class RolesGuard extends (0, auth_guard_1.AuthGuard)('jwt') {
|
|
|
32
32
|
}
|
|
33
33
|
if (!user || !user.hasRole(roles)) {
|
|
34
34
|
const args = graphql_1.GqlExecutionContext.create(context).getArgs();
|
|
35
|
-
if (user &&
|
|
36
|
-
(roles.includes(role_enum_1.RoleEnum.USER) || (roles.includes(role_enum_1.RoleEnum.OWNER) && user.id.toString() === args.id))) {
|
|
35
|
+
if (user && roles.includes(role_enum_1.RoleEnum.S_USER)) {
|
|
37
36
|
return user;
|
|
38
37
|
}
|
|
39
38
|
throw new common_1.UnauthorizedException();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA6F;AAC7F,uCAAyC;AACzC,6CAAsD;AACtD,+DAA2D;AAC3D,6CAAyC;AAUzC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,IAAA,sBAAS,EAAC,KAAK,CAAC;IAI9C,YAA+B,SAAoB;QACjD,KAAK,EAAE,CAAC;QADqB,cAAS,GAAT,SAAS,CAAW;IAEnD,CAAC;IAKD,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO;QAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAa,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9G,MAAM,KAAK,GAAa,cAAc,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAGtB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO,IAAI,CAAC;SACb;QAGD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAEjC,MAAM,IAAI,GAAQ,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YAGhE,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAQ,CAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACb;YAGD,MAAM,IAAI,8BAAqB,EAAE,CAAC;SACnC;QAGD,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,UAAU,CAAC,OAAyB;QAClC,MAAM,GAAG,GAAG,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IACvF,CAAC;CACF,CAAA;AAlDY,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAK+B,gBAAS;GAJxC,UAAU,CAkDtB;AAlDY,gCAAU"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { ServiceOptions } from '../../../common/interfaces/service-options.interface';
|
|
1
2
|
import { ICoreAuthUser } from '../interfaces/core-auth-user.interface';
|
|
2
3
|
export declare abstract class CoreAuthUserService {
|
|
3
|
-
abstract getViaEmail(email: string): Promise<ICoreAuthUser>;
|
|
4
|
+
abstract getViaEmail(email: string, serviceOptions?: ServiceOptions): Promise<ICoreAuthUser>;
|
|
5
|
+
abstract prepareOutput(output: any, options?: ServiceOptions): Promise<ICoreAuthUser>;
|
|
4
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-auth-user.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth-user.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"core-auth-user.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth-user.service.ts"],"names":[],"mappings":";;;AAMA,MAAsB,mBAAmB;CAUxC;AAVD,kDAUC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { JwtService } from '@nestjs/jwt';
|
|
2
|
+
import { ServiceOptions } from '../../../common/interfaces/service-options.interface';
|
|
2
3
|
import { ICoreAuthUser } from '../interfaces/core-auth-user.interface';
|
|
3
4
|
import { JwtPayload } from '../interfaces/jwt-payload.interface';
|
|
4
5
|
import { CoreAuthUserService } from './core-auth-user.service';
|
|
@@ -6,7 +7,7 @@ export declare class CoreAuthService {
|
|
|
6
7
|
protected readonly userService: CoreAuthUserService;
|
|
7
8
|
protected readonly jwtService: JwtService;
|
|
8
9
|
constructor(userService: CoreAuthUserService, jwtService: JwtService);
|
|
9
|
-
signIn(email: string, password: string): Promise<{
|
|
10
|
+
signIn(email: string, password: string, serviceOptions?: ServiceOptions): Promise<{
|
|
10
11
|
token: string;
|
|
11
12
|
user: ICoreAuthUser;
|
|
12
13
|
}>;
|
|
@@ -13,21 +13,23 @@ exports.CoreAuthService = void 0;
|
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const jwt_1 = require("@nestjs/jwt");
|
|
15
15
|
const bcrypt = require("bcrypt");
|
|
16
|
+
const config_helper_1 = require("../../../common/helpers/config.helper");
|
|
16
17
|
const core_auth_user_service_1 = require("./core-auth-user.service");
|
|
17
18
|
let CoreAuthService = class CoreAuthService {
|
|
18
19
|
constructor(userService, jwtService) {
|
|
19
20
|
this.userService = userService;
|
|
20
21
|
this.jwtService = jwtService;
|
|
21
22
|
}
|
|
22
|
-
async signIn(email, password) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
async signIn(email, password, serviceOptions) {
|
|
24
|
+
serviceOptions = (0, config_helper_1.merge)(serviceOptions || {}, { prepareOutput: null });
|
|
25
|
+
const user = await this.userService.getViaEmail(email, serviceOptions);
|
|
26
|
+
if (!user || !(await bcrypt.compare(password, user.password))) {
|
|
25
27
|
throw new common_1.UnauthorizedException();
|
|
26
28
|
}
|
|
27
29
|
const payload = { email: user.email };
|
|
28
30
|
return {
|
|
29
31
|
token: this.jwtService.sign(payload),
|
|
30
|
-
user,
|
|
32
|
+
user: await this.userService.prepareOutput(user),
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
35
|
async validateUser(payload) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAAyC;AACzC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAAyC;AACzC,iCAAiC;AACjC,yEAA8D;AAI9D,qEAA+D;AAM/D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,YAA+B,WAAgC,EAAqB,UAAsB;QAA3E,gBAAW,GAAX,WAAW,CAAqB;QAAqB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAK9G,KAAK,CAAC,MAAM,CACV,KAAa,EACb,QAAgB,EAChB,cAA+B;QAE/B,cAAc,GAAG,IAAA,qBAAK,EAAC,cAAc,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC7D,MAAM,IAAI,8BAAqB,EAAE,CAAC;SACnC;QACD,MAAM,OAAO,GAAe,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACpC,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;SACjD,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,OAAmB;QACpC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAKD,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAe,CAAC;IACrD,CAAC;CACF,CAAA;AApCY,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAEiC,4CAAmB,EAAiC,gBAAU;GAD/F,eAAe,CAoC3B;AApCY,0CAAe"}
|
|
@@ -11,9 +11,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.CoreUserModel = void 0;
|
|
13
13
|
const graphql_1 = require("@nestjs/graphql");
|
|
14
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
14
15
|
const class_validator_1 = require("class-validator");
|
|
15
16
|
const core_persistence_model_1 = require("../../common/models/core-persistence.model");
|
|
16
|
-
const mongoose_1 = require("@nestjs/mongoose");
|
|
17
17
|
let CoreUserModel = class CoreUserModel extends core_persistence_model_1.CorePersistenceModel {
|
|
18
18
|
constructor() {
|
|
19
19
|
super(...arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-user.model.js","sourceRoot":"","sources":["../../../../src/core/modules/user/core-user.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAoD;AACpD,qDAAsD;
|
|
1
|
+
{"version":3,"file":"core-user.model.js","sourceRoot":"","sources":["../../../../src/core/modules/user/core-user.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Document, Model } from 'mongoose';
|
|
2
|
+
import { ServiceOptions } from '../../common/interfaces/service-options.interface';
|
|
3
|
+
import { CrudService } from '../../common/services/crud.service';
|
|
4
|
+
import { EmailService } from '../../common/services/email.service';
|
|
5
|
+
import { CoreModelConstructor } from '../../common/types/core-model-constructor.type';
|
|
3
6
|
import { CoreUserModel } from './core-user.model';
|
|
4
7
|
import { CoreUserCreateInput } from './inputs/core-user-create.input';
|
|
5
8
|
import { CoreUserInput } from './inputs/core-user.input';
|
|
6
|
-
|
|
7
|
-
import { EmailService } from '../../common/services/email.service';
|
|
8
|
-
export declare abstract class CoreUserService<TUser extends CoreUserModel, TUserInput extends CoreUserInput, TUserCreateInput extends CoreUserCreateInput> extends CoreBasicUserService<TUser, TUserInput, TUserCreateInput> {
|
|
9
|
-
protected readonly userModel: Model<TUser & Document>;
|
|
9
|
+
export declare abstract class CoreUserService<TUser extends CoreUserModel, TUserInput extends CoreUserInput, TUserCreateInput extends CoreUserCreateInput> extends CrudService<TUser> {
|
|
10
10
|
protected emailService: EmailService;
|
|
11
|
-
protected
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
protected prepareInput(input: Record<string, any>, currentUser?: TUser, options?: {
|
|
22
|
-
[key: string]: any;
|
|
23
|
-
checkRoles?: boolean;
|
|
24
|
-
clone?: boolean;
|
|
25
|
-
}, ...args: any[]): Promise<Record<string, any>>;
|
|
26
|
-
protected prepareOutput(user: TUser, options?: {
|
|
27
|
-
[key: string]: any;
|
|
28
|
-
clone?: boolean;
|
|
29
|
-
}, ...args: any[]): Promise<TUser>;
|
|
11
|
+
protected readonly mainDbModel: Model<TUser & Document>;
|
|
12
|
+
protected mainModelConstructor: CoreModelConstructor<TUser>;
|
|
13
|
+
protected constructor(emailService: EmailService, mainDbModel: Model<TUser & Document>, mainModelConstructor: CoreModelConstructor<TUser>);
|
|
14
|
+
create(input: any, serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
15
|
+
getViaEmail(email: string, serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
16
|
+
getVerifiedState(token: string, serviceOptions?: ServiceOptions): Promise<boolean>;
|
|
17
|
+
verify(token: string, serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
18
|
+
resetPassword(token: string, newPassword: string, serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
19
|
+
setPasswordResetTokenForEmail(email: string, serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
20
|
+
setRoles(userId: string, roles: string[], serviceOptions?: ServiceOptions): Promise<TUser>;
|
|
30
21
|
}
|
|
@@ -3,123 +3,102 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CoreUserService = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const bcrypt = require("bcrypt");
|
|
6
|
-
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
7
|
-
const filter_helper_1 = require("../../common/helpers/filter.helper");
|
|
8
|
-
const service_helper_1 = require("../../common/helpers/service.helper");
|
|
9
|
-
const core_basic_user_service_1 = require("./core-basic-user.service");
|
|
10
6
|
const crypto = require("crypto");
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
const config_helper_1 = require("../../common/helpers/config.helper");
|
|
8
|
+
const crud_service_1 = require("../../common/services/crud.service");
|
|
9
|
+
class CoreUserService extends crud_service_1.CrudService {
|
|
10
|
+
constructor(emailService, mainDbModel, mainModelConstructor) {
|
|
11
|
+
super();
|
|
16
12
|
this.emailService = emailService;
|
|
13
|
+
this.mainDbModel = mainDbModel;
|
|
14
|
+
this.mainModelConstructor = mainModelConstructor;
|
|
17
15
|
}
|
|
18
|
-
async create(input,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
catch (error) {
|
|
25
|
-
if (error.code === 11000) {
|
|
26
|
-
throw new common_1.UnprocessableEntityException(`User with email address "${input.email}" already exists`);
|
|
16
|
+
async create(input, serviceOptions) {
|
|
17
|
+
serviceOptions = (0, config_helper_1.merge)({ prepareInput: { create: true } }, serviceOptions);
|
|
18
|
+
return this.process(async (data) => {
|
|
19
|
+
const createdUser = new this.mainDbModel(Object.assign(Object.assign({}, data.input), { verificationToken: crypto.randomBytes(32).toString('hex') }));
|
|
20
|
+
try {
|
|
21
|
+
await createdUser.save();
|
|
27
22
|
}
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error.code === 11000) {
|
|
25
|
+
throw new common_1.UnprocessableEntityException(`User with email address "${data.input.email}" already exists`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new common_1.UnprocessableEntityException();
|
|
29
|
+
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
pubSub.publish('userCreated', { userCreated: preparedUser });
|
|
34
|
-
return preparedUser;
|
|
31
|
+
return createdUser;
|
|
32
|
+
}, { input, serviceOptions });
|
|
35
33
|
}
|
|
36
|
-
async
|
|
37
|
-
const
|
|
38
|
-
if (!
|
|
39
|
-
throw new common_1.NotFoundException();
|
|
34
|
+
async getViaEmail(email, serviceOptions) {
|
|
35
|
+
const dbObject = await this.mainDbModel.findOne({ email }).exec();
|
|
36
|
+
if (!dbObject) {
|
|
37
|
+
throw new common_1.NotFoundException(`No user found with email: ${email}`);
|
|
40
38
|
}
|
|
41
|
-
|
|
42
|
-
const deletedUser = await this.prepareOutput(this.model.map(user), args[0]);
|
|
43
|
-
pubSub.publish('userDeleted', { userDeleted: deletedUser });
|
|
44
|
-
return deletedUser;
|
|
39
|
+
return this.process(async () => dbObject, { dbObject, serviceOptions });
|
|
45
40
|
}
|
|
46
|
-
async
|
|
47
|
-
const user = await this.
|
|
41
|
+
async getVerifiedState(token, serviceOptions) {
|
|
42
|
+
const user = await this.mainDbModel.findOne({ verificationToken: token }).exec();
|
|
48
43
|
if (!user) {
|
|
49
|
-
throw new common_1.NotFoundException();
|
|
44
|
+
throw new common_1.NotFoundException(`No user found with verify token: ${token}`);
|
|
50
45
|
}
|
|
51
|
-
return
|
|
46
|
+
return user.verified;
|
|
52
47
|
}
|
|
53
|
-
async
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
async verify(token, ...args) {
|
|
60
|
-
const user = await this.userModel.findOne({ verificationToken: token }).exec();
|
|
61
|
-
if (!user) {
|
|
62
|
-
throw new common_1.NotFoundException();
|
|
48
|
+
async verify(token, serviceOptions) {
|
|
49
|
+
const dbObject = await this.mainDbModel.findOne({ verificationToken: token }).exec();
|
|
50
|
+
if (!dbObject) {
|
|
51
|
+
throw new common_1.NotFoundException(`No user found with verify token: ${token}`);
|
|
63
52
|
}
|
|
64
|
-
if (!
|
|
53
|
+
if (!dbObject.verificationToken) {
|
|
65
54
|
throw new Error('User has no token');
|
|
66
55
|
}
|
|
67
|
-
if (
|
|
56
|
+
if (dbObject.verified) {
|
|
68
57
|
throw new Error('User already verified');
|
|
69
58
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
return this.process(async () => {
|
|
60
|
+
await Object.assign(dbObject, {
|
|
61
|
+
verified: true,
|
|
62
|
+
verificationToken: null,
|
|
63
|
+
}).save();
|
|
64
|
+
return dbObject;
|
|
65
|
+
}, { dbObject, serviceOptions });
|
|
77
66
|
}
|
|
78
|
-
async resetPassword(token, newPassword,
|
|
79
|
-
const
|
|
80
|
-
if (!
|
|
81
|
-
throw new common_1.NotFoundException();
|
|
67
|
+
async resetPassword(token, newPassword, serviceOptions) {
|
|
68
|
+
const dbObject = await this.mainDbModel.findOne({ passwordResetToken: token }).exec();
|
|
69
|
+
if (!dbObject) {
|
|
70
|
+
throw new common_1.NotFoundException(`No user found with password reset token: ${token}`);
|
|
82
71
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
return this.process(async () => {
|
|
73
|
+
await Object.assign(dbObject, {
|
|
74
|
+
password: await bcrypt.hash(newPassword, 10),
|
|
75
|
+
passwordResetToken: null,
|
|
76
|
+
}).save();
|
|
77
|
+
return dbObject;
|
|
78
|
+
}, { dbObject, serviceOptions });
|
|
88
79
|
}
|
|
89
|
-
async setPasswordResetTokenForEmail(email,
|
|
90
|
-
const
|
|
91
|
-
if (!
|
|
92
|
-
throw new common_1.NotFoundException();
|
|
80
|
+
async setPasswordResetTokenForEmail(email, serviceOptions) {
|
|
81
|
+
const dbObject = await this.mainDbModel.findOne({ email }).exec();
|
|
82
|
+
if (!dbObject) {
|
|
83
|
+
throw new common_1.NotFoundException(`No user found with email: ${email}`);
|
|
93
84
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
85
|
+
return this.process(async () => {
|
|
86
|
+
const resetToken = crypto.randomBytes(32).toString('hex');
|
|
87
|
+
dbObject.passwordResetToken = resetToken;
|
|
88
|
+
await dbObject.save();
|
|
89
|
+
return dbObject;
|
|
90
|
+
}, { dbObject, serviceOptions });
|
|
98
91
|
}
|
|
99
|
-
async setRoles(userId, roles,
|
|
92
|
+
async setRoles(userId, roles, serviceOptions) {
|
|
100
93
|
if (!Array.isArray(roles)) {
|
|
101
94
|
throw new common_1.BadRequestException('Missing roles');
|
|
102
95
|
}
|
|
103
96
|
if (roles.some((role) => typeof role !== 'string')) {
|
|
104
97
|
throw new common_1.BadRequestException('roles contains invalid values');
|
|
105
98
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
async update(id, input, currentUser, ...args) {
|
|
110
|
-
const user = await this.userModel.findById(id).exec();
|
|
111
|
-
if (!user) {
|
|
112
|
-
throw new common_1.NotFoundException(`User not found with ID: ${id}`);
|
|
113
|
-
}
|
|
114
|
-
await this.prepareInput(input, currentUser);
|
|
115
|
-
await Object.assign(user, input).save();
|
|
116
|
-
return await this.prepareOutput(this.model.map(user), args[0]);
|
|
117
|
-
}
|
|
118
|
-
async prepareInput(input, currentUser, options = {}, ...args) {
|
|
119
|
-
return service_helper_1.ServiceHelper.prepareInput(input, currentUser, options);
|
|
120
|
-
}
|
|
121
|
-
async prepareOutput(user, options = {}, ...args) {
|
|
122
|
-
return service_helper_1.ServiceHelper.prepareOutput(user, options);
|
|
99
|
+
return this.process(async (data) => {
|
|
100
|
+
return await this.mainDbModel.findByIdAndUpdate(userId, { roles }).exec();
|
|
101
|
+
}, { serviceOptions });
|
|
123
102
|
}
|
|
124
103
|
}
|
|
125
104
|
exports.CoreUserService = CoreUserService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-user.service.js","sourceRoot":"","sources":["../../../../src/core/modules/user/core-user.service.ts"],"names":[],"mappings":";;;AAAA,2CAAsG;AACtG,iCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"core-user.service.js","sourceRoot":"","sources":["../../../../src/core/modules/user/core-user.service.ts"],"names":[],"mappings":"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"}
|