rez_core 6.5.33 → 6.5.35

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 (27) hide show
  1. package/dist/module/dashboard/service/dashboard.service.js +1 -1
  2. package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
  3. package/dist/module/module/controller/menu.controller.js +2 -2
  4. package/dist/module/module/controller/menu.controller.js.map +1 -1
  5. package/dist/module/module/controller/module-access.controller.js +3 -3
  6. package/dist/module/module/controller/module-access.controller.js.map +1 -1
  7. package/dist/module/module/repository/menu.repository.d.ts +3 -3
  8. package/dist/module/module/repository/menu.repository.js +30 -10
  9. package/dist/module/module/repository/menu.repository.js.map +1 -1
  10. package/dist/module/module/repository/module-access.repository.d.ts +1 -1
  11. package/dist/module/module/repository/module-access.repository.js +11 -3
  12. package/dist/module/module/repository/module-access.repository.js.map +1 -1
  13. package/dist/module/module/service/menu.service.d.ts +1 -1
  14. package/dist/module/module/service/menu.service.js +4 -4
  15. package/dist/module/module/service/menu.service.js.map +1 -1
  16. package/dist/module/module/service/module-access.service.d.ts +2 -2
  17. package/dist/module/module/service/module-access.service.js +3 -3
  18. package/dist/module/module/service/module-access.service.js.map +1 -1
  19. package/dist/tsconfig.build.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/src/module/dashboard/service/dashboard.service.ts +1 -1
  22. package/src/module/module/controller/menu.controller.ts +2 -2
  23. package/src/module/module/controller/module-access.controller.ts +3 -3
  24. package/src/module/module/repository/menu.repository.ts +35 -10
  25. package/src/module/module/repository/module-access.repository.ts +12 -3
  26. package/src/module/module/service/menu.service.ts +4 -4
  27. package/src/module/module/service/module-access.service.ts +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rez_core",
