@lenne.tech/nest-server 10.8.9 → 10.8.11
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/core/common/args/filter.args.js +2 -2
- package/dist/core/common/args/filter.args.js.map +1 -1
- package/dist/core/common/args/pagination.args.js +5 -5
- package/dist/core/common/args/pagination.args.js.map +1 -1
- package/dist/core/common/helpers/config.helper.d.ts +1 -1
- package/dist/core/common/helpers/config.helper.js +8 -8
- package/dist/core/common/helpers/config.helper.js.map +1 -1
- package/dist/core/common/helpers/db.helper.d.ts +11 -11
- package/dist/core/common/helpers/db.helper.js +100 -100
- package/dist/core/common/helpers/db.helper.js.map +1 -1
- package/dist/core/common/helpers/file.helper.d.ts +1 -1
- package/dist/core/common/helpers/file.helper.js +10 -10
- package/dist/core/common/helpers/file.helper.js.map +1 -1
- package/dist/core/common/helpers/filter.helper.d.ts +12 -12
- package/dist/core/common/helpers/filter.helper.js +19 -19
- package/dist/core/common/helpers/filter.helper.js.map +1 -1
- package/dist/core/common/helpers/graphql.helper.d.ts +8 -8
- package/dist/core/common/helpers/graphql.helper.js +75 -75
- package/dist/core/common/helpers/graphql.helper.js.map +1 -1
- package/dist/core/common/helpers/input.helper.d.ts +7 -7
- package/dist/core/common/helpers/input.helper.js +60 -60
- package/dist/core/common/helpers/input.helper.js.map +1 -1
- package/dist/core/common/helpers/model.helper.d.ts +8 -8
- package/dist/core/common/helpers/model.helper.js +38 -38
- package/dist/core/common/helpers/model.helper.js.map +1 -1
- package/dist/core/common/helpers/service.helper.d.ts +2 -2
- package/dist/core/common/helpers/table.helper.d.ts +1 -1
- package/dist/core/common/inputs/combined-filter.input.js +6 -6
- package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
- package/dist/core/common/inputs/filter.input.js +6 -6
- package/dist/core/common/inputs/filter.input.js.map +1 -1
- package/dist/core/common/inputs/single-filter.input.js +10 -10
- package/dist/core/common/inputs/single-filter.input.js.map +1 -1
- package/dist/core/common/inputs/sort.input.js +4 -4
- package/dist/core/common/inputs/sort.input.js.map +1 -1
- package/dist/core/common/interfaces/server-options.interface.d.ts +8 -8
- package/dist/core/common/models/core-persistence.model.js +8 -8
- package/dist/core/common/models/core-persistence.model.js.map +1 -1
- package/dist/core/common/plugins/mongoose-id.plugin.d.ts +1 -1
- package/dist/core/common/plugins/mongoose-id.plugin.js +2 -2
- package/dist/core/common/plugins/mongoose-id.plugin.js.map +1 -1
- package/dist/core/common/scalars/any.scalar.js +8 -8
- package/dist/core/common/scalars/any.scalar.js.map +1 -1
- package/dist/core/common/scalars/date-timestamp.scalar.js +1 -1
- package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
- package/dist/core/common/scalars/date.scalar.js +1 -1
- package/dist/core/common/scalars/date.scalar.js.map +1 -1
- package/dist/core/common/scalars/json.scalar.js +8 -8
- package/dist/core/common/scalars/json.scalar.js.map +1 -1
- package/dist/core/common/services/config.service.d.ts +26 -26
- package/dist/core/common/services/crud.service.d.ts +32 -32
- package/dist/core/common/services/mailjet.service.js +1 -1
- package/dist/core/common/services/mailjet.service.js.map +1 -1
- package/dist/core/common/services/module.service.d.ts +1 -1
- package/dist/core/common/services/module.service.js.map +1 -1
- package/dist/core/common/types/falsy.type.d.ts +1 -1
- package/dist/core/common/types/id.type.d.ts +4 -4
- package/dist/core/common/types/require-only-one.type.d.ts +2 -2
- package/dist/core/common/types/required-at-least-one.type.d.ts +2 -2
- package/dist/core/common/types/string-or-object-id.type.d.ts +1 -1
- package/dist/core/modules/auth/core-auth.controller.js +6 -6
- package/dist/core/modules/auth/core-auth.controller.js.map +1 -1
- package/dist/core/modules/auth/core-auth.model.js +2 -2
- package/dist/core/modules/auth/core-auth.model.js.map +1 -1
- package/dist/core/modules/auth/core-auth.module.d.ts +4 -4
- package/dist/core/modules/auth/core-auth.module.js +2 -2
- package/dist/core/modules/auth/core-auth.module.js.map +1 -1
- package/dist/core/modules/auth/core-auth.resolver.js +6 -6
- package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
- package/dist/core/modules/auth/guards/auth.guard.d.ts +2 -2
- package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js +2 -2
- package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js.map +1 -1
- package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js +2 -2
- package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -2
- package/dist/core/modules/file/core-file-info.model.js +8 -8
- package/dist/core/modules/file/core-file-info.model.js.map +1 -1
- package/dist/core/modules/file/core-file.controller.js +2 -2
- package/dist/core/modules/file/core-file.controller.js.map +1 -1
- package/dist/core/modules/file/core-file.resolver.js +6 -6
- package/dist/core/modules/file/core-file.resolver.js.map +1 -1
- package/dist/core/modules/file/core-file.service.d.ts +6 -6
- package/dist/core/modules/health-check/core-health-check-result.model.js +9 -9
- package/dist/core/modules/health-check/core-health-check-result.model.js.map +1 -1
- package/dist/core/modules/health-check/core-health-check.controller.js +2 -2
- package/dist/core/modules/health-check/core-health-check.controller.js.map +1 -1
- package/dist/core/modules/health-check/core-health-check.resolver.js +2 -2
- package/dist/core/modules/health-check/core-health-check.resolver.js.map +1 -1
- package/dist/core/modules/user/core-user.model.js +11 -11
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.d.ts +2 -2
- package/dist/core/modules/user/inputs/core-user-create.input.js +3 -3
- package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
- package/dist/core/modules/user/inputs/core-user.input.js +10 -10
- package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/server/common/models/persistence.model.d.ts +2 -2
- package/dist/server/common/models/persistence.model.js +6 -6
- package/dist/server/common/models/persistence.model.js.map +1 -1
- package/dist/server/modules/auth/auth.controller.js +1 -1
- package/dist/server/modules/auth/auth.controller.js.map +1 -1
- package/dist/server/modules/auth/auth.model.js +3 -3
- package/dist/server/modules/auth/auth.model.js.map +1 -1
- package/dist/server/modules/auth/auth.resolver.js +3 -3
- package/dist/server/modules/auth/auth.resolver.js.map +1 -1
- package/dist/server/modules/auth/inputs/auth-sign-in.input.js +2 -2
- package/dist/server/modules/auth/inputs/auth-sign-in.input.js.map +1 -1
- package/dist/server/modules/auth/inputs/auth-sign-up.input.js +4 -4
- package/dist/server/modules/auth/inputs/auth-sign-up.input.js.map +1 -1
- package/dist/server/modules/file/file-info.model.js +2 -2
- package/dist/server/modules/file/file-info.model.js.map +1 -1
- package/dist/server/modules/file/file.controller.js +5 -5
- package/dist/server/modules/file/file.controller.js.map +1 -1
- package/dist/server/modules/file/file.resolver.js +5 -5
- package/dist/server/modules/file/file.resolver.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/inputs/user-create.input.js +2 -2
- package/dist/server/modules/user/inputs/user-create.input.js.map +1 -1
- package/dist/server/modules/user/inputs/user.input.js +2 -2
- package/dist/server/modules/user/inputs/user.input.js.map +1 -1
- package/dist/server/modules/user/outputs/find-and-count-users-result.output.js +4 -4
- package/dist/server/modules/user/outputs/find-and-count-users-result.output.js.map +1 -1
- package/dist/server/modules/user/user.model.js +8 -8
- package/dist/server/modules/user/user.model.js.map +1 -1
- package/dist/server/modules/user/user.resolver.d.ts +1 -1
- package/dist/server/modules/user/user.resolver.js +11 -11
- package/dist/server/modules/user/user.resolver.js.map +1 -1
- package/dist/server/modules/user/user.service.d.ts +1 -1
- package/dist/server/server.controller.js +2 -2
- package/dist/server/server.controller.js.map +1 -1
- package/dist/test/test.helper.d.ts +14 -14
- package/dist/test/test.helper.js +13 -3
- package/dist/test/test.helper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +22 -19
- package/src/core/common/args/filter.args.ts +2 -2
- package/src/core/common/args/pagination.args.ts +5 -5
- package/src/core/common/decorators/graphql-service-options.decorator.ts +1 -1
- package/src/core/common/decorators/graphql-user.decorator.ts +1 -1
- package/src/core/common/decorators/rest-user.decorator.ts +1 -1
- package/src/core/common/helpers/config.helper.ts +22 -21
- package/src/core/common/helpers/db.helper.ts +164 -164
- package/src/core/common/helpers/file.helper.ts +18 -18
- package/src/core/common/helpers/filter.helper.ts +35 -35
- package/src/core/common/helpers/graphql.helper.ts +100 -100
- package/src/core/common/helpers/input.helper.ts +89 -89
- package/src/core/common/helpers/model.helper.ts +70 -70
- package/src/core/common/helpers/service.helper.ts +3 -3
- package/src/core/common/helpers/table.helper.ts +1 -1
- package/src/core/common/inputs/combined-filter.input.ts +5 -5
- package/src/core/common/inputs/filter.input.ts +5 -5
- package/src/core/common/inputs/single-filter.input.ts +9 -9
- package/src/core/common/inputs/sort.input.ts +3 -3
- package/src/core/common/interfaces/server-options.interface.ts +9 -9
- package/src/core/common/models/core-persistence.model.ts +8 -8
- package/src/core/common/plugins/mongoose-id.plugin.js +2 -2
- package/src/core/common/scalars/any.scalar.ts +8 -8
- package/src/core/common/scalars/date-timestamp.scalar.ts +1 -1
- package/src/core/common/scalars/date.scalar.ts +1 -1
- package/src/core/common/scalars/json.scalar.ts +8 -8
- package/src/core/common/services/config.service.ts +7 -7
- package/src/core/common/services/crud.service.ts +19 -19
- package/src/core/common/services/mailjet.service.ts +1 -1
- package/src/core/common/services/module.service.ts +4 -4
- package/src/core/common/types/falsy.type.ts +1 -1
- package/src/core/common/types/id.type.ts +1 -1
- package/src/core/common/types/require-only-one.type.ts +3 -3
- package/src/core/common/types/required-at-least-one.type.ts +3 -3
- package/src/core/common/types/string-or-object-id.type.ts +1 -1
- package/src/core/modules/auth/core-auth.controller.ts +6 -6
- package/src/core/modules/auth/core-auth.model.ts +1 -1
- package/src/core/modules/auth/core-auth.module.ts +4 -4
- package/src/core/modules/auth/core-auth.resolver.ts +6 -6
- package/src/core/modules/auth/guards/auth.guard.ts +3 -3
- package/src/core/modules/auth/inputs/core-auth-sign-in.input.ts +1 -1
- package/src/core/modules/auth/inputs/core-auth-sign-up.input.ts +1 -1
- package/src/core/modules/auth/services/core-auth.service.ts +1 -1
- package/src/core/modules/auth/tokens.decorator.ts +2 -2
- package/src/core/modules/file/core-file-info.model.ts +7 -7
- package/src/core/modules/file/core-file.controller.ts +2 -2
- package/src/core/modules/file/core-file.resolver.ts +6 -6
- package/src/core/modules/file/core-file.service.ts +6 -6
- package/src/core/modules/health-check/core-health-check-result.model.ts +8 -8
- package/src/core/modules/health-check/core-health-check.controller.ts +2 -2
- package/src/core/modules/health-check/core-health-check.resolver.ts +2 -2
- package/src/core/modules/user/core-user.model.ts +11 -11
- package/src/core/modules/user/core-user.service.ts +2 -2
- package/src/core/modules/user/inputs/core-user-create.input.ts +2 -2
- package/src/core/modules/user/inputs/core-user.input.ts +9 -9
- package/src/index.ts +9 -9
- package/src/server/common/models/persistence.model.ts +8 -8
- package/src/server/modules/auth/auth.controller.ts +1 -1
- package/src/server/modules/auth/auth.model.ts +2 -2
- package/src/server/modules/auth/auth.resolver.ts +3 -3
- package/src/server/modules/auth/inputs/auth-sign-in.input.ts +1 -1
- package/src/server/modules/auth/inputs/auth-sign-up.input.ts +3 -3
- package/src/server/modules/file/file-info.model.ts +2 -2
- package/src/server/modules/file/file.controller.ts +5 -5
- package/src/server/modules/file/file.module.ts +1 -1
- package/src/server/modules/file/file.resolver.ts +5 -5
- package/src/server/modules/user/avatar.controller.ts +2 -2
- package/src/server/modules/user/inputs/user-create.input.ts +1 -1
- package/src/server/modules/user/inputs/user.input.ts +1 -1
- package/src/server/modules/user/outputs/find-and-count-users-result.output.ts +3 -3
- package/src/server/modules/user/user.model.ts +8 -8
- package/src/server/modules/user/user.resolver.ts +11 -11
- package/src/server/modules/user/user.service.ts +1 -1
- package/src/server/server.controller.ts +2 -2
- package/src/test/test.helper.ts +31 -17
|
@@ -8,8 +8,8 @@ import { JSON } from '../../common/scalars/json.scalar';
|
|
|
8
8
|
/**
|
|
9
9
|
* User model
|
|
10
10
|
*/
|
|
11
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
12
11
|
@ObjectType({ description: 'Health check result' })
|
|
12
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
13
13
|
export abstract class CoreHealthCheckResult extends CoreModel {
|
|
14
14
|
// ===================================================================================================================
|
|
15
15
|
// Properties
|
|
@@ -18,37 +18,37 @@ export abstract class CoreHealthCheckResult extends CoreModel {
|
|
|
18
18
|
/**
|
|
19
19
|
* The overall status of the Health Check
|
|
20
20
|
*/
|
|
21
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
22
21
|
@Field({ description: 'The overall status of the Health Check', nullable: false })
|
|
22
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
23
23
|
status: 'error' | 'ok' | 'shutting_down' = undefined;
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* The info object contains information of each health indicator which is of status “up”
|
|
27
27
|
*/
|
|
28
|
-
@
|
|
29
|
-
@Field(type => JSON, {
|
|
28
|
+
@Field(() => JSON, {
|
|
30
29
|
description: 'The info object contains information of each health indicator which is of status “up”',
|
|
31
30
|
nullable: true,
|
|
32
31
|
})
|
|
32
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
33
33
|
info: JSON = undefined;
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* The error object contains information of each health indicator which is of status “down”
|
|
37
37
|
*/
|
|
38
|
-
@
|
|
39
|
-
@Field(type => JSON, {
|
|
38
|
+
@Field(() => JSON, {
|
|
40
39
|
description: 'The error object contains information of each health indicator which is of status “down”',
|
|
41
40
|
nullable: true,
|
|
42
41
|
})
|
|
42
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
43
43
|
error: JSON = undefined;
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* The details object contains information of every health indicator
|
|
47
47
|
*/
|
|
48
|
-
@
|
|
49
|
-
@Field(type => JSON, {
|
|
48
|
+
@Field(() => JSON, {
|
|
50
49
|
description: 'The details object contains information of every health indicator',
|
|
51
50
|
nullable: false,
|
|
52
51
|
})
|
|
52
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
53
53
|
details: JSON = undefined;
|
|
54
54
|
}
|
|
@@ -8,8 +8,8 @@ import { CoreHealthCheckService } from './core-health-check.service';
|
|
|
8
8
|
* The HealthController class checks the health of various components including the database, memory, and disk.
|
|
9
9
|
* Inspired by https://mobileappcircular.com/marketplace-backend-creating-a-health-check-endpoint-in-nestjs-app-using-terminus-25727e96c7d2
|
|
10
10
|
*/
|
|
11
|
-
@Roles(RoleEnum.ADMIN)
|
|
12
11
|
@Controller()
|
|
12
|
+
@Roles(RoleEnum.ADMIN)
|
|
13
13
|
export class CoreHealthCheckController {
|
|
14
14
|
constructor(protected readonly healthCheckService: CoreHealthCheckService) {}
|
|
15
15
|
|
|
@@ -21,8 +21,8 @@ export class CoreHealthCheckController {
|
|
|
21
21
|
* storage. The `healthCheck()` method will return a Promise that resolves with an array of objects
|
|
22
22
|
* representing the results of each check
|
|
23
23
|
*/
|
|
24
|
-
@Roles(RoleEnum.S_EVERYONE)
|
|
25
24
|
@Get('health-check')
|
|
25
|
+
@Roles(RoleEnum.S_EVERYONE)
|
|
26
26
|
async healthCheck() {
|
|
27
27
|
return this.healthCheckService.healthCheck();
|
|
28
28
|
}
|
|
@@ -2,8 +2,8 @@ import { Query, Resolver } from '@nestjs/graphql';
|
|
|
2
2
|
|
|
3
3
|
import { Roles } from '../../common/decorators/roles.decorator';
|
|
4
4
|
import { RoleEnum } from '../../common/enums/role.enum';
|
|
5
|
-
import { CoreHealthCheckService } from './core-health-check.service';
|
|
6
5
|
import { CoreHealthCheckResult } from './core-health-check-result.model';
|
|
6
|
+
import { CoreHealthCheckService } from './core-health-check.service';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Resolver to process with user data
|
|
@@ -23,8 +23,8 @@ export class CoreHealthCheckResolver {
|
|
|
23
23
|
/**
|
|
24
24
|
* Get heath check result
|
|
25
25
|
*/
|
|
26
|
-
@Roles(RoleEnum.S_EVERYONE)
|
|
27
26
|
@Query(() => CoreHealthCheckResult, { description: 'Get health check result' })
|
|
27
|
+
@Roles(RoleEnum.S_EVERYONE)
|
|
28
28
|
async healthCheck() {
|
|
29
29
|
return this.healthCheckService.healthCheck();
|
|
30
30
|
}
|
|
@@ -14,10 +14,10 @@ export type CoreUserModelDocument = CoreUserModel & Document;
|
|
|
14
14
|
/**
|
|
15
15
|
* User model
|
|
16
16
|
*/
|
|
17
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
18
|
-
@ObjectType({ description: 'User', isAbstract: true })
|
|
19
|
-
@MongooseSchema({ timestamps: true })
|
|
20
17
|
@ApiExtraModels(CorePersistenceModel)
|
|
18
|
+
@MongooseSchema({ timestamps: true })
|
|
19
|
+
@ObjectType({ description: 'User', isAbstract: true })
|
|
20
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
21
21
|
export abstract class CoreUserModel extends CorePersistenceModel {
|
|
22
22
|
// ===================================================================================================================
|
|
23
23
|
// Properties
|
|
@@ -64,7 +64,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
64
64
|
* Roles of the user
|
|
65
65
|
*/
|
|
66
66
|
@ApiProperty()
|
|
67
|
-
@Field(
|
|
67
|
+
@Field(() => [String], { description: 'Roles of the user', nullable: true })
|
|
68
68
|
@IsOptional()
|
|
69
69
|
@Prop([String])
|
|
70
70
|
@Restricted(RoleEnum.S_EVERYONE)
|
|
@@ -95,9 +95,6 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
95
95
|
* value: TokenData
|
|
96
96
|
*/
|
|
97
97
|
@ApiProperty({ isArray: true })
|
|
98
|
-
@IsOptional()
|
|
99
|
-
@Prop(raw({}))
|
|
100
|
-
@Restricted(RoleEnum.S_NO_ONE)
|
|
101
98
|
@ApiProperty({
|
|
102
99
|
additionalProperties: {
|
|
103
100
|
properties: {
|
|
@@ -122,6 +119,9 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
122
119
|
},
|
|
123
120
|
type: 'object',
|
|
124
121
|
})
|
|
122
|
+
@IsOptional()
|
|
123
|
+
@Prop(raw({}))
|
|
124
|
+
@Restricted(RoleEnum.S_NO_ONE)
|
|
125
125
|
refreshTokens: Record<string, CoreTokenData> = undefined;
|
|
126
126
|
|
|
127
127
|
/**
|
|
@@ -129,9 +129,6 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
129
129
|
* See sameTokenIdPeriod in configuration
|
|
130
130
|
*/
|
|
131
131
|
@ApiProperty()
|
|
132
|
-
@IsOptional()
|
|
133
|
-
@Prop(raw({}))
|
|
134
|
-
@Restricted(RoleEnum.S_NO_ONE)
|
|
135
132
|
@ApiProperty({
|
|
136
133
|
additionalProperties: {
|
|
137
134
|
properties: {
|
|
@@ -156,6 +153,9 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
156
153
|
},
|
|
157
154
|
type: 'object',
|
|
158
155
|
})
|
|
156
|
+
@IsOptional()
|
|
157
|
+
@Prop(raw({}))
|
|
158
|
+
@Restricted(RoleEnum.S_NO_ONE)
|
|
159
159
|
tempTokens: Record<string, { createdAt: number; deviceId: string; tokenId: string }> = undefined;
|
|
160
160
|
|
|
161
161
|
/**
|
|
@@ -171,7 +171,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
|
|
|
171
171
|
* Verification of the user
|
|
172
172
|
*/
|
|
173
173
|
@ApiProperty()
|
|
174
|
-
@Field(
|
|
174
|
+
@Field(() => Boolean, { description: 'Verification state of the user', nullable: true })
|
|
175
175
|
@Prop({ type: Boolean })
|
|
176
176
|
@Restricted(RoleEnum.S_EVERYONE)
|
|
177
177
|
verified: boolean = undefined;
|
|
@@ -9,8 +9,8 @@ import { CrudService } from '../../common/services/crud.service';
|
|
|
9
9
|
import { EmailService } from '../../common/services/email.service';
|
|
10
10
|
import { CoreModelConstructor } from '../../common/types/core-model-constructor.type';
|
|
11
11
|
import { CoreUserModel } from './core-user.model';
|
|
12
|
-
import { CoreUserInput } from './inputs/core-user.input';
|
|
13
12
|
import { CoreUserCreateInput } from './inputs/core-user-create.input';
|
|
13
|
+
import { CoreUserInput } from './inputs/core-user.input';
|
|
14
14
|
|
|
15
15
|
import bcrypt = require('bcrypt');
|
|
16
16
|
import crypto = require('crypto');
|
|
@@ -98,7 +98,7 @@ export abstract class CoreUserService<
|
|
|
98
98
|
/**
|
|
99
99
|
* Verify user with token
|
|
100
100
|
*/
|
|
101
|
-
async verify(token: string, serviceOptions?: ServiceOptions): Promise<
|
|
101
|
+
async verify(token: string, serviceOptions?: ServiceOptions): Promise<string | TUser> {
|
|
102
102
|
// Get user
|
|
103
103
|
const dbObject = await this.mainDbModel.findOne({ verificationToken: token }).exec();
|
|
104
104
|
if (!dbObject) {
|
|
@@ -12,11 +12,11 @@ import { CoreUserInput } from './core-user.input';
|
|
|
12
12
|
* otherwise the property will not be recognized via Object.keys (this is necessary for mapping) or will be initialized
|
|
13
13
|
* with a default value that may overwrite an existing value in the DB.
|
|
14
14
|
*/
|
|
15
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
16
15
|
@InputType({ description: 'User input to create a new user', isAbstract: true })
|
|
16
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
17
17
|
export abstract class CoreUserCreateInput extends CoreUserInput {
|
|
18
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
19
18
|
@Field({ description: 'Email of the user', nullable: false })
|
|
20
19
|
@IsEmail()
|
|
20
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
21
21
|
override email: string = undefined;
|
|
22
22
|
}
|
|
@@ -13,55 +13,55 @@ import { CoreInput } from '../../../common/inputs/core-input.input';
|
|
|
13
13
|
* otherwise the property will not be recognized via Object.keys (this is necessary for mapping) or will be initialized
|
|
14
14
|
* with a default value that may overwrite an existing value in the DB.
|
|
15
15
|
*/
|
|
16
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
17
16
|
@InputType({ description: 'User input', isAbstract: true })
|
|
17
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
18
18
|
export abstract class CoreUserInput extends CoreInput {
|
|
19
19
|
/**
|
|
20
20
|
* Email of the user
|
|
21
21
|
*/
|
|
22
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
23
22
|
@Field({ description: 'Email of the user', nullable: true })
|
|
24
|
-
@IsOptional()
|
|
25
23
|
@IsEmail()
|
|
24
|
+
@IsOptional()
|
|
25
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
26
26
|
email?: string = undefined;
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* First name of the user
|
|
30
30
|
*/
|
|
31
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
32
31
|
@Field({ description: 'First name of the user', nullable: true })
|
|
33
32
|
@IsOptional()
|
|
33
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
34
34
|
firstName?: string = undefined;
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Last name of the user
|
|
38
38
|
*/
|
|
39
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
40
39
|
@Field({ description: 'Last name of the user', nullable: true })
|
|
41
40
|
@IsOptional()
|
|
41
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
42
42
|
lastName?: string = undefined;
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Roles of the user
|
|
46
46
|
*/
|
|
47
|
-
@
|
|
48
|
-
@Field(type => [String], { description: 'Roles of the user', nullable: true })
|
|
47
|
+
@Field(() => [String], { description: 'Roles of the user', nullable: true })
|
|
49
48
|
@IsOptional()
|
|
49
|
+
@Restricted({ processType: ProcessType.INPUT, roles: RoleEnum.ADMIN })
|
|
50
50
|
roles?: string[] = undefined;
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Username / alias of the user
|
|
54
54
|
*/
|
|
55
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
56
55
|
@Field({ description: 'Username / alias of the user', nullable: true })
|
|
57
56
|
@IsOptional()
|
|
57
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
58
58
|
username?: string = undefined;
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* Password of the user
|
|
62
62
|
*/
|
|
63
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
64
63
|
@Field({ description: 'Password of the user', nullable: true })
|
|
65
64
|
@IsOptional()
|
|
65
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
66
66
|
password?: string = undefined;
|
|
67
67
|
}
|
package/src/index.ts
CHANGED
|
@@ -43,9 +43,9 @@ export * from './core/common/inputs/sort.input';
|
|
|
43
43
|
export * from './core/common/interceptors/check-response.interceptor';
|
|
44
44
|
export * from './core/common/interceptors/check-security.interceptor';
|
|
45
45
|
export * from './core/common/interfaces/core-persistence-model.interface';
|
|
46
|
-
export * from './core/common/interfaces/cron-job-config.interface';
|
|
47
46
|
export * from './core/common/interfaces/cron-job-config-with-time-zone.interface';
|
|
48
47
|
export * from './core/common/interfaces/cron-job-config-with-utc-offset.interface';
|
|
48
|
+
export * from './core/common/interfaces/cron-job-config.interface';
|
|
49
49
|
export * from './core/common/interfaces/mailjet-options.interface';
|
|
50
50
|
export * from './core/common/interfaces/prepare-input-options.interface';
|
|
51
51
|
export * from './core/common/interfaces/prepare-output-options.interface';
|
|
@@ -60,8 +60,8 @@ export * from './core/common/pipes/map-and-validate.pipe';
|
|
|
60
60
|
export * from './core/common/plugins/complexity.plugin';
|
|
61
61
|
export * from './core/common/plugins/mongoose-id.plugin';
|
|
62
62
|
export * from './core/common/scalars/any.scalar';
|
|
63
|
-
export * from './core/common/scalars/date.scalar';
|
|
64
63
|
export * from './core/common/scalars/date-timestamp.scalar';
|
|
64
|
+
export * from './core/common/scalars/date.scalar';
|
|
65
65
|
export * from './core/common/scalars/json.scalar';
|
|
66
66
|
export * from './core/common/services/brevo.service';
|
|
67
67
|
export * from './core/common/services/config.service';
|
|
@@ -81,8 +81,8 @@ export * from './core/common/types/ids.type';
|
|
|
81
81
|
export * from './core/common/types/is-one-of.type';
|
|
82
82
|
export * from './core/common/types/maybe-promise.type';
|
|
83
83
|
export * from './core/common/types/plain-input.type';
|
|
84
|
-
export * from './core/common/types/plain-object.type';
|
|
85
84
|
export * from './core/common/types/plain-object-deep.type';
|
|
85
|
+
export * from './core/common/types/plain-object.type';
|
|
86
86
|
export * from './core/common/types/populate-config.type';
|
|
87
87
|
export * from './core/common/types/remove-methods.type';
|
|
88
88
|
export * from './core/common/types/require-only-one.type';
|
|
@@ -109,20 +109,20 @@ export * from './core/modules/auth/inputs/core-auth-sign-up.input';
|
|
|
109
109
|
export * from './core/modules/auth/interfaces/core-auth-user.interface';
|
|
110
110
|
export * from './core/modules/auth/interfaces/core-token-data.interface';
|
|
111
111
|
export * from './core/modules/auth/interfaces/jwt-payload.interface';
|
|
112
|
-
export * from './core/modules/auth/services/core-auth.service';
|
|
113
112
|
export * from './core/modules/auth/services/core-auth-user.service';
|
|
114
|
-
export * from './core/modules/auth/
|
|
113
|
+
export * from './core/modules/auth/services/core-auth.service';
|
|
115
114
|
export * from './core/modules/auth/strategies/jwt-refresh.strategy';
|
|
115
|
+
export * from './core/modules/auth/strategies/jwt.strategy';
|
|
116
116
|
export * from './core/modules/auth/tokens.decorator';
|
|
117
117
|
|
|
118
118
|
// =====================================================================================================================
|
|
119
119
|
// Core - Modules - File
|
|
120
120
|
// =====================================================================================================================
|
|
121
121
|
|
|
122
|
+
export * from './core/modules/file/core-file-info.model';
|
|
122
123
|
export * from './core/modules/file/core-file.controller';
|
|
123
124
|
export * from './core/modules/file/core-file.resolver';
|
|
124
125
|
export * from './core/modules/file/core-file.service';
|
|
125
|
-
export * from './core/modules/file/core-file-info.model';
|
|
126
126
|
export * from './core/modules/file/interfaces/file-service-options.interface';
|
|
127
127
|
export * from './core/modules/file/interfaces/file-upload.interface';
|
|
128
128
|
|
|
@@ -130,20 +130,20 @@ export * from './core/modules/file/interfaces/file-upload.interface';
|
|
|
130
130
|
// Core - Modules - User
|
|
131
131
|
// =====================================================================================================================
|
|
132
132
|
|
|
133
|
+
export * from './core/modules/health-check/core-health-check-result.model';
|
|
133
134
|
export * from './core/modules/health-check/core-health-check.controller';
|
|
134
135
|
export * from './core/modules/health-check/core-health-check.module';
|
|
135
136
|
export * from './core/modules/health-check/core-health-check.resolver';
|
|
136
|
-
export * from './core/modules/health-check/core-health-check.service';
|
|
137
137
|
|
|
138
138
|
// =====================================================================================================================
|
|
139
139
|
// Core - Modules - HealthCheck
|
|
140
140
|
// =====================================================================================================================
|
|
141
141
|
|
|
142
|
-
export * from './core/modules/health-check/core-health-check
|
|
142
|
+
export * from './core/modules/health-check/core-health-check.service';
|
|
143
143
|
export * from './core/modules/user/core-user.model';
|
|
144
144
|
export * from './core/modules/user/core-user.service';
|
|
145
|
-
export * from './core/modules/user/inputs/core-user.input';
|
|
146
145
|
export * from './core/modules/user/inputs/core-user-create.input';
|
|
146
|
+
export * from './core/modules/user/inputs/core-user.input';
|
|
147
147
|
|
|
148
148
|
// =====================================================================================================================
|
|
149
149
|
// Tests
|
|
@@ -15,12 +15,12 @@ import mongoose = require('mongoose');
|
|
|
15
15
|
*
|
|
16
16
|
* The models are a combination of MikroORM Entities and TypeGraphQL Types
|
|
17
17
|
*/
|
|
18
|
-
@
|
|
18
|
+
@ApiExtraModels(CorePersistenceModel)
|
|
19
19
|
@ObjectType({
|
|
20
20
|
description: 'Persistence model which will be saved in DB',
|
|
21
21
|
isAbstract: true,
|
|
22
22
|
})
|
|
23
|
-
@
|
|
23
|
+
@Restricted(RoleEnum.ADMIN)
|
|
24
24
|
export abstract class PersistenceModel extends CorePersistenceModel {
|
|
25
25
|
// ===================================================================================================================
|
|
26
26
|
// Properties
|
|
@@ -31,28 +31,28 @@ export abstract class PersistenceModel extends CorePersistenceModel {
|
|
|
31
31
|
*
|
|
32
32
|
* Not set when created by system
|
|
33
33
|
*/
|
|
34
|
-
@
|
|
34
|
+
@ApiProperty({ type: String })
|
|
35
35
|
@Field(() => User, {
|
|
36
36
|
description: 'ID of the user who created the object',
|
|
37
37
|
nullable: true,
|
|
38
38
|
})
|
|
39
39
|
@Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
|
|
40
|
-
@
|
|
41
|
-
createdBy?: Types.ObjectId
|
|
40
|
+
@Restricted(RoleEnum.ADMIN)
|
|
41
|
+
createdBy?: string | Types.ObjectId = undefined;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* ID of the user who updated the object
|
|
45
45
|
*
|
|
46
46
|
* Not set when updated by system
|
|
47
47
|
*/
|
|
48
|
-
@
|
|
48
|
+
@ApiProperty({ type: User })
|
|
49
49
|
@Field(() => User, {
|
|
50
50
|
description: 'ID of the user who updated the object',
|
|
51
51
|
nullable: true,
|
|
52
52
|
})
|
|
53
53
|
@Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
|
|
54
|
-
@
|
|
55
|
-
updatedBy?: Types.ObjectId
|
|
54
|
+
@Restricted(RoleEnum.ADMIN)
|
|
55
|
+
updatedBy?: string | Types.ObjectId = undefined;
|
|
56
56
|
|
|
57
57
|
// ===================================================================================================================
|
|
58
58
|
// Methods
|
|
@@ -6,8 +6,8 @@ import { ConfigService } from '../../../core/common/services/config.service';
|
|
|
6
6
|
import { CoreAuthController } from '../../../core/modules/auth/core-auth.controller';
|
|
7
7
|
import { AuthService } from './auth.service';
|
|
8
8
|
|
|
9
|
-
@Roles(RoleEnum.ADMIN)
|
|
10
9
|
@Controller('auth')
|
|
10
|
+
@Roles(RoleEnum.ADMIN)
|
|
11
11
|
export class AuthController extends CoreAuthController {
|
|
12
12
|
/**
|
|
13
13
|
* Import project services
|
|
@@ -9,8 +9,8 @@ import { User } from '../user/user.model';
|
|
|
9
9
|
/**
|
|
10
10
|
* Authentication data
|
|
11
11
|
*/
|
|
12
|
-
@Restricted(RoleEnum.ADMIN)
|
|
13
12
|
@ObjectType({ description: 'Authentication data' })
|
|
13
|
+
@Restricted(RoleEnum.ADMIN)
|
|
14
14
|
export class Auth extends CoreAuthModel {
|
|
15
15
|
// ===================================================================================================================
|
|
16
16
|
// Properties
|
|
@@ -19,8 +19,8 @@ export class Auth extends CoreAuthModel {
|
|
|
19
19
|
/**
|
|
20
20
|
* Signed-in user
|
|
21
21
|
*/
|
|
22
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
23
22
|
@Field(() => User, { description: 'User who signed in' })
|
|
23
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
24
24
|
override user: User = undefined;
|
|
25
25
|
|
|
26
26
|
// ===================================================================================================================
|
|
@@ -15,8 +15,8 @@ import { AuthSignUpInput } from './inputs/auth-sign-up.input';
|
|
|
15
15
|
/**
|
|
16
16
|
* Authentication resolver for the sign in
|
|
17
17
|
*/
|
|
18
|
-
@Roles(RoleEnum.ADMIN)
|
|
19
18
|
@Resolver(() => Auth)
|
|
19
|
+
@Roles(RoleEnum.ADMIN)
|
|
20
20
|
export class AuthResolver extends CoreAuthResolver {
|
|
21
21
|
/**
|
|
22
22
|
* Integrate services
|
|
@@ -31,8 +31,8 @@ export class AuthResolver extends CoreAuthResolver {
|
|
|
31
31
|
/**
|
|
32
32
|
* SignIn for User
|
|
33
33
|
*/
|
|
34
|
-
@Roles(RoleEnum.S_EVERYONE)
|
|
35
34
|
@Mutation(() => Auth, { description: 'Sign in and get JWT token' })
|
|
35
|
+
@Roles(RoleEnum.S_EVERYONE)
|
|
36
36
|
override async signIn(
|
|
37
37
|
@GraphQLServiceOptions({ gqlPath: 'signIn.user' }) serviceOptions: ServiceOptions,
|
|
38
38
|
@Context() ctx: { res: ResponseType },
|
|
@@ -48,10 +48,10 @@ export class AuthResolver extends CoreAuthResolver {
|
|
|
48
48
|
/**
|
|
49
49
|
* Sign up for user
|
|
50
50
|
*/
|
|
51
|
-
@Roles(RoleEnum.S_EVERYONE)
|
|
52
51
|
@Mutation(() => Auth, {
|
|
53
52
|
description: 'Sign up user and get JWT token',
|
|
54
53
|
})
|
|
54
|
+
@Roles(RoleEnum.S_EVERYONE)
|
|
55
55
|
override async signUp(
|
|
56
56
|
@GraphQLServiceOptions({ gqlPath: 'signUp.user' }) serviceOptions: ServiceOptions,
|
|
57
57
|
@Context() ctx: { res: ResponseType },
|
|
@@ -7,8 +7,8 @@ import { CoreAuthSignInInput } from '../../../../core/modules/auth/inputs/core-a
|
|
|
7
7
|
/**
|
|
8
8
|
* SignIn input
|
|
9
9
|
*/
|
|
10
|
-
@Restricted(RoleEnum.ADMIN)
|
|
11
10
|
@InputType({ description: 'Sign-in input' })
|
|
11
|
+
@Restricted(RoleEnum.ADMIN)
|
|
12
12
|
export class AuthSignInInput extends CoreAuthSignInInput {
|
|
13
13
|
// Extend UserInput here
|
|
14
14
|
}
|
|
@@ -7,18 +7,18 @@ import { CoreAuthSignUpInput } from '../../../../core/modules/auth/inputs/core-a
|
|
|
7
7
|
/**
|
|
8
8
|
* SignUp input
|
|
9
9
|
*/
|
|
10
|
-
@Restricted(RoleEnum.ADMIN)
|
|
11
10
|
@InputType({ description: 'Sign-up input' })
|
|
11
|
+
@Restricted(RoleEnum.ADMIN)
|
|
12
12
|
export class AuthSignUpInput extends CoreAuthSignUpInput {
|
|
13
13
|
// ===================================================================================================================
|
|
14
14
|
// Properties
|
|
15
15
|
// ===================================================================================================================
|
|
16
16
|
|
|
17
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
18
17
|
@Field({ description: 'firstName', nullable: true })
|
|
18
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
19
19
|
firstName: string = undefined;
|
|
20
20
|
|
|
21
|
-
@Restricted(RoleEnum.S_EVERYONE)
|
|
22
21
|
@Field({ description: 'lastName', nullable: true })
|
|
22
|
+
@Restricted(RoleEnum.S_EVERYONE)
|
|
23
23
|
lastName: string = undefined;
|
|
24
24
|
}
|
|
@@ -8,9 +8,9 @@ import { CoreFileInfo } from '../../../core/modules/file/core-file-info.model';
|
|
|
8
8
|
/**
|
|
9
9
|
* File info model
|
|
10
10
|
*/
|
|
11
|
-
@Restricted(RoleEnum.ADMIN)
|
|
12
|
-
@ObjectType({ description: 'Information about file' })
|
|
13
11
|
@MongooseSchema({ collection: 'fs.files' })
|
|
12
|
+
@ObjectType({ description: 'Information about file' })
|
|
13
|
+
@Restricted(RoleEnum.ADMIN)
|
|
14
14
|
export class FileInfo extends CoreFileInfo {}
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -19,8 +19,8 @@ import { FileService } from './file.service';
|
|
|
19
19
|
/**
|
|
20
20
|
* File controller for
|
|
21
21
|
*/
|
|
22
|
-
@Roles(RoleEnum.ADMIN)
|
|
23
22
|
@Controller('files')
|
|
23
|
+
@Roles(RoleEnum.ADMIN)
|
|
24
24
|
export class FileController {
|
|
25
25
|
/**
|
|
26
26
|
* Import services
|
|
@@ -30,8 +30,8 @@ export class FileController {
|
|
|
30
30
|
/**
|
|
31
31
|
* Upload file
|
|
32
32
|
*/
|
|
33
|
-
@Roles(RoleEnum.ADMIN)
|
|
34
33
|
@Post('upload')
|
|
34
|
+
@Roles(RoleEnum.ADMIN)
|
|
35
35
|
@UseInterceptors(FileInterceptor('file'))
|
|
36
36
|
uploadFile(@UploadedFile() file: Express.Multer.File): any {
|
|
37
37
|
return file;
|
|
@@ -40,8 +40,8 @@ export class FileController {
|
|
|
40
40
|
/**
|
|
41
41
|
* Download file
|
|
42
42
|
*/
|
|
43
|
-
@Roles(RoleEnum.ADMIN)
|
|
44
43
|
@Get(':id')
|
|
44
|
+
@Roles(RoleEnum.ADMIN)
|
|
45
45
|
async getFile(@Param('id') id: string, @Res() res) {
|
|
46
46
|
if (!id) {
|
|
47
47
|
throw new BadRequestException('Missing ID');
|
|
@@ -67,8 +67,8 @@ export class FileController {
|
|
|
67
67
|
/**
|
|
68
68
|
* Get file information
|
|
69
69
|
*/
|
|
70
|
-
@Roles(RoleEnum.ADMIN)
|
|
71
70
|
@Get('info/:id')
|
|
71
|
+
@Roles(RoleEnum.ADMIN)
|
|
72
72
|
async getFileInfo(@Param('id') id: string) {
|
|
73
73
|
return await this.fileService.getFileInfo(id);
|
|
74
74
|
}
|
|
@@ -76,8 +76,8 @@ export class FileController {
|
|
|
76
76
|
/**
|
|
77
77
|
* Delete file
|
|
78
78
|
*/
|
|
79
|
-
@Roles(RoleEnum.ADMIN)
|
|
80
79
|
@Delete(':id')
|
|
80
|
+
@Roles(RoleEnum.ADMIN)
|
|
81
81
|
async deleteFile(@Param('id') id: string) {
|
|
82
82
|
if (!id) {
|
|
83
83
|
throw new BadRequestException('Missing ID');
|
|
@@ -4,8 +4,8 @@ import { createWriteStream } from 'fs';
|
|
|
4
4
|
import { Roles } from '../../../core/common/decorators/roles.decorator';
|
|
5
5
|
import { RoleEnum } from '../../../core/common/enums/role.enum';
|
|
6
6
|
import { FileUpload } from '../../../core/modules/file/interfaces/file-upload.interface';
|
|
7
|
-
import { FileService } from './file.service';
|
|
8
7
|
import { FileInfo } from './file-info.model';
|
|
8
|
+
import { FileService } from './file.service';
|
|
9
9
|
|
|
10
10
|
import fs = require('fs');
|
|
11
11
|
import GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
|
|
@@ -28,8 +28,8 @@ export class FileResolver {
|
|
|
28
28
|
/**
|
|
29
29
|
* Get file info
|
|
30
30
|
*/
|
|
31
|
-
@Roles(RoleEnum.ADMIN)
|
|
32
31
|
@Query(() => FileInfo, { nullable: true })
|
|
32
|
+
@Roles(RoleEnum.ADMIN)
|
|
33
33
|
async getFileInfo(@Args({ name: 'filename', type: () => String }) filename: string) {
|
|
34
34
|
return await this.fileService.getFileInfoByName(filename);
|
|
35
35
|
}
|
|
@@ -41,8 +41,8 @@ export class FileResolver {
|
|
|
41
41
|
/**
|
|
42
42
|
* Delete file
|
|
43
43
|
*/
|
|
44
|
-
@Roles(RoleEnum.ADMIN)
|
|
45
44
|
@Mutation(() => FileInfo)
|
|
45
|
+
@Roles(RoleEnum.ADMIN)
|
|
46
46
|
async deleteFile(@Args({ name: 'filename', type: () => String }) filename: string) {
|
|
47
47
|
return await this.fileService.deleteFileByName(filename);
|
|
48
48
|
}
|
|
@@ -50,8 +50,8 @@ export class FileResolver {
|
|
|
50
50
|
/**
|
|
51
51
|
* Upload file
|
|
52
52
|
*/
|
|
53
|
-
@Roles(RoleEnum.ADMIN)
|
|
54
53
|
@Mutation(() => FileInfo)
|
|
54
|
+
@Roles(RoleEnum.ADMIN)
|
|
55
55
|
async uploadFile(@Args({ name: 'file', type: () => GraphQLUpload }) file: FileUpload) {
|
|
56
56
|
return await this.fileService.createFile(file);
|
|
57
57
|
}
|
|
@@ -59,8 +59,8 @@ export class FileResolver {
|
|
|
59
59
|
/**
|
|
60
60
|
* Upload files
|
|
61
61
|
*/
|
|
62
|
-
@Roles(RoleEnum.ADMIN)
|
|
63
62
|
@Mutation(() => Boolean)
|
|
63
|
+
@Roles(RoleEnum.ADMIN)
|
|
64
64
|
async uploadFiles(@Args({ name: 'files', type: () => [GraphQLUpload] }) files: FileUpload[]) {
|
|
65
65
|
// Save files in filesystem
|
|
66
66
|
const promises: Promise<any>[] = [];
|
|
@@ -13,8 +13,8 @@ import { UserService } from './user.service';
|
|
|
13
13
|
/**
|
|
14
14
|
* Controller for avatar
|
|
15
15
|
*/
|
|
16
|
-
@Roles(RoleEnum.ADMIN)
|
|
17
16
|
@Controller('avatar')
|
|
17
|
+
@Roles(RoleEnum.ADMIN)
|
|
18
18
|
export class AvatarController {
|
|
19
19
|
/**
|
|
20
20
|
* Import services
|
|
@@ -24,8 +24,8 @@ export class AvatarController {
|
|
|
24
24
|
/**
|
|
25
25
|
* Upload files
|
|
26
26
|
*/
|
|
27
|
-
@Roles(RoleEnum.S_USER)
|
|
28
27
|
@Post('upload')
|
|
28
|
+
@Roles(RoleEnum.S_USER)
|
|
29
29
|
@UseInterceptors(
|
|
30
30
|
FileInterceptor(
|
|
31
31
|
'file',
|
|
@@ -7,8 +7,8 @@ import { CoreUserCreateInput } from '../../../../core/modules/user/inputs/core-u
|
|
|
7
7
|
/**
|
|
8
8
|
* User input to create a new user
|
|
9
9
|
*/
|
|
10
|
-
@Restricted(RoleEnum.ADMIN)
|
|
11
10
|
@InputType({ description: 'User input to create a new user' })
|
|
11
|
+
@Restricted(RoleEnum.ADMIN)
|
|
12
12
|
export class UserCreateInput extends CoreUserCreateInput {
|
|
13
13
|
// Extend UserCreateInput here
|
|
14
14
|
}
|
|
@@ -7,8 +7,8 @@ import { CoreUserInput } from '../../../../core/modules/user/inputs/core-user.in
|
|
|
7
7
|
/**
|
|
8
8
|
* User input to update a user
|
|
9
9
|
*/
|
|
10
|
-
@Restricted(RoleEnum.ADMIN)
|
|
11
10
|
@InputType({ description: 'User input' })
|
|
11
|
+
@Restricted(RoleEnum.ADMIN)
|
|
12
12
|
export class UserInput extends CoreUserInput {
|
|
13
13
|
// Extend UserInput here
|
|
14
14
|
}
|