rez_core 2.0.0 → 2.0.2
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/module/enterprise/entity/enterprise.entity.d.ts +1 -1
- package/dist/module/enterprise/entity/enterprise.entity.js +2 -2
- package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -1
- package/dist/module/enterprise/entity/organization.entity.d.ts +1 -1
- package/dist/module/enterprise/entity/organization.entity.js +2 -2
- package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
- package/dist/module/filter/entity/saved-filter-master.entity.d.ts +0 -1
- package/dist/module/filter/entity/saved-filter-master.entity.js +0 -4
- package/dist/module/filter/entity/saved-filter-master.entity.js.map +1 -1
- package/dist/module/master/service/master.service.js +31 -15
- package/dist/module/master/service/master.service.js.map +1 -1
- package/dist/module/meta/controller/entity.controller.d.ts +1 -1
- package/dist/module/meta/controller/entity.controller.js +14 -11
- package/dist/module/meta/controller/entity.controller.js.map +1 -1
- package/dist/module/meta/entity/entity-table-column.entity.d.ts +0 -1
- package/dist/module/meta/entity/entity-table-column.entity.js +0 -4
- package/dist/module/meta/entity/entity-table-column.entity.js.map +1 -1
- package/dist/module/meta/entity/entity-table.entity.d.ts +0 -1
- package/dist/module/meta/entity/entity-table.entity.js +0 -4
- package/dist/module/meta/entity/entity-table.entity.js.map +1 -1
- package/dist/module/meta/service/entity-list.service.d.ts +2 -2
- package/dist/module/meta/service/entity-list.service.js +18 -7
- package/dist/module/meta/service/entity-list.service.js.map +1 -1
- package/dist/module/meta/service/entity-service-impl.service.d.ts +3 -3
- package/dist/module/meta/service/entity-service-impl.service.js +4 -4
- package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
- package/dist/module/meta/service/entity.service.d.ts +2 -2
- package/dist/module/module/controller/menu.controller.js +2 -1
- package/dist/module/module/controller/menu.controller.js.map +1 -1
- package/dist/module/module/controller/module-access.controller.d.ts +5 -5
- package/dist/module/module/controller/module-access.controller.js +30 -17
- package/dist/module/module/controller/module-access.controller.js.map +1 -1
- package/dist/module/module/entity/menu.entity.d.ts +1 -0
- package/dist/module/module/entity/menu.entity.js +4 -0
- package/dist/module/module/entity/menu.entity.js.map +1 -1
- package/dist/module/module/entity/module-access.entity.d.ts +1 -1
- package/dist/module/module/entity/module-access.entity.js +1 -1
- package/dist/module/module/entity/module-access.entity.js.map +1 -1
- package/dist/module/module/entity/module.entity.d.ts +1 -0
- package/dist/module/module/entity/module.entity.js +4 -0
- package/dist/module/module/entity/module.entity.js.map +1 -1
- package/dist/module/module/repository/menu.repository.d.ts +3 -3
- package/dist/module/module/repository/menu.repository.js +12 -8
- package/dist/module/module/repository/menu.repository.js.map +1 -1
- package/dist/module/module/repository/module-access.repository.d.ts +10 -6
- package/dist/module/module/repository/module-access.repository.js +45 -29
- package/dist/module/module/repository/module-access.repository.js.map +1 -1
- package/dist/module/module/service/menu.service.d.ts +1 -1
- package/dist/module/module/service/menu.service.js +4 -4
- package/dist/module/module/service/menu.service.js.map +1 -1
- package/dist/module/module/service/module-access.service.d.ts +9 -5
- package/dist/module/module/service/module-access.service.js +12 -10
- package/dist/module/module/service/module-access.service.js.map +1 -1
- package/dist/module/user/dto/create-user.dto.d.ts +1 -0
- package/dist/module/user/dto/create-user.dto.js.map +1 -1
- package/dist/module/user/entity/role.entity.d.ts +0 -1
- package/dist/module/user/entity/role.entity.js +0 -4
- package/dist/module/user/entity/role.entity.js.map +1 -1
- package/dist/module/user/entity/user-role-mapping.entity.d.ts +1 -0
- package/dist/module/user/entity/user-role-mapping.entity.js +4 -0
- package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
- package/dist/module/user/service/role.service.d.ts +1 -1
- package/dist/module/user/service/role.service.js +6 -3
- package/dist/module/user/service/role.service.js.map +1 -1
- package/dist/module/user/service/user.service.d.ts +1 -1
- package/dist/module/user/service/user.service.js +4 -1
- package/dist/module/user/service/user.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/module/enterprise/entity/enterprise.entity.ts +2 -2
- package/src/module/enterprise/entity/organization.entity.ts +2 -2
- package/src/module/filter/entity/saved-filter-master.entity.ts +0 -3
- package/src/module/master/service/master.service.ts +31 -15
- package/src/module/meta/controller/entity.controller.ts +27 -12
- package/src/module/meta/entity/entity-table-column.entity.ts +1 -2
- package/src/module/meta/entity/entity-table.entity.ts +0 -2
- package/src/module/meta/service/entity-list.service.ts +29 -7
- package/src/module/meta/service/entity-service-impl.service.ts +29 -17
- package/src/module/meta/service/entity.service.ts +2 -1
- package/src/module/module/controller/menu.controller.ts +2 -1
- package/src/module/module/controller/module-access.controller.ts +49 -22
- package/src/module/module/entity/menu.entity.ts +3 -0
- package/src/module/module/entity/module-access.entity.ts +1 -1
- package/src/module/module/entity/module.entity.ts +3 -0
- package/src/module/module/repository/menu.repository.ts +48 -43
- package/src/module/module/repository/module-access.repository.ts +69 -50
- package/src/module/module/service/menu.service.ts +4 -4
- package/src/module/module/service/module-access.service.ts +15 -13
- package/src/module/user/dto/create-user.dto.ts +1 -0
- package/src/module/user/entity/role.entity.ts +0 -3
- package/src/module/user/entity/user-role-mapping.entity.ts +3 -0
- package/src/module/user/service/role.service.ts +7 -3
- package/src/module/user/service/user.service.ts +4 -0
|
@@ -14,59 +14,64 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
14
14
|
/**
|
|
15
15
|
* Get all role IDs assigned to a user.
|
|
16
16
|
*/
|
|
17
|
-
async getUserRoles(userId: number): Promise<number[]> {
|
|
17
|
+
async getUserRoles(userId: number, appcode: string): Promise<number[]> {
|
|
18
18
|
const roles = await this.dataSource
|
|
19
19
|
.getRepository(UserRoleMapping)
|
|
20
|
-
.createQueryBuilder('
|
|
21
|
-
.
|
|
22
|
-
.
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
.createQueryBuilder('urm')
|
|
21
|
+
.innerJoin('cr_role', 'role', 'role.id = urm.role_id') // manual join
|
|
22
|
+
.select('urm.role_id')
|
|
23
|
+
.where('urm.user_id = :userId', { userId })
|
|
24
|
+
.andWhere('role.appcode = :appcode', { appcode })
|
|
25
|
+
.getRawMany();
|
|
26
|
+
|
|
27
|
+
return roles. map((r) => r.urm_role_id);
|
|
26
28
|
}
|
|
29
|
+
|
|
27
30
|
|
|
28
31
|
/**
|
|
29
32
|
* Get module codes that the user has access to based on their role IDs.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.getMany();
|
|
33
|
+
*/async getAccessibleModules(roleIds: number[], appCode: string): Promise<string[]> {
|
|
34
|
+
// Get role codes from role IDs
|
|
35
|
+
const roleCodes = await this.dataSource
|
|
36
|
+
.getRepository(Role)
|
|
37
|
+
.createQueryBuilder('role')
|
|
38
|
+
.select('role.code')
|
|
39
|
+
.where('role.id IN (:...roleIds)', { roleIds })
|
|
40
|
+
.getMany();
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
const codes = roleCodes.map((role) => role.code);
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
if (codes.length === 0) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
// Get accessible modules using role codes and appCode
|
|
49
|
+
const modules = await this.dataSource
|
|
50
|
+
.getRepository(ModuleAccess)
|
|
51
|
+
.createQueryBuilder('moduleAccess')
|
|
52
|
+
.select('moduleAccess.module_code')
|
|
53
|
+
.where('moduleAccess.role_code IN (:...codes)', { codes })
|
|
54
|
+
.andWhere('moduleAccess.access_flag > 0')
|
|
55
|
+
.andWhere('LOWER(moduleAccess.appcode) = LOWER(:appCode)', { appCode }) // case-insensitive
|
|
56
|
+
.getMany();
|
|
54
57
|
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
return modules.map((module) => module.module_code);
|
|
59
|
+
}
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
async getMenuItems(moduleCodes: string[], appcode: string): Promise<MenuData[]> {
|
|
62
|
+
const menuItems = await this.createQueryBuilder('menu')
|
|
63
|
+
.leftJoin('cr_module', 'module', 'menu.module_code = module.module_code')
|
|
64
|
+
.where('menu.module_code IN (:...moduleCodes)', { moduleCodes })
|
|
65
|
+
.andWhere('LOWER(module.appcode) = LOWER(:appcode)', { appcode }) // appcode filter
|
|
66
|
+
.select([
|
|
67
|
+
'menu.*',
|
|
68
|
+
'module.component_name AS component',
|
|
69
|
+
'module.title AS title',
|
|
70
|
+
'module.entity_type AS entity_type',
|
|
71
|
+
])
|
|
72
|
+
.getRawMany();
|
|
73
|
+
|
|
74
|
+
return menuItems;
|
|
75
|
+
}
|
|
69
76
|
|
|
70
|
-
return menuItems;
|
|
71
|
-
}
|
|
72
77
|
}
|
|
@@ -21,36 +21,42 @@ export class ModuleAccessRepository {
|
|
|
21
21
|
private readonly moduleActionRepo: Repository<ModuleAction>,
|
|
22
22
|
) {}
|
|
23
23
|
|
|
24
|
-
async getRoles() {
|
|
25
|
-
const roles = await this.roleRepo.find(
|
|
26
|
-
|
|
24
|
+
async getRoles({ appcode }: { appcode: string }) {
|
|
25
|
+
const roles = await this.roleRepo.find({
|
|
26
|
+
where: { appcode: appcode },
|
|
27
|
+
});
|
|
28
|
+
return roles.map((role) => ({
|
|
27
29
|
label: role.name,
|
|
28
30
|
value: role.id,
|
|
29
31
|
}));
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
async getModules() {
|
|
33
|
-
const modules = await this.moduleRepo.find({
|
|
34
|
-
|
|
34
|
+
async getModules({ appcode }: { appcode: string }) {
|
|
35
|
+
const modules = await this.moduleRepo.find({
|
|
36
|
+
where: { module_level: 'MAINMOD', appcode: appcode },
|
|
37
|
+
});
|
|
38
|
+
return modules.map((mod) => ({
|
|
35
39
|
label: mod.name,
|
|
36
40
|
value: mod.id,
|
|
37
41
|
}));
|
|
38
42
|
}
|
|
39
43
|
|
|
40
|
-
async getAccessListing(roleIds: number[]) {
|
|
41
|
-
const roles = await this.roleRepo.find({
|
|
42
|
-
|
|
44
|
+
async getAccessListing(roleIds: number[], appcode: string) {
|
|
45
|
+
const roles = await this.roleRepo.find({
|
|
46
|
+
where: { id: In(roleIds), appcode: appcode },
|
|
47
|
+
});
|
|
48
|
+
const roleCodes = roles.map((role) => role.code);
|
|
43
49
|
|
|
44
50
|
const moduleAccesses = await this.moduleAccessRepo.find({
|
|
45
|
-
where: { role_code: In(roleCodes) },
|
|
51
|
+
where: { role_code: In(roleCodes), appcode: appcode },
|
|
46
52
|
});
|
|
47
53
|
|
|
48
|
-
return roles.map(role => ({
|
|
54
|
+
return roles.map((role) => ({
|
|
49
55
|
role_code: role.code,
|
|
50
56
|
name: role.name,
|
|
51
57
|
permission: moduleAccesses
|
|
52
|
-
.filter(access => access.role_code === role.code)
|
|
53
|
-
.map(access => ({
|
|
58
|
+
.filter((access) => access.role_code === role.code)
|
|
59
|
+
.map((access) => ({
|
|
54
60
|
action: access.action_type,
|
|
55
61
|
access: access.access_flag,
|
|
56
62
|
code: access.module_code,
|
|
@@ -58,20 +64,31 @@ export class ModuleAccessRepository {
|
|
|
58
64
|
}));
|
|
59
65
|
}
|
|
60
66
|
|
|
61
|
-
async getMenuListing(mainModIds: string[]) {
|
|
62
|
-
const mainModules =
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
async getMenuListing(mainModIds: string[], appcode: string) {
|
|
68
|
+
const mainModules =
|
|
69
|
+
mainModIds.length === 1 && mainModIds[0] === '-1'
|
|
70
|
+
? await this.moduleRepo.find({
|
|
71
|
+
where: { module_level: 'MAINMOD', appcode: appcode },
|
|
72
|
+
})
|
|
73
|
+
: await this.moduleRepo.find({
|
|
74
|
+
where: {
|
|
75
|
+
id: In(mainModIds),
|
|
76
|
+
module_level: 'MAINMOD',
|
|
77
|
+
appcode: appcode,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
65
80
|
|
|
66
81
|
if (!mainModules.length) return [];
|
|
67
82
|
|
|
68
|
-
const wbsCodes = mainModules.map(mod => mod.wbs_code);
|
|
83
|
+
const wbsCodes = mainModules.map((mod) => mod.wbs_code);
|
|
69
84
|
|
|
70
85
|
const modules = await this.moduleRepo
|
|
71
86
|
.createQueryBuilder('module')
|
|
72
87
|
.where(
|
|
73
|
-
wbsCodes
|
|
74
|
-
|
|
88
|
+
wbsCodes
|
|
89
|
+
.map((code) => `module.wbs_code LIKE :code${code}`)
|
|
90
|
+
.join(' OR '),
|
|
91
|
+
Object.fromEntries(wbsCodes.map((code) => [`code${code}`, `${code}%`])),
|
|
75
92
|
)
|
|
76
93
|
.getMany();
|
|
77
94
|
|
|
@@ -79,28 +96,29 @@ export class ModuleAccessRepository {
|
|
|
79
96
|
|
|
80
97
|
const buildHierarchy = (parentWbs: string): any[] =>
|
|
81
98
|
modules
|
|
82
|
-
.filter(
|
|
83
|
-
mod
|
|
84
|
-
|
|
99
|
+
.filter(
|
|
100
|
+
(mod) =>
|
|
101
|
+
mod.wbs_code.startsWith(`${parentWbs}.`) &&
|
|
102
|
+
mod.wbs_code.split('.').length === parentWbs.split('.').length + 1,
|
|
85
103
|
)
|
|
86
|
-
.map(mod => ({
|
|
104
|
+
.map((mod) => ({
|
|
87
105
|
name: mod.name,
|
|
88
106
|
code: mod.module_code,
|
|
89
107
|
permission: moduleActions
|
|
90
|
-
.filter(action => action.module_code === mod.module_code)
|
|
91
|
-
.map(action => ({
|
|
108
|
+
.filter((action) => action.module_code === mod.module_code)
|
|
109
|
+
.map((action) => ({
|
|
92
110
|
action: action.action_type,
|
|
93
111
|
name: action.action_type,
|
|
94
112
|
})),
|
|
95
113
|
submod: buildHierarchy(mod.wbs_code),
|
|
96
114
|
}));
|
|
97
115
|
|
|
98
|
-
return mainModules.map(mod => ({
|
|
116
|
+
return mainModules.map((mod) => ({
|
|
99
117
|
name: mod.name,
|
|
100
118
|
code: mod.module_code,
|
|
101
119
|
permission: moduleActions
|
|
102
|
-
.filter(action => action.module_code === mod.module_code)
|
|
103
|
-
.map(action => ({
|
|
120
|
+
.filter((action) => action.module_code === mod.module_code)
|
|
121
|
+
.map((action) => ({
|
|
104
122
|
action: action.action_type,
|
|
105
123
|
name: action.action_type,
|
|
106
124
|
})),
|
|
@@ -108,13 +126,16 @@ export class ModuleAccessRepository {
|
|
|
108
126
|
}));
|
|
109
127
|
}
|
|
110
128
|
|
|
111
|
-
async updateModuleAccess(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
async updateModuleAccess(
|
|
130
|
+
accessList: {
|
|
131
|
+
role_code: string;
|
|
132
|
+
module_code: string;
|
|
133
|
+
action_type: string;
|
|
134
|
+
access_flag: number;
|
|
135
|
+
appcode: string;
|
|
136
|
+
}[],
|
|
137
|
+
appcode: string,
|
|
138
|
+
): Promise<boolean> {
|
|
118
139
|
try {
|
|
119
140
|
for (const access of accessList) {
|
|
120
141
|
const existing = await this.moduleAccessRepo.findOne({
|
|
@@ -122,7 +143,7 @@ export class ModuleAccessRepository {
|
|
|
122
143
|
role_code: access.role_code,
|
|
123
144
|
module_code: access.module_code,
|
|
124
145
|
action_type: access.action_type,
|
|
125
|
-
|
|
146
|
+
appcode: access.appcode || appcode,
|
|
126
147
|
},
|
|
127
148
|
});
|
|
128
149
|
|
|
@@ -130,7 +151,9 @@ export class ModuleAccessRepository {
|
|
|
130
151
|
existing.access_flag = access.access_flag;
|
|
131
152
|
await this.moduleAccessRepo.save(existing);
|
|
132
153
|
} else {
|
|
133
|
-
await this.moduleAccessRepo.save(
|
|
154
|
+
await this.moduleAccessRepo.save(
|
|
155
|
+
this.moduleAccessRepo.create(access),
|
|
156
|
+
);
|
|
134
157
|
}
|
|
135
158
|
}
|
|
136
159
|
return true;
|
|
@@ -140,24 +163,23 @@ export class ModuleAccessRepository {
|
|
|
140
163
|
}
|
|
141
164
|
}
|
|
142
165
|
|
|
143
|
-
|
|
144
166
|
// src/module/module-access/repository/module-access.repository.ts
|
|
145
167
|
|
|
146
168
|
async getModuleUIConfig(moduleCode: string, roleIds: number[]) {
|
|
147
169
|
const module = await this.moduleRepo.findOne({
|
|
148
170
|
where: { module_code: moduleCode },
|
|
149
171
|
});
|
|
150
|
-
|
|
172
|
+
|
|
151
173
|
if (!module) {
|
|
152
174
|
throw new BadRequestException('Module not found');
|
|
153
175
|
}
|
|
154
|
-
|
|
176
|
+
|
|
155
177
|
const roles = await this.roleRepo.find({
|
|
156
178
|
where: { id: In(roleIds) },
|
|
157
179
|
});
|
|
158
|
-
|
|
159
|
-
const roleCodes = roles.map(role => role.code);
|
|
160
|
-
|
|
180
|
+
|
|
181
|
+
const roleCodes = roles.map((role) => role.code);
|
|
182
|
+
|
|
161
183
|
const actions = await this.moduleAccessRepo.find({
|
|
162
184
|
where: {
|
|
163
185
|
module_code: moduleCode,
|
|
@@ -165,9 +187,9 @@ export class ModuleAccessRepository {
|
|
|
165
187
|
access_flag: 1,
|
|
166
188
|
},
|
|
167
189
|
});
|
|
168
|
-
|
|
169
|
-
const uniqueActions = [...new Set(actions.map(a => a.action_type))];
|
|
170
|
-
|
|
190
|
+
|
|
191
|
+
const uniqueActions = [...new Set(actions.map((a) => a.action_type))];
|
|
192
|
+
|
|
171
193
|
return {
|
|
172
194
|
entity_type: module.entity_type,
|
|
173
195
|
title: module.title,
|
|
@@ -175,7 +197,4 @@ export class ModuleAccessRepository {
|
|
|
175
197
|
action: uniqueActions,
|
|
176
198
|
};
|
|
177
199
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
200
|
}
|
|
@@ -9,22 +9,22 @@ export class MenuService {
|
|
|
9
9
|
/**
|
|
10
10
|
* Fetch and construct menu hierarchy for a given user.
|
|
11
11
|
*/
|
|
12
|
-
async getUserMenu(userId: number) {
|
|
12
|
+
async getUserMenu(userId: number,appcode:string): Promise<{ menu: any[] }> {
|
|
13
13
|
// Step 1: Get the roles of the user
|
|
14
|
-
const roleCodes = await this.menuRepository.getUserRoles(userId);
|
|
14
|
+
const roleCodes = await this.menuRepository.getUserRoles(userId,appcode);
|
|
15
15
|
if (!roleCodes.length) {
|
|
16
16
|
return { menu: [] }; // Return empty menu if user has no roles
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// Step 2: Get the modules the user has access to
|
|
20
20
|
const moduleCodes =
|
|
21
|
-
await this.menuRepository.getAccessibleModules(roleCodes);
|
|
21
|
+
await this.menuRepository.getAccessibleModules(roleCodes,appcode);
|
|
22
22
|
if (!moduleCodes.length) {
|
|
23
23
|
return { menu: [] }; // Return empty menu if no accessible modules
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
// Step 3: Get the menu items based on accessible modules
|
|
27
|
-
const menuItems = await this.menuRepository.getMenuItems(moduleCodes);
|
|
27
|
+
const menuItems = await this.menuRepository.getMenuItems(moduleCodes,appcode);
|
|
28
28
|
|
|
29
29
|
// Step 4: Build hierarchical menu structure
|
|
30
30
|
const menuTree = this.buildMenuHierarchy(menuItems);
|
|
@@ -13,31 +13,36 @@ export class ModuleAccessService {
|
|
|
13
13
|
private readonly moduleAccessRepository: ModuleAccessRepository,
|
|
14
14
|
) {}
|
|
15
15
|
|
|
16
|
-
async getRoles() {
|
|
17
|
-
return this.moduleAccessRepository.getRoles();
|
|
16
|
+
async getRoles({ appcode }: { appcode: string }) {
|
|
17
|
+
return this.moduleAccessRepository.getRoles({ appcode });
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
async getModules() {
|
|
21
|
-
return this.moduleAccessRepository.getModules(
|
|
20
|
+
async getModules({ appcode }: { appcode: string }) {
|
|
21
|
+
return this.moduleAccessRepository.getModules({
|
|
22
|
+
appcode,
|
|
23
|
+
});
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
async getAccessListing(roleIds: number[]) {
|
|
25
|
-
return this.moduleAccessRepository.getAccessListing(roleIds);
|
|
26
|
+
async getAccessListing(roleIds: number[], appcode: string) {
|
|
27
|
+
return this.moduleAccessRepository.getAccessListing(roleIds, appcode);
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
async getMenuListing(mainModIds: string[]) {
|
|
29
|
-
return this.moduleAccessRepository.getMenuListing(mainModIds);
|
|
30
|
+
async getMenuListing(mainModIds: string[], appcode: string) {
|
|
31
|
+
return this.moduleAccessRepository.getMenuListing(mainModIds, appcode);
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
async updateModuleAccess(
|
|
33
35
|
moduleAccessData: any[],
|
|
36
|
+
appcode: string,
|
|
34
37
|
): Promise<{ success: boolean; msg: string }> {
|
|
35
38
|
if (!moduleAccessData || moduleAccessData.length === 0) {
|
|
36
39
|
return { success: false, msg: 'No data provided' };
|
|
37
40
|
}
|
|
38
41
|
|
|
39
|
-
const result =
|
|
40
|
-
|
|
42
|
+
const result = await this.moduleAccessRepository.updateModuleAccess(
|
|
43
|
+
moduleAccessData,
|
|
44
|
+
appcode,
|
|
45
|
+
);
|
|
41
46
|
|
|
42
47
|
if (result) {
|
|
43
48
|
return { success: true, msg: 'Module access updated successfully' };
|
|
@@ -51,7 +56,4 @@ export class ModuleAccessService {
|
|
|
51
56
|
async getModuleUIConfig(moduleCode: string, roleIds: number[]) {
|
|
52
57
|
return this.moduleAccessRepository.getModuleUIConfig(moduleCode, roleIds);
|
|
53
58
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
59
|
}
|
|
@@ -24,9 +24,13 @@ export class RoleService extends EntityServiceImpl {
|
|
|
24
24
|
async createEntity(
|
|
25
25
|
entityData: BaseEntity,
|
|
26
26
|
loggedInUser: UserData | null,
|
|
27
|
+
manager?: EntityManager,
|
|
28
|
+
appcode?: string,
|
|
27
29
|
): Promise<BaseEntity> {
|
|
28
30
|
let role = entityData as Role;
|
|
29
|
-
|
|
31
|
+
if(appcode){
|
|
32
|
+
role.appcode = appcode ;
|
|
33
|
+
}
|
|
30
34
|
if (await this.roleRepository.isRoleNameExists(role.name,{organization_id:entityData.organization_id})) {
|
|
31
35
|
throw new BadRequestException('Role name already exists.');
|
|
32
36
|
}
|
|
@@ -51,7 +55,7 @@ export class RoleService extends EntityServiceImpl {
|
|
|
51
55
|
module_code: perm.module_code,
|
|
52
56
|
action_type: perm.action_type,
|
|
53
57
|
access_flag: perm.access_flag,
|
|
54
|
-
|
|
58
|
+
appcode: perm.appcode,
|
|
55
59
|
}),
|
|
56
60
|
);
|
|
57
61
|
|
|
@@ -128,7 +132,7 @@ export class RoleService extends EntityServiceImpl {
|
|
|
128
132
|
module_code: perm.module_code,
|
|
129
133
|
action_type: perm.action_type,
|
|
130
134
|
access_flag: perm.access_flag,
|
|
131
|
-
|
|
135
|
+
appcode: perm.appcode,
|
|
132
136
|
}),
|
|
133
137
|
);
|
|
134
138
|
|
|
@@ -35,8 +35,12 @@ export class UserService extends EntityServiceImpl {
|
|
|
35
35
|
entityData: BaseEntity,
|
|
36
36
|
loggedInUser: UserData | null,
|
|
37
37
|
manager?: EntityManager,
|
|
38
|
+
appcode?: string,
|
|
38
39
|
): Promise<BaseEntity> {
|
|
39
40
|
let userData = entityData as CreateUserDto;
|
|
41
|
+
if(appcode){
|
|
42
|
+
userData.appcode = appcode;
|
|
43
|
+
}
|
|
40
44
|
let existingUser = await this.userRepository.findByEmailId(
|
|
41
45
|
userData.email_id,
|
|
42
46
|
loggedInUser?.organization_id,
|