3
- "version": "6.5.33",
3
+ "version": "6.5.35",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "private": false,
@@ -17,7 +17,7 @@ export class DashboardService {
17
17
 
18
18
  const access = await this.moduleAccessService.getUserPermissions({
19
19
  userId: loggedInUser.id,
20
- app_id: loggedInUser.app_id,
20
+ appcode: loggedInUser.appcode,
21
21
  level_type: loggedInUser.level_type,
22
22
  level_id: loggedInUser.level_id
23
23
  });
@@ -9,7 +9,7 @@ export class MenuController {
9
9
  @UseGuards(JwtAuthGuard)
10
10
  @Get()
11
11
  async getMenu(@Request() req) {
12
- const { id: userId, app_id, level_type, level_id } = req.user.userData;
13
- return this.menuService.getUserMenu(userId, app_id, level_type, level_id);
12
+ const { id: userId, appcode, level_type, level_id } = req.user.userData;
13
+ return this.menuService.getUserMenu(userId, appcode, level_type, level_id);
14
14
  }
15
15
  }
@@ -120,17 +120,17 @@ export class ModuleAccessController {
120
120
  const userData = req.user.userData;
121
121
 
122
122
  const userId = userData?.id;
123
- const app_id = userData?.app_id;
123
+ const appcode = userData?.appcode;
124
124
  const level_type = userData?.level_type;
125
125
  const level_id = userData?.level_id;
126
126
 
127
- if (!userId || !app_id || !level_type || !level_id) {
127
+ if (!userId || !appcode || !level_type || !level_id) {
128
128
  throw new BadRequestException('Invalid token data');
129
129
  }
130
130
 
131
131
  return this.moduleAccessService.getUserPermissions({
132
132
  userId,
133
- app_id,
133
+ appcode,
134
134
  level_type,
135
135
  level_id
136
136
  });
@@ -34,15 +34,22 @@ export class MenuRepository extends Repository<MenuData> {
34
34
 
35
35
  async getAccessibleModules(
36
36
  roleIds: number[],
37
- app_id: number,
37
+ appcode: string,
38
38
  ): Promise<number[]> {
39
39
 
40
+ const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
41
+ const appMaster = await appMasterRepo.findOne({
42
+ where: {
43
+ code: appcode
44
+ }
45
+ });
46
+
40
47
  const modules = await this.moduleAccessRepo
41
48
  .createQueryBuilder('moduleAccess')
42
49
  .select('moduleAccess.module_id')
43
50
  .where('moduleAccess.role_id IN (:...roleIds)', { roleIds })
44
51
  .andWhere('moduleAccess.access_flag > 0')
45
- .andWhere('moduleAccess.app_id = :app_id', { app_id: app_id })
52
+ .andWhere('moduleAccess.app_id = :app_id', { app_id: appMaster.id })
46
53
  .getMany();
47
54
 
48
55
  return Array.from(new Set(modules.map((module) => module.module_id)));
@@ -53,22 +60,30 @@ export class MenuRepository extends Repository<MenuData> {
53
60
  */
54
61
  async getMenuItems(
55
62
  modules: number[],
56
- app_id: number,
63
+ appcode: string,
57
64
  levelType: string,
58
65
  ) {
66
+ const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
67
+
68
+ const appMaster = await appMasterRepo.findOne({
69
+ where: {
70
+ code: appcode
71
+ }
72
+ })
73
+
59
74
  return await this.menuData
60
75
  .createQueryBuilder('menu')
61
76
  .leftJoin(
62
77
  'sso_module',
63
78
  'module',
64
79
  `
65
- menu.module_code = module.module_code
80
+ menu.module_id = module.id
66
81
  AND menu.app_id = module.app_id
67
82
  AND menu.level_type = module.level_type
68
83
  `,
69
84
  )
70
85
  .where('menu.module_id IN (:...modules)', { modules: modules })
71
- .andWhere('menu.app_id = :app_id', { app_id: app_id })
86
+ .andWhere('menu.app_id = :app_id', { app_id: appMaster.id })
72
87
  .andWhere('menu.level_type = :levelType', { levelType })
73
88
  .andWhere('menu.ui_visible = 1')
74
89
  .select([
@@ -83,10 +98,18 @@ export class MenuRepository extends Repository<MenuData> {
83
98
 
84
99
  async resolveUserRoles(
85
100
  userId: number,
86
- app_id: number,
101
+ appcode: string,
87
102
  levelType: string,
88
103
  levelId: number,
89
104
  ): Promise<number[]> {
105
+ const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
106
+
107
+ const appMaster = await appMasterRepo.findOne({
108
+ where: {
109
+ code: appcode
110
+ }
111
+ })
112
+
90
113
  const repo = this.reflectionHelper.getRepoService('UserRoleMapping');
91
114
 
92
115
  if (userId) {
@@ -102,7 +125,9 @@ export class MenuRepository extends Repository<MenuData> {
102
125
  const getUserUrm = await repo.findOne({
103
126
  where: {
104
127
  user_id: userId,
105
- app_id: app_id,
128
+ app: {
129
+ code: appcode
130
+ },
106
131
  },
107
132
  });
108
133
 
@@ -123,7 +148,7 @@ export class MenuRepository extends Repository<MenuData> {
123
148
  .where('urm.user_id = :userId', { userId: userId })
124
149
  .andWhere('urm.level_type = :levelType', { levelType })
125
150
  .andWhere('urm.level_id = :levelId', { levelId: levelId })
126
- .andWhere('role.app_id = :app_id', { app_id: app_id })
151
+ .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
127
152
  .getRawMany();
128
153
 
129
154
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -148,7 +173,7 @@ export class MenuRepository extends Repository<MenuData> {
148
173
  .where('urm.user_id = :userId', { userId })
149
174
  .andWhere('urm.level_type = :levelType', { levelType: 'BRN' })
150
175
  .andWhere('urm.level_id = :levelId', { levelId: brandId })
151
- .andWhere('role.app_id = :app_id', { app_id: app_id })
176
+ .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
152
177
  .getRawMany();
153
178
 
154
179
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -162,7 +187,7 @@ export class MenuRepository extends Repository<MenuData> {
162
187
  .where('urm.user_id = :userId', { userId })
163
188
  .andWhere('urm.level_type = :levelType', { levelType: 'ORG' })
164
189
  .andWhere('urm.level_id = :levelId', { levelId: orgId })
165
- .andWhere('role.app_id = :app_id', { app_id: app_id })
190
+ .andWhere('role.app_id = :app_id', { app_id: appMaster.id })
166
191
  .getRawMany();
167
192
 
168
193
  if (roles.length) return roles.map((r) => r.urm_role_id);
@@ -342,12 +342,14 @@ export class ModuleAccessRepository {
342
342
  };
343
343
  }
344
344
 
345
- async getModuleAccessByRoles(roleIds: number[], app_id: number) {
345
+ async getModuleAccessByRoles(roleIds: number[], appcode: string) {
346
346
  // Step 1: Get role codes from sso_role
347
347
  const roles = await this.roleRepo.find({
348
348
  where: {
349
349
  id: In(roleIds),
350
- app_id,
350
+ app: {
351
+ code: appcode
352
+ },
351
353
  },
352
354
  select: ['id', 'code'],
353
355
  });
@@ -355,6 +357,13 @@ export class ModuleAccessRepository {
355
357
  const roleCodes = roles.map((r) => r.code);
356
358
  if (!roleCodes.length) return [];
357
359
 
360
+ const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
361
+ const appMaster =await appMasterRepo.findOne({
362
+ where: {
363
+ code: appcode
364
+ }
365
+ })
366
+
358
367
  // Step 2: Fetch full access data
359
368
  const accessRecords = await this.moduleAccessRepo
360
369
  .createQueryBuilder('access')
@@ -366,7 +375,7 @@ export class ModuleAccessRepository {
366
375
  'access.appcode AS appcode',
367
376
  ])
368
377
  .where('access.role_code IN (:...roleCodes)', { roleCodes })
369
- .andWhere('access.app_id = :app_id', { app_id })
378
+ .andWhere('access.app_id = :app_id', { app_id: appMaster.id })
370
379
  .getRawMany();
371
380
 
372
381
  // Step 3: Format output
@@ -14,14 +14,14 @@ export class MenuService {
14
14
  */
15
15
  async getUserMenu(
16
16
  userId: number,
17
- app_id: number,
17
+ appcode: string,
18
18
  levelType: 'ORG' | 'SCH',
19
19
  levelId: number,
20
20
  ): Promise<{ menu: any[] }> {
21
21
  // Step 1: Resolve roles (with fallback logic inside)
22
22
  const roleCodes = await this.menuRepository.resolveUserRoles(
23
23
  userId,
24
- app_id,
24
+ appcode,
25
25
  levelType,
26
26
  levelId,
27
27
  );
@@ -30,14 +30,14 @@ export class MenuService {
30
30
  // Step 2: Get accessible modules
31
31
  const modules = await this.menuRepository.getAccessibleModules(
32
32
  roleCodes,
33
- app_id,
33
+ appcode,
34
34
  );
35
35
  if (!modules.length) return { menu: [] };
36
36
 
37
37
  // Step 3: Get menu items for the given level type
38
38
  const menuItems = await this.menuRepository.getMenuItems(
39
39
  modules,
40
- app_id,
40
+ appcode,
41
41
  levelType,
42
42
  );
43
43
 
@@ -125,19 +125,19 @@ export class ModuleAccessService {
125
125
 
126
126
  async getUserPermissions({
127
127
  userId,
128
- app_id,
128
+ appcode,
129
129
  level_type,
130
130
  level_id,
131
131
  }: {
132
132
  userId: number;
133
- app_id: number;
133
+ appcode: string;
134
134
  level_type: string;
135
135
  level_id: number;
136
136
  }) {
137
137
  // Step 1: Resolve roles
138
138
  const roleCodes = await this.menuRepository.resolveUserRoles(
139
139
  userId,
140
- app_id,
140
+ appcode,
141
141
  level_type,
142
142
  level_id,
143
143
  );
@@ -152,7 +152,7 @@ export class ModuleAccessService {
152
152
  const allPermissions =
153
153
  await this.moduleAccessRepository.getModuleAccessByRoles(
154
154
  roleIds,
155
- app_id,
155
+ appcode,
156
156
  );
157
157
 
158
158
  // Step 3: If level_type is SCH, check school status using raw query