rez_core 6.5.2 → 6.5.5

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.
Files changed (232) hide show
  1. package/dist/app.module.js +1 -1
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/config/database.config.js +1 -1
  4. package/dist/config/database.config.js.map +1 -1
  5. package/dist/constant/status.constant.d.ts +4 -0
  6. package/dist/constant/status.constant.js +9 -0
  7. package/dist/constant/status.constant.js.map +1 -0
  8. package/dist/core.module.js +60 -38
  9. package/dist/core.module.js.map +1 -1
  10. package/dist/module/auth/strategies/jwt.strategy.d.ts +1 -1
  11. package/dist/module/auth/strategies/jwt.strategy.js +2 -2
  12. package/dist/module/auth/strategies/jwt.strategy.js.map +1 -1
  13. package/dist/module/dashboard/dashboard.module.js +1 -1
  14. package/dist/module/dashboard/dashboard.module.js.map +1 -1
  15. package/dist/module/dashboard/service/dashboard.service.js +2 -3
  16. package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
  17. package/dist/module/enterprise/controller/organization.controller.d.ts +1 -3
  18. package/dist/module/enterprise/controller/organization.controller.js +2 -6
  19. package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
  20. package/dist/module/enterprise/enterprise.module.js +1 -3
  21. package/dist/module/enterprise/enterprise.module.js.map +1 -1
  22. package/dist/module/enterprise/entity/organization.entity.d.ts +2 -1
  23. package/dist/module/enterprise/entity/organization.entity.js +4 -2
  24. package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
  25. package/dist/module/enterprise/repository/enterprise.repository.d.ts +2 -0
  26. package/dist/module/enterprise/repository/enterprise.repository.js +10 -0
  27. package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
  28. package/dist/module/enterprise/service/organization.service.d.ts +2 -2
  29. package/dist/module/enterprise/service/organization.service.js +4 -4
  30. package/dist/module/enterprise/service/organization.service.js.map +1 -1
  31. package/dist/module/filter/service/filter.service.js +2 -2
  32. package/dist/module/filter/service/filter.service.js.map +1 -1
  33. package/dist/module/layout/controller/layout.controller.d.ts +1 -3
  34. package/dist/module/layout/controller/layout.controller.js +3 -7
  35. package/dist/module/layout/controller/layout.controller.js.map +1 -1
  36. package/dist/module/layout/entity/header-section.entity.d.ts +0 -2
  37. package/dist/module/layout/entity/header-section.entity.js +0 -8
  38. package/dist/module/layout/entity/header-section.entity.js.map +1 -1
  39. package/dist/module/layout/layout.module.js +1 -2
  40. package/dist/module/layout/layout.module.js.map +1 -1
  41. package/dist/module/layout/repository/header-section.repository.d.ts +0 -1
  42. package/dist/module/layout/repository/header-section.repository.js +0 -5
  43. package/dist/module/layout/repository/header-section.repository.js.map +1 -1
  44. package/dist/module/layout/service/header-section.service.d.ts +1 -1
  45. package/dist/module/layout/service/header-section.service.js +1 -1
  46. package/dist/module/layout/service/header-section.service.js.map +1 -1
  47. package/dist/module/listmaster/service/list-master.service.js +1 -8
  48. package/dist/module/listmaster/service/list-master.service.js.map +1 -1
  49. package/dist/module/meta/entity/app-master.entity.d.ts +8 -4
  50. package/dist/module/meta/entity/app-master.entity.js +30 -12
  51. package/dist/module/meta/entity/app-master.entity.js.map +1 -1
  52. package/dist/module/meta/repository/app-master.repository.js +1 -1
  53. package/dist/module/meta/repository/app-master.repository.js.map +1 -1
  54. package/dist/module/meta/service/attribute-master.service.js +0 -2
  55. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  56. package/dist/module/meta/service/entity-service-impl.service.js +2 -6
  57. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
  58. package/dist/module/module/controller/menu.controller.js +2 -2
  59. package/dist/module/module/controller/menu.controller.js.map +1 -1
  60. package/dist/module/module/controller/module-access.controller.d.ts +5 -6
  61. package/dist/module/module/controller/module-access.controller.js +33 -28
  62. package/dist/module/module/controller/module-access.controller.js.map +1 -1
  63. package/dist/module/module/entity/menu.entity.d.ts +6 -2
  64. package/dist/module/module/entity/menu.entity.js +19 -7
  65. package/dist/module/module/entity/menu.entity.js.map +1 -1
  66. package/dist/module/module/entity/module-access.entity.d.ts +15 -0
  67. package/dist/module/module/entity/module-access.entity.js +50 -0
  68. package/dist/module/module/entity/module-access.entity.js.map +1 -1
  69. package/dist/module/module/entity/module-action.entity.d.ts +4 -1
  70. package/dist/module/module/entity/module-action.entity.js +12 -3
  71. package/dist/module/module/entity/module-action.entity.js.map +1 -1
  72. package/dist/module/module/entity/module.entity.d.ts +3 -5
  73. package/dist/module/module/entity/module.entity.js +8 -18
  74. package/dist/module/module/entity/module.entity.js.map +1 -1
  75. package/dist/module/module/module.module.d.ts +1 -1
  76. package/dist/module/module/module.module.js +7 -9
  77. package/dist/module/module/module.module.js.map +1 -1
  78. package/dist/module/module/repository/menu.repository.d.ts +4 -4
  79. package/dist/module/module/repository/menu.repository.js +17 -27
  80. package/dist/module/module/repository/menu.repository.js.map +1 -1
  81. package/dist/module/module/repository/module-access.repository.d.ts +11 -12
  82. package/dist/module/module/repository/module-access.repository.js +37 -40
  83. package/dist/module/module/repository/module-access.repository.js.map +1 -1
  84. package/dist/module/module/service/menu.service.d.ts +3 -5
  85. package/dist/module/module/service/menu.service.js +9 -12
  86. package/dist/module/module/service/menu.service.js.map +1 -1
  87. package/dist/module/module/service/module-access.service.d.ts +13 -17
  88. package/dist/module/module/service/module-access.service.js +17 -25
  89. package/dist/module/module/service/module-access.service.js.map +1 -1
  90. package/dist/module/notification/service/otp.service.js.map +1 -1
  91. package/dist/module/user/controller/user.controller.d.ts +0 -2
  92. package/dist/module/user/controller/user.controller.js +0 -13
  93. package/dist/module/user/controller/user.controller.js.map +1 -1
  94. package/dist/module/user/dto/create-user.dto.d.ts +6 -3
  95. package/dist/module/user/dto/create-user.dto.js +17 -11
  96. package/dist/module/user/dto/create-user.dto.js.map +1 -1
  97. package/dist/module/user/entity/role.entity.d.ts +19 -6
  98. package/dist/module/user/entity/role.entity.js +68 -19
  99. package/dist/module/user/entity/role.entity.js.map +1 -1
  100. package/dist/module/user/entity/user-role-mapping.entity.d.ts +10 -0
  101. package/dist/module/user/entity/user-role-mapping.entity.js +33 -1
  102. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  103. package/dist/module/user/entity/user.entity.d.ts +19 -5
  104. package/dist/module/user/entity/user.entity.js +69 -15
  105. package/dist/module/user/entity/user.entity.js.map +1 -1
  106. package/dist/module/user/repository/role.repository.d.ts +5 -2
  107. package/dist/module/user/repository/role.repository.js +13 -8
  108. package/dist/module/user/repository/role.repository.js.map +1 -1
  109. package/dist/module/user/repository/user.repository.d.ts +3 -2
  110. package/dist/module/user/repository/user.repository.js +9 -6
  111. package/dist/module/user/repository/user.repository.js.map +1 -1
  112. package/dist/module/user/service/login.service.d.ts +3 -5
  113. package/dist/module/user/service/login.service.js +37 -42
  114. package/dist/module/user/service/login.service.js.map +1 -1
  115. package/dist/module/user/service/role.service.d.ts +21 -11
  116. package/dist/module/user/service/role.service.js +32 -38
  117. package/dist/module/user/service/role.service.js.map +1 -1
  118. package/dist/module/user/service/user-session.service.d.ts +1 -1
  119. package/dist/module/user/service/user-session.service.js +4 -4
  120. package/dist/module/user/service/user-session.service.js.map +1 -1
  121. package/dist/module/user/service/user.service.d.ts +28 -20
  122. package/dist/module/user/service/user.service.js +41 -56
  123. package/dist/module/user/service/user.service.js.map +1 -1
  124. package/dist/module/user/user.module.js +1 -5
  125. package/dist/module/user/user.module.js.map +1 -1
  126. package/dist/module/workflow/repository/action-data.repository.d.ts +1 -1
  127. package/dist/module/workflow/repository/action-data.repository.js +6 -8
  128. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  129. package/dist/module/workflow/repository/action.repository.d.ts +1 -1
  130. package/dist/module/workflow/repository/action.repository.js +10 -10
  131. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  132. package/dist/module/workflow/repository/form-master.repository.d.ts +1 -1
  133. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  134. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  135. package/dist/module/workflow/service/action-data.service.js +1 -2
  136. package/dist/module/workflow/service/action-data.service.js.map +1 -1
  137. package/dist/module/workflow/service/action.service.js +2 -2
  138. package/dist/module/workflow/service/action.service.js.map +1 -1
  139. package/dist/module/workflow/service/comm-template.service.js +0 -2
  140. package/dist/module/workflow/service/comm-template.service.js.map +1 -1
  141. package/dist/module/workflow/service/entity-modification.service.js +0 -1
  142. package/dist/module/workflow/service/entity-modification.service.js.map +1 -1
  143. package/dist/module/workflow/service/form-master.service.js +2 -2
  144. package/dist/module/workflow/service/form-master.service.js.map +1 -1
  145. package/dist/module/workflow/service/task.service.js +0 -3
  146. package/dist/module/workflow/service/task.service.js.map +1 -1
  147. package/dist/module/workflow/service/workflow-meta.service.js +2 -7
  148. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  149. package/dist/module/workflow/service/workflow.service.js +2 -2
  150. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  151. package/dist/module/workflow-automation/service/workflow-automation.service.js +1 -4
  152. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  153. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +0 -2
  154. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -1
  155. package/dist/table.config.d.ts +2 -2
  156. package/dist/tsconfig.build.tsbuildinfo +1 -1
  157. package/package.json +1 -1
  158. package/src/app.module.ts +3 -3
  159. package/src/config/database.config.ts +1 -1
  160. package/src/constant/status.constant.ts +4 -0
  161. package/src/core.module.ts +55 -44
  162. package/src/module/auth/strategies/jwt.strategy.ts +2 -2
  163. package/src/module/dashboard/dashboard.module.ts +3 -3
  164. package/src/module/dashboard/service/dashboard.service.ts +2 -3
  165. package/src/module/enterprise/controller/organization.controller.ts +0 -1
  166. package/src/module/enterprise/enterprise.module.ts +1 -2
  167. package/src/module/enterprise/entity/organization.entity.ts +5 -3
  168. package/src/module/enterprise/repository/enterprise.repository.ts +14 -0
  169. package/src/module/enterprise/service/organization.service.ts +1 -1
  170. package/src/module/filter/service/filter.service.ts +2 -3
  171. package/src/module/layout/controller/layout.controller.ts +1 -8
  172. package/src/module/layout/entity/header-section.entity.ts +0 -6
  173. package/src/module/layout/layout.module.ts +1 -1
  174. package/src/module/layout/repository/header-section.repository.ts +0 -6
  175. package/src/module/layout/service/header-section.service.ts +1 -1
  176. package/src/module/listmaster/service/list-master.service.ts +1 -9
  177. package/src/module/meta/entity/app-master.entity.ts +22 -9
  178. package/src/module/meta/repository/app-master.repository.ts +1 -1
  179. package/src/module/meta/service/attribute-master.service.ts +0 -2
  180. package/src/module/meta/service/entity-service-impl.service.ts +2 -6
  181. package/src/module/module/controller/menu.controller.ts +2 -2
  182. package/src/module/module/controller/module-access.controller.ts +25 -20
  183. package/src/module/module/entity/menu.entity.ts +17 -7
  184. package/src/module/module/entity/module-access.entity.ts +41 -1
  185. package/src/module/module/entity/module-action.entity.ts +11 -4
  186. package/src/module/module/entity/module.entity.ts +7 -14
  187. package/src/module/module/module.module.ts +3 -4
  188. package/src/module/module/repository/menu.repository.ts +19 -31
  189. package/src/module/module/repository/module-access.repository.ts +43 -47
  190. package/src/module/module/service/menu.service.ts +11 -13
  191. package/src/module/module/service/module-access.service.ts +24 -40
  192. package/src/module/notification/service/otp.service.ts +3 -2
  193. package/src/module/user/controller/user.controller.ts +0 -9
  194. package/src/module/user/dto/create-user.dto.ts +19 -6
  195. package/src/module/user/entity/role.entity.ts +62 -16
  196. package/src/module/user/entity/user-role-mapping.entity.ts +29 -3
  197. package/src/module/user/entity/user.entity.ts +54 -13
  198. package/src/module/user/repository/role.repository.ts +19 -11
  199. package/src/module/user/repository/user.repository.ts +10 -6
  200. package/src/module/user/service/login.service.ts +38 -50
  201. package/src/module/user/service/role.service.ts +40 -60
  202. package/src/module/user/service/user-session.service.ts +4 -4
  203. package/src/module/user/service/user.service.ts +59 -91
  204. package/src/module/user/user.module.ts +3 -4
  205. package/src/module/workflow/repository/action-data.repository.ts +6 -8
  206. package/src/module/workflow/repository/action.repository.ts +11 -11
  207. package/src/module/workflow/repository/form-master.repository.ts +2 -2
  208. package/src/module/workflow/service/action-data.service.ts +3 -2
  209. package/src/module/workflow/service/action.service.ts +2 -2
  210. package/src/module/workflow/service/comm-template.service.ts +0 -2
  211. package/src/module/workflow/service/entity-modification.service.ts +0 -1
  212. package/src/module/workflow/service/form-master.service.ts +2 -2
  213. package/src/module/workflow/service/task.service.ts +0 -3
  214. package/src/module/workflow/service/workflow-meta.service.ts +2 -7
  215. package/src/module/workflow/service/workflow.service.ts +2 -2
  216. package/src/module/workflow-automation/service/workflow-automation.service.ts +1 -4
  217. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +0 -2
  218. package/src/resources/dev.properties.yaml +2 -2
  219. package/.claude/settings.local.json +0 -26
  220. package/.idea/250218_nodejs_core.iml +0 -9
  221. package/.idea/codeStyles/Project.xml +0 -59
  222. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  223. package/.idea/copilot.data.migration.agent.xml +0 -6
  224. package/.idea/copilot.data.migration.ask.xml +0 -6
  225. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  226. package/.idea/copilot.data.migration.edit.xml +0 -6
  227. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  228. package/.idea/misc.xml +0 -6
  229. package/.idea/modules.xml +0 -8
  230. package/.idea/prettier.xml +0 -6
  231. package/.idea/vcs.xml +0 -6
  232. package/server.log +0 -850
