rez_core 6.5.1 → 6.5.3
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/app.module.js +1 -1
- package/dist/app.module.js.map +1 -1
- package/dist/config/database.config.js +1 -1
- package/dist/config/database.config.js.map +1 -1
- package/dist/constant/status.constant.d.ts +4 -0
- package/dist/constant/status.constant.js +9 -0
- package/dist/constant/status.constant.js.map +1 -0
- package/dist/core.module.js +60 -38
- package/dist/core.module.js.map +1 -1
- package/dist/module/auth/strategies/jwt.strategy.d.ts +1 -1
- package/dist/module/auth/strategies/jwt.strategy.js +2 -2
- package/dist/module/auth/strategies/jwt.strategy.js.map +1 -1
- package/dist/module/dashboard/dashboard.module.js +1 -1
- package/dist/module/dashboard/dashboard.module.js.map +1 -1
- package/dist/module/dashboard/service/dashboard.service.js +2 -3
- package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
- package/dist/module/enterprise/controller/organization.controller.d.ts +1 -3
- package/dist/module/enterprise/controller/organization.controller.js +2 -6
- package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
- package/dist/module/enterprise/enterprise.module.js +1 -3
- package/dist/module/enterprise/enterprise.module.js.map +1 -1
- package/dist/module/enterprise/entity/organization-app-mapping.entity.d.ts +1 -0
- package/dist/module/enterprise/entity/organization-app-mapping.entity.js +4 -0
- package/dist/module/enterprise/entity/organization-app-mapping.entity.js.map +1 -1
- package/dist/module/enterprise/entity/organization.entity.d.ts +2 -1
- package/dist/module/enterprise/entity/organization.entity.js +4 -2
- package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
- package/dist/module/enterprise/repository/enterprise.repository.d.ts +2 -0
- package/dist/module/enterprise/repository/enterprise.repository.js +10 -0
- package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
- package/dist/module/enterprise/service/organization.service.d.ts +2 -2
- package/dist/module/enterprise/service/organization.service.js +4 -4
- package/dist/module/enterprise/service/organization.service.js.map +1 -1
- package/dist/module/filter/service/filter.service.js +2 -2
- package/dist/module/filter/service/filter.service.js.map +1 -1
- package/dist/module/layout/controller/layout.controller.d.ts +1 -3
- package/dist/module/layout/controller/layout.controller.js +3 -7
- package/dist/module/layout/controller/layout.controller.js.map +1 -1
- package/dist/module/layout/entity/header-section.entity.d.ts +0 -2
- package/dist/module/layout/entity/header-section.entity.js +0 -8
- package/dist/module/layout/entity/header-section.entity.js.map +1 -1
- package/dist/module/layout/layout.module.js +1 -2
- package/dist/module/layout/layout.module.js.map +1 -1
- package/dist/module/layout/repository/header-section.repository.d.ts +0 -1
- package/dist/module/layout/repository/header-section.repository.js +0 -5
- package/dist/module/layout/repository/header-section.repository.js.map +1 -1
- package/dist/module/layout/service/header-section.service.d.ts +1 -1
- package/dist/module/layout/service/header-section.service.js +1 -1
- package/dist/module/layout/service/header-section.service.js.map +1 -1
- package/dist/module/listmaster/service/list-master.service.js +1 -8
- package/dist/module/listmaster/service/list-master.service.js.map +1 -1
- package/dist/module/meta/entity/app-master.entity.d.ts +8 -4
- package/dist/module/meta/entity/app-master.entity.js +30 -12
- package/dist/module/meta/entity/app-master.entity.js.map +1 -1
- package/dist/module/meta/repository/app-master.repository.js +1 -1
- package/dist/module/meta/repository/app-master.repository.js.map +1 -1
- package/dist/module/meta/service/attribute-master.service.js +0 -2
- package/dist/module/meta/service/attribute-master.service.js.map +1 -1
- package/dist/module/meta/service/entity-service-impl.service.js +2 -6
- package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
- package/dist/module/module/controller/menu.controller.js +2 -2
- package/dist/module/module/controller/menu.controller.js.map +1 -1
- package/dist/module/module/controller/module-access.controller.d.ts +5 -6
- package/dist/module/module/controller/module-access.controller.js +33 -28
- package/dist/module/module/controller/module-access.controller.js.map +1 -1
- package/dist/module/module/entity/menu.entity.d.ts +6 -2
- package/dist/module/module/entity/menu.entity.js +19 -7
- package/dist/module/module/entity/menu.entity.js.map +1 -1
- package/dist/module/module/entity/module-access.entity.d.ts +15 -0
- package/dist/module/module/entity/module-access.entity.js +50 -0
- package/dist/module/module/entity/module-access.entity.js.map +1 -1
- package/dist/module/module/entity/module-action.entity.d.ts +4 -1
- package/dist/module/module/entity/module-action.entity.js +12 -3
- package/dist/module/module/entity/module-action.entity.js.map +1 -1
- package/dist/module/module/entity/module.entity.d.ts +3 -5
- package/dist/module/module/entity/module.entity.js +8 -18
- package/dist/module/module/entity/module.entity.js.map +1 -1
- package/dist/module/module/module.module.d.ts +1 -1
- package/dist/module/module/module.module.js +7 -9
- package/dist/module/module/module.module.js.map +1 -1
- package/dist/module/module/repository/menu.repository.d.ts +4 -4
- package/dist/module/module/repository/menu.repository.js +17 -27
- package/dist/module/module/repository/menu.repository.js.map +1 -1
- package/dist/module/module/repository/module-access.repository.d.ts +11 -12
- package/dist/module/module/repository/module-access.repository.js +37 -40
- package/dist/module/module/repository/module-access.repository.js.map +1 -1
- package/dist/module/module/service/menu.service.d.ts +3 -5
- package/dist/module/module/service/menu.service.js +9 -12
- package/dist/module/module/service/menu.service.js.map +1 -1
- package/dist/module/module/service/module-access.service.d.ts +13 -17
- package/dist/module/module/service/module-access.service.js +17 -25
- package/dist/module/module/service/module-access.service.js.map +1 -1
- package/dist/module/notification/service/otp.service.js.map +1 -1
- package/dist/module/user/controller/user.controller.d.ts +0 -2
- package/dist/module/user/controller/user.controller.js +0 -13
- package/dist/module/user/controller/user.controller.js.map +1 -1
- package/dist/module/user/dto/create-user.dto.d.ts +6 -3
- package/dist/module/user/dto/create-user.dto.js +17 -11
- package/dist/module/user/dto/create-user.dto.js.map +1 -1
- package/dist/module/user/entity/role.entity.d.ts +19 -6
- package/dist/module/user/entity/role.entity.js +68 -19
- package/dist/module/user/entity/role.entity.js.map +1 -1
- package/dist/module/user/entity/user-role-mapping.entity.d.ts +10 -0
- package/dist/module/user/entity/user-role-mapping.entity.js +33 -1
- package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
- package/dist/module/user/entity/user.entity.d.ts +19 -5
- package/dist/module/user/entity/user.entity.js +69 -15
- package/dist/module/user/entity/user.entity.js.map +1 -1
- package/dist/module/user/repository/role.repository.d.ts +5 -2
- package/dist/module/user/repository/role.repository.js +13 -8
- package/dist/module/user/repository/role.repository.js.map +1 -1
- package/dist/module/user/repository/user.repository.d.ts +3 -2
- package/dist/module/user/repository/user.repository.js +9 -6
- package/dist/module/user/repository/user.repository.js.map +1 -1
- package/dist/module/user/service/login.service.d.ts +3 -5
- package/dist/module/user/service/login.service.js +37 -42
- package/dist/module/user/service/login.service.js.map +1 -1
- package/dist/module/user/service/role.service.d.ts +21 -11
- package/dist/module/user/service/role.service.js +32 -38
- package/dist/module/user/service/role.service.js.map +1 -1
- package/dist/module/user/service/user-session.service.d.ts +1 -1
- package/dist/module/user/service/user-session.service.js +4 -4
- package/dist/module/user/service/user-session.service.js.map +1 -1
- package/dist/module/user/service/user.service.d.ts +28 -20
- package/dist/module/user/service/user.service.js +41 -56
- package/dist/module/user/service/user.service.js.map +1 -1
- package/dist/module/user/user.module.js +1 -5
- package/dist/module/user/user.module.js.map +1 -1
- package/dist/module/workflow/repository/action-data.repository.d.ts +1 -1
- package/dist/module/workflow/repository/action-data.repository.js +6 -8
- package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
- package/dist/module/workflow/repository/action.repository.d.ts +1 -1
- package/dist/module/workflow/repository/action.repository.js +10 -10
- package/dist/module/workflow/repository/action.repository.js.map +1 -1
- package/dist/module/workflow/repository/form-master.repository.d.ts +1 -1
- package/dist/module/workflow/repository/form-master.repository.js +2 -2
- package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
- package/dist/module/workflow/service/action-data.service.js +1 -2
- package/dist/module/workflow/service/action-data.service.js.map +1 -1
- package/dist/module/workflow/service/action.service.js +2 -2
- package/dist/module/workflow/service/action.service.js.map +1 -1
- package/dist/module/workflow/service/comm-template.service.js +0 -2
- package/dist/module/workflow/service/comm-template.service.js.map +1 -1
- package/dist/module/workflow/service/entity-modification.service.js +0 -1
- package/dist/module/workflow/service/entity-modification.service.js.map +1 -1
- package/dist/module/workflow/service/form-master.service.js +2 -2
- package/dist/module/workflow/service/form-master.service.js.map +1 -1
- package/dist/module/workflow/service/task.service.js +0 -3
- package/dist/module/workflow/service/task.service.js.map +1 -1
- package/dist/module/workflow/service/workflow-meta.service.js +2 -7
- package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
- package/dist/module/workflow/service/workflow.service.js +2 -2
- package/dist/module/workflow/service/workflow.service.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation.service.js +1 -4
- package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js +0 -2
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -1
- package/dist/table.config.d.ts +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/app.module.ts +3 -3
- package/src/config/database.config.ts +1 -1
- package/src/constant/status.constant.ts +4 -0
- package/src/core.module.ts +55 -44
- package/src/module/auth/strategies/jwt.strategy.ts +2 -2
- package/src/module/dashboard/dashboard.module.ts +3 -3
- package/src/module/dashboard/service/dashboard.service.ts +2 -3
- package/src/module/enterprise/controller/organization.controller.ts +0 -1
- package/src/module/enterprise/enterprise.module.ts +1 -2
- package/src/module/enterprise/entity/organization-app-mapping.entity.ts +4 -1
- package/src/module/enterprise/entity/organization.entity.ts +5 -3
- package/src/module/enterprise/repository/enterprise.repository.ts +14 -0
- package/src/module/enterprise/service/organization.service.ts +1 -1
- package/src/module/filter/service/filter.service.ts +2 -3
- package/src/module/layout/controller/layout.controller.ts +1 -8
- package/src/module/layout/entity/header-section.entity.ts +0 -6
- package/src/module/layout/layout.module.ts +1 -1
- package/src/module/layout/repository/header-section.repository.ts +0 -6
- package/src/module/layout/service/header-section.service.ts +1 -1
- package/src/module/listmaster/service/list-master.service.ts +1 -9
- package/src/module/meta/entity/app-master.entity.ts +22 -9
- package/src/module/meta/repository/app-master.repository.ts +1 -1
- package/src/module/meta/service/attribute-master.service.ts +0 -2
- package/src/module/meta/service/entity-service-impl.service.ts +2 -6
- package/src/module/module/controller/menu.controller.ts +2 -2
- package/src/module/module/controller/module-access.controller.ts +25 -20
- package/src/module/module/entity/menu.entity.ts +17 -7
- package/src/module/module/entity/module-access.entity.ts +41 -1
- package/src/module/module/entity/module-action.entity.ts +11 -4
- package/src/module/module/entity/module.entity.ts +7 -14
- package/src/module/module/module.module.ts +3 -4
- package/src/module/module/repository/menu.repository.ts +19 -31
- package/src/module/module/repository/module-access.repository.ts +43 -47
- package/src/module/module/service/menu.service.ts +11 -13
- package/src/module/module/service/module-access.service.ts +24 -40
- package/src/module/notification/service/otp.service.ts +3 -2
- package/src/module/user/controller/user.controller.ts +0 -9
- package/src/module/user/dto/create-user.dto.ts +19 -6
- package/src/module/user/entity/role.entity.ts +62 -16
- package/src/module/user/entity/user-role-mapping.entity.ts +29 -3
- package/src/module/user/entity/user.entity.ts +54 -13
- package/src/module/user/repository/role.repository.ts +19 -11
- package/src/module/user/repository/user.repository.ts +10 -6
- package/src/module/user/service/login.service.ts +38 -50
- package/src/module/user/service/role.service.ts +40 -60
- package/src/module/user/service/user-session.service.ts +4 -4
- package/src/module/user/service/user.service.ts +59 -91
- package/src/module/user/user.module.ts +3 -4
- package/src/module/workflow/repository/action-data.repository.ts +6 -8
- package/src/module/workflow/repository/action.repository.ts +11 -11
- package/src/module/workflow/repository/form-master.repository.ts +2 -2
- package/src/module/workflow/service/action-data.service.ts +3 -2
- package/src/module/workflow/service/action.service.ts +2 -2
- package/src/module/workflow/service/comm-template.service.ts +0 -2
- package/src/module/workflow/service/entity-modification.service.ts +0 -1
- package/src/module/workflow/service/form-master.service.ts +2 -2
- package/src/module/workflow/service/task.service.ts +0 -3
- package/src/module/workflow/service/workflow-meta.service.ts +2 -7
- package/src/module/workflow/service/workflow.service.ts +2 -2
- package/src/module/workflow-automation/service/workflow-automation.service.ts +1 -4
- package/src/module/workflow-schedule/service/workflow-schedule.service.ts +0 -2
- package/src/resources/dev.properties.yaml +2 -2
- package/.claude/settings.local.json +0 -26
- package/.idea/250218_nodejs_core.iml +0 -9
- package/.idea/codeStyles/Project.xml +0 -59
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/copilot.data.migration.agent.xml +0 -6
- package/.idea/copilot.data.migration.ask.xml +0 -6
- package/.idea/copilot.data.migration.ask2agent.xml +0 -6
- package/.idea/copilot.data.migration.edit.xml +0 -6
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -6
- package/.idea/vcs.xml +0 -6
- package/server.log +0 -850
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { ENTITYTYPE_USRROLMAP } from 'src/constant/global.constant';
|
|
2
|
-
import {
|
|
2
|
+
import { EnterpriseData } from 'src/module/enterprise/entity/enterprise.entity';
|
|
3
|
+
import { AppMaster } from 'src/module/meta/entity/app-master.entity';
|
|
4
|
+
import { Column, Entity, JoinColumn, ManyToMany, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
|
5
|
+
import { UserData } from './user.entity';
|
|
6
|
+
import { Role } from './role.entity';
|
|
3
7
|
|
|
4
8
|
@Entity({ name: 'sso_user_role_mapping' })
|
|
5
9
|
export class UserRoleMapping {
|
|
@@ -15,21 +19,43 @@ export class UserRoleMapping {
|
|
|
15
19
|
@Column({ type: 'varchar', nullable: true })
|
|
16
20
|
entity_type: string;
|
|
17
21
|
|
|
18
|
-
@Column({
|
|
22
|
+
@Column({type: 'bigint'})
|
|
19
23
|
user_id: number;
|
|
20
24
|
|
|
21
|
-
@
|
|
25
|
+
@ManyToOne(() => UserData, {nullable: true, onDelete: 'SET NULL'})
|
|
26
|
+
@JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
|
|
27
|
+
user: UserData;
|
|
28
|
+
|
|
29
|
+
@Column({type: 'bigint', nullable: true})
|
|
22
30
|
role_id: number;
|
|
23
31
|
|
|
32
|
+
@ManyToOne(() => Role, {nullable: true, onDelete: 'SET NULL'})
|
|
33
|
+
@JoinColumn({ name: 'role_id', referencedColumnName: 'id' })
|
|
34
|
+
role: Role;
|
|
35
|
+
|
|
24
36
|
@Column({ type: 'int', nullable: true })
|
|
25
37
|
organization_id: number;
|
|
26
38
|
|
|
39
|
+
@Column({ name: 'enterprise_id', nullable: true })
|
|
40
|
+
enterprise_id: number;
|
|
41
|
+
|
|
42
|
+
@ManyToOne(() => EnterpriseData, {nullable: true, onDelete: 'SET NULL'})
|
|
43
|
+
@JoinColumn({ name: 'enterprise_id', referencedColumnName: 'id' })
|
|
44
|
+
enterpriseData: EnterpriseData;
|
|
45
|
+
|
|
27
46
|
@Column({ type: 'int', nullable: true })
|
|
28
47
|
is_default: number;
|
|
29
48
|
|
|
30
49
|
@Column({ type: 'varchar', nullable: true })
|
|
31
50
|
appcode: string;
|
|
32
51
|
|
|
52
|
+
@Column({ type: 'int', nullable: true })
|
|
53
|
+
app_id: number;
|
|
54
|
+
|
|
55
|
+
@ManyToOne(() => AppMaster, {nullable: true, onDelete: 'SET NULL'})
|
|
56
|
+
@JoinColumn({ name: 'app_id', referencedColumnName: 'id' })
|
|
57
|
+
app: AppMaster;
|
|
58
|
+
|
|
33
59
|
@Column({ name: 'level_id', type: 'varchar', length: 100, nullable: true })
|
|
34
60
|
level_id: string;
|
|
35
61
|
|
|
@@ -1,13 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { EnterpriseData } from 'src/module/enterprise/entity/enterprise.entity';
|
|
2
|
+
import { AppMaster } from 'src/module/meta/entity/app-master.entity';
|
|
3
|
+
import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
|
4
4
|
|
|
5
5
|
@Entity({ name: 'sso_user' })
|
|
6
|
-
export class UserData
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export class UserData {
|
|
7
|
+
|
|
8
|
+
@PrimaryGeneratedColumn({ type: 'bigint' })
|
|
9
|
+
id: number;
|
|
10
|
+
|
|
11
|
+
@Column({ name: 'status', type: 'varchar', nullable: true, length: 100 })
|
|
12
|
+
status: string;
|
|
13
|
+
|
|
14
|
+
@Column({ name: 'code', type: 'varchar', length: 100, nullable: true })
|
|
15
|
+
code: string;
|
|
16
|
+
|
|
17
|
+
@Column({ name: 'created_by', type: 'bigint', nullable: true })
|
|
18
|
+
created_by: number;
|
|
19
|
+
|
|
20
|
+
@CreateDateColumn()
|
|
21
|
+
created_date: Date;
|
|
22
|
+
|
|
23
|
+
@Column({ name: 'modified_by', type: 'bigint', nullable: true })
|
|
24
|
+
modified_by: number;
|
|
25
|
+
|
|
26
|
+
@CreateDateColumn()
|
|
27
|
+
modified_date: Date;
|
|
28
|
+
|
|
29
|
+
@Column({ name: 'enterprise_id', type: 'int', nullable: true })
|
|
30
|
+
enterprise_id: number;
|
|
31
|
+
|
|
32
|
+
@ManyToOne(() => EnterpriseData, { nullable: true, onDelete: 'SET NULL' })
|
|
33
|
+
@JoinColumn({ name: 'enterprise_id', referencedColumnName: 'id' })
|
|
34
|
+
enterprise: EnterpriseData;
|
|
35
|
+
|
|
36
|
+
@Column({ name: 'level_id', type: 'varchar', length: 100, nullable: true })
|
|
37
|
+
level_id: string;
|
|
38
|
+
|
|
39
|
+
@Column({ name: 'level_type', type: 'varchar', length: 100, nullable: true })
|
|
40
|
+
level_type: string;
|
|
11
41
|
|
|
12
42
|
@Column({ type: 'varchar', length: 50, nullable: true })
|
|
13
43
|
first_name: string;
|
|
@@ -39,14 +69,15 @@ export class UserData extends BaseEntity {
|
|
|
39
69
|
@Column({ type: 'int', nullable: true })
|
|
40
70
|
is_customer: number;
|
|
41
71
|
|
|
42
|
-
@Column({ type: 'int', nullable: true })
|
|
43
|
-
organization_id: number;
|
|
44
|
-
|
|
45
72
|
@Column({ type: 'int', nullable: true })
|
|
46
73
|
is_factory: number;
|
|
47
74
|
|
|
48
|
-
@Column({ type: '
|
|
49
|
-
|
|
75
|
+
@Column({ name: 'last_app_access_id', type: 'int', nullable: true })
|
|
76
|
+
last_app_access_id: number;
|
|
77
|
+
|
|
78
|
+
@ManyToOne(() => AppMaster)
|
|
79
|
+
@JoinColumn({ name: 'last_app_access_id' })
|
|
80
|
+
last_app: AppMaster;
|
|
50
81
|
|
|
51
82
|
@Column({ type: 'varchar', nullable: true })
|
|
52
83
|
last_level_type: string;
|
|
@@ -59,4 +90,14 @@ export class UserData extends BaseEntity {
|
|
|
59
90
|
|
|
60
91
|
@Column({ type: 'varchar', nullable: true })
|
|
61
92
|
profile_image: string;
|
|
93
|
+
|
|
94
|
+
@Column({ type: 'varchar', nullable: true })
|
|
95
|
+
appcode: string;
|
|
96
|
+
|
|
97
|
+
@Column({ name: 'app_id', type: 'int', nullable: true })
|
|
98
|
+
app_id: number;
|
|
99
|
+
|
|
100
|
+
@ManyToOne(() => AppMaster, { nullable: true, onDelete: 'SET NULL' })
|
|
101
|
+
@JoinColumn({ name: 'app_id', referencedColumnName: 'id' })
|
|
102
|
+
app: AppMaster;
|
|
62
103
|
}
|
|
@@ -16,7 +16,7 @@ export class RoleRepository {
|
|
|
16
16
|
|
|
17
17
|
public async isRoleNameExists(
|
|
18
18
|
name: string,
|
|
19
|
-
options?: { excludeRoleId?: number;
|
|
19
|
+
options?: { excludeRoleId?: number; enterprise_id?: number },
|
|
20
20
|
): Promise<boolean> {
|
|
21
21
|
const query = this.roleRepo
|
|
22
22
|
.createQueryBuilder('role')
|
|
@@ -28,9 +28,9 @@ export class RoleRepository {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
if (options?.
|
|
32
|
-
query.andWhere('role.
|
|
33
|
-
|
|
31
|
+
if (options?.enterprise_id !== undefined) {
|
|
32
|
+
query.andWhere('role.enterprise_id = :enterprise_id', {
|
|
33
|
+
enterprise_id: options.enterprise_id,
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -53,11 +53,12 @@ export class RoleRepository {
|
|
|
53
53
|
* Confirm level_type and level_id correspond to existing org/school.
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
|
+
|
|
56
57
|
public async isRoleNameWithLevelExists(
|
|
57
58
|
name: string,
|
|
58
59
|
options?: {
|
|
59
60
|
excludeRoleId?: number;
|
|
60
|
-
|
|
61
|
+
enterprise_id?: number;
|
|
61
62
|
level_type?: string;
|
|
62
63
|
level_id?: number;
|
|
63
64
|
},
|
|
@@ -72,12 +73,6 @@ export class RoleRepository {
|
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
75
|
|
|
75
|
-
if (options?.organization_id !== undefined) {
|
|
76
|
-
query.andWhere('role.organization_id = :organization_id', {
|
|
77
|
-
organization_id: options.organization_id,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
76
|
if (options?.level_type) {
|
|
82
77
|
query.andWhere('role.level_type = :level_type', {
|
|
83
78
|
level_type: options.level_type,
|
|
@@ -93,4 +88,17 @@ export class RoleRepository {
|
|
|
93
88
|
const existingRole = await query.getOne();
|
|
94
89
|
return !!existingRole;
|
|
95
90
|
}
|
|
91
|
+
|
|
92
|
+
async findById(id: number) {
|
|
93
|
+
return this.roleRepo.findOne({ where: { id } });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async saveRole(role: Role) {
|
|
97
|
+
let entity = this.roleRepo.create(role);
|
|
98
|
+
return await this.roleRepo.save(entity);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async updateRole(id:number, role:Role) {
|
|
102
|
+
return await this.roleRepo.update(id, role);
|
|
103
|
+
}
|
|
96
104
|
}
|
|
@@ -15,27 +15,27 @@ export class UserRepository {
|
|
|
15
15
|
}
|
|
16
16
|
async findByEmailId(
|
|
17
17
|
email: string,
|
|
18
|
-
|
|
18
|
+
enterprise_id?: number,
|
|
19
19
|
): Promise<UserData | null> {
|
|
20
20
|
if (!email) return null;
|
|
21
21
|
|
|
22
22
|
const where: any = { email_id: email };
|
|
23
|
-
if (
|
|
24
|
-
where.
|
|
23
|
+
if (enterprise_id !== undefined) {
|
|
24
|
+
where.enterprise_id = enterprise_id;
|
|
25
25
|
}
|
|
26
26
|
return this.userRepository.findOne({ where });
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
async findByMobile(
|
|
30
30
|
mobile: string,
|
|
31
|
-
|
|
31
|
+
enterprise_id?: number,
|
|
32
32
|
appCode?: string,
|
|
33
33
|
): Promise<UserData | null> {
|
|
34
34
|
if (!mobile) return null;
|
|
35
35
|
|
|
36
36
|
const where: any = { mobile };
|
|
37
|
-
if (
|
|
38
|
-
where.
|
|
37
|
+
if (enterprise_id !== undefined) {
|
|
38
|
+
where.enterprise_id = enterprise_id;
|
|
39
39
|
}
|
|
40
40
|
if (appCode !== undefined) {
|
|
41
41
|
where.appcode = appCode;
|
|
@@ -47,4 +47,8 @@ export class UserRepository {
|
|
|
47
47
|
async saveUser(user: UserData): Promise<UserData> {
|
|
48
48
|
return this.userRepository.save(user);
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
async updateUser(id: number, user: UserData) {
|
|
52
|
+
return await this.userRepository.update(id, user);
|
|
53
|
+
}
|
|
50
54
|
}
|
|
@@ -2,8 +2,6 @@ import { BadRequestException, Inject, Injectable } from '@nestjs/common';
|
|
|
2
2
|
import { ConfigService } from '@nestjs/config';
|
|
3
3
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
4
4
|
import { INVITATION_STATUS_ACCEPTED, STATUS_ACTIVE } from 'src/constant/global.constant';
|
|
5
|
-
import { OrganizationRepository } from 'src/module/enterprise/repository/organization.repository';
|
|
6
|
-
import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
|
|
7
5
|
import { Repository } from 'typeorm';
|
|
8
6
|
import { EncryptUtilService } from '../../../utils/service/encryptUtil.service';
|
|
9
7
|
import { UserRoleMapping } from '../entity/user-role-mapping.entity';
|
|
@@ -11,6 +9,8 @@ import { UserSessionService } from './user-session.service';
|
|
|
11
9
|
import { UserService } from './user.service';
|
|
12
10
|
import { JwtAuthService } from 'src/module/auth/services/jwt.service';
|
|
13
11
|
import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
|
|
12
|
+
import { EnterpriseRepository } from 'src/module/enterprise/repository/enterprise.repository';
|
|
13
|
+
import { StatusConstant } from '../../../constant/status.constant';
|
|
14
14
|
|
|
15
15
|
@Injectable()
|
|
16
16
|
export class LoginService {
|
|
@@ -20,9 +20,7 @@ export class LoginService {
|
|
|
20
20
|
private configService: ConfigService,
|
|
21
21
|
@InjectRepository(UserRoleMapping)
|
|
22
22
|
private readonly userRoleMappingRepository: Repository<UserRoleMapping>,
|
|
23
|
-
private readonly
|
|
24
|
-
@Inject('ListMasterService')
|
|
25
|
-
private readonly listMasterService: ListMasterService,
|
|
23
|
+
private readonly enterpriseRepository: EnterpriseRepository,
|
|
26
24
|
private readonly jwtAuthService: JwtAuthService,
|
|
27
25
|
private readonly reflectionHelper: ReflectionHelper,
|
|
28
26
|
) {
|
|
@@ -39,18 +37,18 @@ export class LoginService {
|
|
|
39
37
|
}): Promise<any> {
|
|
40
38
|
const { email_id, password, is_otp = false, subdomain } = data;
|
|
41
39
|
|
|
42
|
-
let
|
|
40
|
+
let enterprise;
|
|
43
41
|
|
|
44
42
|
if (subdomain) {
|
|
45
|
-
|
|
46
|
-
await this.
|
|
43
|
+
enterprise =
|
|
44
|
+
await this.enterpriseRepository.findEnterpriseBySubdomain(
|
|
47
45
|
subdomain,
|
|
48
46
|
);
|
|
49
47
|
|
|
50
|
-
if (!
|
|
48
|
+
if (!enterprise) {
|
|
51
49
|
return {
|
|
52
50
|
success: false,
|
|
53
|
-
message: '
|
|
51
|
+
message: 'Enterprise not found.',
|
|
54
52
|
};
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -58,34 +56,29 @@ export class LoginService {
|
|
|
58
56
|
// 🔹 Step 2: Find the user by email + organization check
|
|
59
57
|
const user = await this.userService.findByEmailId(
|
|
60
58
|
email_id,
|
|
61
|
-
|
|
59
|
+
enterprise?.id,
|
|
62
60
|
);
|
|
63
61
|
|
|
64
|
-
if (!user || (
|
|
62
|
+
if (!user || (enterprise && user.enterprise_id !== enterprise.id)) {
|
|
65
63
|
return {
|
|
66
64
|
success: false,
|
|
67
|
-
message: 'User not found in
|
|
65
|
+
message: 'User not found in Enterprise.',
|
|
68
66
|
};
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
// 🔹 Step 3: Verify org status
|
|
72
|
-
const userOrgData = await this.
|
|
73
|
-
user.
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
const resolveStatus = await this.listMasterService.getResolvedListCode(
|
|
77
|
-
STATUS_ACTIVE,
|
|
78
|
-
user?.organization_id || 0,
|
|
70
|
+
const userOrgData = await this.enterpriseRepository.findById(
|
|
71
|
+
user.enterprise_id,
|
|
79
72
|
);
|
|
80
73
|
|
|
81
74
|
if (
|
|
82
|
-
user.status !=
|
|
83
|
-
userOrgData?.status !=
|
|
75
|
+
user.status != StatusConstant.ACTIVE ||
|
|
76
|
+
userOrgData?.status != StatusConstant.ACTIVE
|
|
84
77
|
) {
|
|
85
78
|
return {
|
|
86
79
|
success: false,
|
|
87
80
|
message:
|
|
88
|
-
'Your account or
|
|
81
|
+
'Your account or Enterprise is inactive. Please contact admin.',
|
|
89
82
|
};
|
|
90
83
|
}
|
|
91
84
|
|
|
@@ -107,16 +100,16 @@ export class LoginService {
|
|
|
107
100
|
}
|
|
108
101
|
|
|
109
102
|
// 🔹 Step 5: App access check
|
|
110
|
-
let
|
|
103
|
+
let app_id = user.last_app_access_id;
|
|
111
104
|
|
|
112
|
-
if (!user.
|
|
113
|
-
await this.userService.setDefaultLastAccess(user.id,
|
|
105
|
+
if (!user.last_app_access_id) {
|
|
106
|
+
await this.userService.setDefaultLastAccess(user.id, app_id);
|
|
114
107
|
}
|
|
115
108
|
|
|
116
109
|
const whereCondition: any = { user_id: user.id };
|
|
117
110
|
|
|
118
|
-
if (
|
|
119
|
-
whereCondition.
|
|
111
|
+
if (app_id) {
|
|
112
|
+
whereCondition.app_id = app_id;
|
|
120
113
|
}
|
|
121
114
|
|
|
122
115
|
const roleMappings = await this.userRoleMappingRepository.find({
|
|
@@ -137,33 +130,28 @@ export class LoginService {
|
|
|
137
130
|
user.id,
|
|
138
131
|
defaultAccess.level_type,
|
|
139
132
|
defaultAccess.level_id,
|
|
140
|
-
defaultAccess.
|
|
133
|
+
defaultAccess.app_id,
|
|
141
134
|
);
|
|
142
135
|
|
|
143
136
|
const token = await this.userSessionService.createSession(
|
|
144
137
|
user,
|
|
145
|
-
defaultAccess.
|
|
138
|
+
defaultAccess.app_id,
|
|
146
139
|
defaultAccess,
|
|
147
140
|
);
|
|
148
141
|
|
|
149
142
|
// 🔹 Step 7: Update first login + invitation status
|
|
150
|
-
const resolvedInvitationStatus =
|
|
151
|
-
await this.listMasterService.getResolvedListCode(
|
|
152
|
-
INVITATION_STATUS_ACCEPTED,
|
|
153
|
-
user?.organization_id || 0,
|
|
154
|
-
);
|
|
155
143
|
|
|
156
144
|
if (user.is_firstlogin === 1) {
|
|
157
|
-
user.invitation_status =
|
|
145
|
+
user.invitation_status = INVITATION_STATUS_ACCEPTED;
|
|
158
146
|
user.is_firstlogin = 0;
|
|
159
147
|
const { password, ...userWithoutPassword } = user;
|
|
160
|
-
await this.userService.
|
|
148
|
+
await this.userService.updateUser(user.id, userWithoutPassword, user);
|
|
161
149
|
}
|
|
162
150
|
|
|
163
151
|
// 🔹 Step 8: Return response
|
|
164
152
|
|
|
165
|
-
const org = await this.
|
|
166
|
-
user.
|
|
153
|
+
const org = await this.enterpriseRepository.findById(
|
|
154
|
+
user.enterprise_id,
|
|
167
155
|
);
|
|
168
156
|
let slug: string;
|
|
169
157
|
if (org) {
|
|
@@ -171,14 +159,14 @@ export class LoginService {
|
|
|
171
159
|
} else {
|
|
172
160
|
return {
|
|
173
161
|
success: false,
|
|
174
|
-
message: '
|
|
162
|
+
message: 'Enterprise not found for the user.',
|
|
175
163
|
};
|
|
176
164
|
}
|
|
177
165
|
|
|
178
166
|
return {
|
|
179
167
|
success: true,
|
|
180
168
|
accessToken: token,
|
|
181
|
-
|
|
169
|
+
app_id: defaultAccess.app_id,
|
|
182
170
|
level_type: defaultAccess.level_type,
|
|
183
171
|
level_id: defaultAccess.level_id,
|
|
184
172
|
slug: slug,
|
|
@@ -187,7 +175,7 @@ export class LoginService {
|
|
|
187
175
|
|
|
188
176
|
async formLogin(body: any): Promise<any> {
|
|
189
177
|
if (body) {
|
|
190
|
-
const {
|
|
178
|
+
const { entity_id } = body;
|
|
191
179
|
|
|
192
180
|
const leadRepo = this.reflectionHelper.getRepoService('CRMLead');
|
|
193
181
|
const entityData = await leadRepo.findOne({
|
|
@@ -197,12 +185,12 @@ export class LoginService {
|
|
|
197
185
|
if (entityData) {
|
|
198
186
|
const level_id = entityData.level_id;
|
|
199
187
|
const level_type = entityData.level_type;
|
|
200
|
-
const
|
|
188
|
+
const enterprise_id = entityData.enterprise_id;
|
|
201
189
|
|
|
202
190
|
const token = this.jwtAuthService.generateJwt({
|
|
203
191
|
level_id: level_id,
|
|
204
192
|
level_type: level_type,
|
|
205
|
-
|
|
193
|
+
enterprise_id: enterprise_id,
|
|
206
194
|
});
|
|
207
195
|
|
|
208
196
|
return {
|
|
@@ -216,7 +204,7 @@ export class LoginService {
|
|
|
216
204
|
private async getDefaultAccess(
|
|
217
205
|
user: any,
|
|
218
206
|
roleMappings: any[],
|
|
219
|
-
): Promise<{ level_type: string; level_id: string;
|
|
207
|
+
): Promise<{ level_type: string; level_id: string; app_id: number }> {
|
|
220
208
|
const orgAccess = roleMappings.find((r) => r.level_type === 'ORG');
|
|
221
209
|
const brnAccesses = roleMappings.filter((r) => r.level_type === 'BRN');
|
|
222
210
|
const schAccesses = roleMappings.filter((r) => r.level_type === 'SCH');
|
|
@@ -224,7 +212,7 @@ export class LoginService {
|
|
|
224
212
|
let validURM;
|
|
225
213
|
|
|
226
214
|
validURM = roleMappings.some(
|
|
227
|
-
(r) => r.level_type == 'ORG' && r.level_id == user.
|
|
215
|
+
(r) => r.level_type == 'ORG' && r.level_id == user.enterprise_id,
|
|
228
216
|
);
|
|
229
217
|
|
|
230
218
|
if (!validURM) {
|
|
@@ -239,7 +227,7 @@ export class LoginService {
|
|
|
239
227
|
return {
|
|
240
228
|
level_type: user.last_level_type,
|
|
241
229
|
level_id: user.last_level_id,
|
|
242
|
-
|
|
230
|
+
app_id: user.last_app_access_id,
|
|
243
231
|
};
|
|
244
232
|
}
|
|
245
233
|
|
|
@@ -247,7 +235,7 @@ export class LoginService {
|
|
|
247
235
|
return {
|
|
248
236
|
level_type: 'ORG',
|
|
249
237
|
level_id: orgAccess.level_id,
|
|
250
|
-
|
|
238
|
+
app_id: orgAccess.app_id,
|
|
251
239
|
};
|
|
252
240
|
}
|
|
253
241
|
|
|
@@ -269,7 +257,7 @@ export class LoginService {
|
|
|
269
257
|
return {
|
|
270
258
|
level_type: 'SCH',
|
|
271
259
|
level_id: rows.id,
|
|
272
|
-
|
|
260
|
+
app_id: brnAccesses[0].app_id,
|
|
273
261
|
};
|
|
274
262
|
} else {
|
|
275
263
|
throw new BadRequestException(
|
|
@@ -282,7 +270,7 @@ export class LoginService {
|
|
|
282
270
|
return {
|
|
283
271
|
level_type: 'SCH',
|
|
284
272
|
level_id: schAccesses[0].level_id,
|
|
285
|
-
|
|
273
|
+
app_id: schAccesses[0].app_id,
|
|
286
274
|
};
|
|
287
275
|
}
|
|
288
276
|
|
|
@@ -1,69 +1,59 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EntityServiceImpl } from '../../meta/service/entity-service-impl.service';
|
|
3
|
-
import { BaseEntity } from '../../meta/entity/base-entity.entity';
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
4
2
|
import { UserData } from '../entity/user.entity';
|
|
5
3
|
import { Role } from '../entity/role.entity';
|
|
6
|
-
import {
|
|
4
|
+
import { STATUS_ACTIVE, STATUS_INACTIVE } from 'src/constant/global.constant';
|
|
7
5
|
import { RoleRepository } from '../repository/role.repository';
|
|
8
|
-
import {
|
|
6
|
+
import { Repository } from 'typeorm';
|
|
9
7
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
10
8
|
import { ModuleAccess } from '../../module/entity/module-access.entity';
|
|
11
|
-
import { ServiceResult } from 'src/dtos/response';
|
|
12
|
-
import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
|
|
13
|
-
import { UserRoleMappingRepository } from '../repository/user-role-mapping.repository';
|
|
14
9
|
import { UserRoleMapping } from '../entity/user-role-mapping.entity';
|
|
10
|
+
import { plainToInstance } from 'class-transformer';
|
|
15
11
|
|
|
16
12
|
@Injectable()
|
|
17
|
-
export class RoleService
|
|
13
|
+
export class RoleService {
|
|
18
14
|
constructor(
|
|
19
15
|
private readonly roleRepository: RoleRepository,
|
|
20
|
-
private readonly entityManager: EntityManager,
|
|
21
16
|
@InjectRepository(ModuleAccess)
|
|
22
17
|
private readonly moduleAccessRepo: Repository<ModuleAccess>,
|
|
23
|
-
@Inject('ListMasterService')
|
|
24
|
-
private readonly listMasterService: ListMasterService,
|
|
25
18
|
@InjectRepository(UserRoleMapping)
|
|
26
19
|
private readonly userRoleMappingRepo: Repository<UserRoleMapping>,
|
|
27
20
|
) {
|
|
28
|
-
super();
|
|
29
21
|
}
|
|
30
22
|
|
|
31
|
-
async
|
|
32
|
-
|
|
23
|
+
async createRole(
|
|
24
|
+
role: Role,
|
|
33
25
|
loggedInUser: UserData,
|
|
34
|
-
)
|
|
35
|
-
const role = entityData as Role;
|
|
26
|
+
) {
|
|
36
27
|
|
|
37
28
|
// if level_type and level_id are not provided, use loggedInUser's values
|
|
38
|
-
role.level_type =
|
|
39
|
-
role.level_id =
|
|
40
|
-
role.
|
|
29
|
+
role.level_type = role.level_type || loggedInUser.level_type;
|
|
30
|
+
role.level_id = role.level_id || loggedInUser.level_id;
|
|
31
|
+
role.created_by = loggedInUser.id;
|
|
32
|
+
role.enterprise_id = loggedInUser.enterprise_id;
|
|
33
|
+
// role.appcode = role.appcode || loggedInUser.appcode;
|
|
41
34
|
|
|
42
35
|
if (
|
|
43
36
|
await this.roleRepository.isRoleNameWithLevelExists(role.name, {
|
|
44
|
-
|
|
45
|
-
level_type:
|
|
37
|
+
enterprise_id: loggedInUser.enterprise_id,
|
|
38
|
+
level_type: role.level_type || loggedInUser?.level_type,
|
|
46
39
|
level_id:
|
|
47
|
-
parseInt(
|
|
40
|
+
parseInt(role.level_id) ||
|
|
48
41
|
parseInt(loggedInUser?.level_id || '', 10),
|
|
49
42
|
})
|
|
50
43
|
) {
|
|
51
44
|
return { success: false, error: 'Role name already exists.' };
|
|
52
45
|
}
|
|
53
46
|
|
|
47
|
+
|
|
54
48
|
const sourceRole = role.copy_from_role_id
|
|
55
|
-
? await this.
|
|
56
|
-
ENTITYTYPE_ROLE,
|
|
57
|
-
role.copy_from_role_id,
|
|
58
|
-
loggedInUser,
|
|
59
|
-
)
|
|
49
|
+
? await this.roleRepository.findById(role.copy_from_role_id)
|
|
60
50
|
: null;
|
|
61
51
|
|
|
62
52
|
if (role.copy_from_role_id && !sourceRole) {
|
|
63
53
|
return { success: false, error: 'Source role not found.' };
|
|
64
54
|
}
|
|
65
|
-
|
|
66
|
-
const savedRole = await
|
|
55
|
+
role.status = STATUS_ACTIVE;
|
|
56
|
+
const savedRole = await this.roleRepository.saveRole(role);
|
|
67
57
|
if (sourceRole) {
|
|
68
58
|
const sourcePermissions = await this.moduleAccessRepo.find({
|
|
69
59
|
where: { role_code: sourceRole.code },
|
|
@@ -85,40 +75,31 @@ export class RoleService extends EntityServiceImpl {
|
|
|
85
75
|
return { success: true, data: savedRole };
|
|
86
76
|
}
|
|
87
77
|
|
|
88
|
-
async
|
|
89
|
-
|
|
78
|
+
async updateRole(
|
|
79
|
+
id: number,
|
|
80
|
+
role: Role,
|
|
90
81
|
loggedInUser: UserData,
|
|
91
|
-
)
|
|
92
|
-
if (!
|
|
82
|
+
) {
|
|
83
|
+
if (!role.name) {
|
|
93
84
|
return { success: false, error: 'Role name is required' };
|
|
94
85
|
}
|
|
95
|
-
const role = entityData as Role;
|
|
96
|
-
|
|
97
|
-
const resolveStatus = await this.listMasterService.getResolvedListCode(
|
|
98
|
-
STATUS_INACTIVE,
|
|
99
|
-
loggedInUser?.organization_id || 0,
|
|
100
|
-
);
|
|
101
86
|
|
|
102
|
-
if (
|
|
87
|
+
if (role.status == STATUS_INACTIVE) {
|
|
103
88
|
//get role by id
|
|
104
|
-
const existingRole = await this.
|
|
105
|
-
ENTITYTYPE_ROLE,
|
|
106
|
-
entityData.id,
|
|
107
|
-
loggedInUser,
|
|
108
|
-
);
|
|
89
|
+
const existingRole = await this.roleRepository.findById(id);
|
|
109
90
|
|
|
110
91
|
if (!existingRole) {
|
|
111
92
|
return { success: false, error: 'Role not found' };
|
|
112
93
|
}
|
|
113
94
|
|
|
114
95
|
const associatedUsers = await this.userRoleMappingRepo
|
|
115
|
-
.createQueryBuilder(
|
|
116
|
-
.innerJoin(
|
|
117
|
-
.where(
|
|
118
|
-
.andWhere(
|
|
96
|
+
.createQueryBuilder('map')
|
|
97
|
+
.innerJoin('sso_user', 'usr', 'map.user_id = usr.id')
|
|
98
|
+
.where('usr.status::text = :status', { status: STATUS_INACTIVE })
|
|
99
|
+
.andWhere('map.role_id::text = :roleId', {
|
|
119
100
|
roleId: String(existingRole?.id),
|
|
120
101
|
})
|
|
121
|
-
.select(
|
|
102
|
+
.select('map') // same as SELECT map.*
|
|
122
103
|
.getRawMany();
|
|
123
104
|
|
|
124
105
|
if (associatedUsers.length > 0) {
|
|
@@ -137,9 +118,9 @@ export class RoleService extends EntityServiceImpl {
|
|
|
137
118
|
}
|
|
138
119
|
|
|
139
120
|
if (
|
|
140
|
-
await this.roleRepository.isRoleNameExists(
|
|
141
|
-
excludeRoleId:
|
|
142
|
-
|
|
121
|
+
await this.roleRepository.isRoleNameExists(role.name, {
|
|
122
|
+
excludeRoleId: role.id,
|
|
123
|
+
enterprise_id: loggedInUser?.enterprise_id,
|
|
143
124
|
})
|
|
144
125
|
) {
|
|
145
126
|
return {
|
|
@@ -149,14 +130,13 @@ export class RoleService extends EntityServiceImpl {
|
|
|
149
130
|
}
|
|
150
131
|
|
|
151
132
|
const { copy_from_role_id, ...persistableData } = role;
|
|
152
|
-
|
|
133
|
+
|
|
134
|
+
const entity = plainToInstance(Role, persistableData);
|
|
135
|
+
const updatedRole = await this.roleRepository.updateRole(id, entity);
|
|
153
136
|
|
|
154
137
|
if (role.copy_from_role_id) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
role.copy_from_role_id,
|
|
158
|
-
loggedInUser,
|
|
159
|
-
);
|
|
138
|
+
|
|
139
|
+
const sourceRole = await this.roleRepository.findById(role.copy_from_role_id);
|
|
160
140
|
|
|
161
141
|
if (!sourceRole) {
|
|
162
142
|
return {
|