@@ -1,5 +1,9 @@
1
1
  import { ENTITYTYPE_USRROLMAP } from 'src/constant/global.constant';
2
- import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
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({ type: 'bigint', nullable: true })
22
+ @Column({type: 'bigint'})
19
23
  user_id: number;
20
24
 
21
- @Column({ type: 'bigint', nullable: true })
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 { Column, Entity } from 'typeorm';
2
- import { ENTITYTYPE_USER } from '../../../constant/global.constant';
3
- import { BaseEntity } from '../../meta/entity/base-entity.entity';
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 extends BaseEntity {
7
- constructor() {
8
- super();
9
- this.entity_type = ENTITYTYPE_USER;
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: 'varchar', nullable: true })
49
- last_app_access: string;
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; organization_id?: 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?.organization_id !== undefined) {
32
- query.andWhere('role.organization_id = :organization_id', {
33
- organization_id: options.organization_id,
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
- organization_id?: number;
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
- organization_id?: number,
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 (organization_id !== undefined) {
24
- where.organization_id = organization_id;
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
- organization_id?: number,
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 (organization_id !== undefined) {
38
- where.organization_id = organization_id;
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 organizationRepository: OrganizationRepository,
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 organization;
40
+ let enterprise;
43
41
 
44
42
  if (subdomain) {
45
- organization =
46
- await this.organizationRepository.findOrganizationBySubdomain(
43
+ enterprise =
44
+ await this.enterpriseRepository.findEnterpriseBySubdomain(
47
45
  subdomain,
48
46
  );
49
47
 
50
- if (!organization) {
48
+ if (!enterprise) {
51
49
  return {
52
50
  success: false,
53
- message: 'Organization not found.',
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
- organization?.id,
59
+ enterprise?.id,
62
60
  );
63
61
 
64
- if (!user || (organization && user.organization_id !== organization.id)) {
62
+ if (!user || (enterprise && user.enterprise_id !== enterprise.id)) {
65
63
  return {
66
64
  success: false,
67
- message: 'User not found in organization.',
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.organizationRepository.findOrganizationById(
73
- user.organization_id,
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 != resolveStatus.id ||
83
- userOrgData?.status != resolveStatus.id
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 organization is inactive. Please contact admin.',
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 appcode = user.last_app_access;
103
+ let app_id = user.last_app_access_id;
111
104
 
112
- if (!user.last_app_access || user.last_app_access == '') {
113
- await this.userService.setDefaultLastAccess(user.id, appcode);
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 (appcode && appcode !== '') {
119
- whereCondition.appcode = appcode;
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.appcode,
133
+ defaultAccess.app_id,
141
134
  );
142
135
 
143
136
  const token = await this.userSessionService.createSession(
144
137
  user,
145
- defaultAccess.appcode,
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 = resolvedInvitationStatus.id;
145
+ user.invitation_status = INVITATION_STATUS_ACCEPTED;
158
146
  user.is_firstlogin = 0;
159
147
  const { password, ...userWithoutPassword } = user;
160
- await this.userService.updateEntity(userWithoutPassword, user);
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.organizationRepository.findOrganizationById(
166
- user.organization_id,
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: 'Organization not found for the user.',
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
- appcode: defaultAccess.appcode,
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 { entity_type, entity_id } = body;
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 organization_id = entityData.organization_id;
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
- organization_id: organization_id,
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; appcode: 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.organization_id,
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
- appcode: user.last_app_access,
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
- appcode: orgAccess.appcode,
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
- appcode: brnAccesses[0].appcode,
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
- appcode: schAccesses[0].appcode,
273
+ app_id: schAccesses[0].app_id,
286
274
  };
287
275
  }
288
276
 
@@ -1,69 +1,59 @@
1
- import { BadRequestException, Inject, Injectable } from '@nestjs/common';
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 { ENTITYTYPE_ROLE, STATUS_INACTIVE } from 'src/constant/global.constant';
4
+ import { STATUS_ACTIVE, STATUS_INACTIVE } from 'src/constant/global.constant';
7
5
  import { RoleRepository } from '../repository/role.repository';
8
- import { EntityManager, Repository } from 'typeorm';
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 extends EntityServiceImpl {
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 createEntity(
32
- entityData: BaseEntity,
23
+ async createRole(
24
+ role: Role,
33
25
  loggedInUser: UserData,
34
- ): Promise<ServiceResult<BaseEntity>> {
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 = entityData.level_type || loggedInUser.level_type;
39
- role.level_id = entityData.level_id || loggedInUser.level_id;
40
- role.appcode = entityData.appcode || loggedInUser.appcode;
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
- organization_id: loggedInUser?.organization_id || undefined,
45
- level_type: entityData.level_type || loggedInUser?.level_type,
37
+ enterprise_id: loggedInUser.enterprise_id,
38
+ level_type: role.level_type || loggedInUser?.level_type,
46
39
  level_id:
47
- parseInt(entityData.level_id) ||
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.getEntityData(
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 super.createEntity(role, loggedInUser);
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 updateEntity(
89
- entityData: BaseEntity,
78
+ async updateRole(
79
+ id: number,
80
+ role: Role,
90
81
  loggedInUser: UserData,
91
- ): Promise<ServiceResult<BaseEntity>> {
92
- if (!entityData.name) {
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 (entityData.status == resolveStatus.id) {
87
+ if (role.status == STATUS_INACTIVE) {
103
88
  //get role by id
104
- const existingRole = await this.getEntityData(
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("map")
116
- .innerJoin("sso_user", "usr", "map.user_id = usr.id")
117
- .where("usr.status::text = :status", { status: String(resolveStatus.id) })
118
- .andWhere("map.role_id::text = :roleId", {
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("map") // same as SELECT map.*
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(entityData.name, {
141
- excludeRoleId: entityData.id,
142
- organization_id: loggedInUser?.organization_id,
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
- const updatedRole = await super.updateEntity(persistableData, loggedInUser);
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
- const sourceRole = await this.getEntityData(
156
- ENTITYTYPE_ROLE,
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 {