rez_core 1.0.62 → 1.0.63
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/.idea/250218_nodejs_core.iml +12 -0
- package/.idea/codeStyles/Project.xml +59 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/dataSources.xml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/dist/module/auth/guards/role.guard.js +3 -3
- package/dist/module/listmaster/controller/list-master.controller.d.ts +1 -1
- package/dist/module/listmaster/controller/list-master.controller.js +3 -4
- package/dist/module/listmaster/controller/list-master.controller.js.map +1 -1
- package/dist/module/listmaster/service/list-master.service.d.ts +4 -2
- package/dist/module/listmaster/service/list-master.service.js +16 -14
- package/dist/module/listmaster/service/list-master.service.js.map +1 -1
- package/dist/module/user/entity/role.entity.d.ts +1 -0
- package/dist/module/user/entity/role.entity.js +5 -0
- package/dist/module/user/entity/role.entity.js.map +1 -1
- package/dist/module/user/repository/role.repository.d.ts +2 -35
- package/dist/module/user/repository/role.repository.js +2 -95
- package/dist/module/user/repository/role.repository.js.map +1 -1
- package/dist/module/user/service/role.service.d.ts +5 -32
- package/dist/module/user/service/role.service.js +71 -24
- package/dist/module/user/service/role.service.js.map +1 -1
- package/dist/module/user/user.module.js +8 -3
- package/dist/module/user/user.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/app.controller.ts +12 -12
- package/src/app.service.ts +8 -8
- package/src/module/auth/guards/jwt.guard.ts +22 -22
- package/src/module/auth/guards/role.guard.ts +68 -68
- package/src/module/auth/services/jwt.service.ts +11 -11
- package/src/module/auth/strategies/local.strategy.ts +13 -13
- package/src/module/dev/dev.module.ts +12 -12
- package/src/module/dev/service/dev.service.ts +7 -7
- package/src/module/enterprise/entity/organization.entity.ts +80 -80
- package/src/module/listmaster/controller/list-master.controller.ts +2 -2
- package/src/module/listmaster/service/list-master.service.ts +18 -15
- package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
- package/src/module/meta/entity/preference.entity.ts +65 -65
- package/src/module/meta/repository/preference.repository.ts +20 -20
- package/src/module/module/controller/menu.controller.ts +15 -15
- package/src/module/module/entity/module-access.entity.ts +22 -22
- package/src/module/user/controller/user.controller.ts +28 -28
- package/src/module/user/dto/update-user.dto.ts +4 -4
- package/src/module/user/entity/role.entity.ts +4 -0
- package/src/module/user/entity/user-session.entity.ts +61 -61
- package/src/module/user/repository/role.repository.ts +2 -142
- package/src/module/user/repository/userSession.repository.ts +33 -33
- package/src/module/user/service/role.service.ts +92 -42
- package/src/module/user/user.module.ts +8 -3
- package/src/utils/service/encryptUtil.service.ts +97 -97
- package/src/utils/service/excelUtil.service.ts +15 -15
- package/src/utils/service/reflection-helper.service.ts +53 -53
- package/dist/module/user/controller/role.controller.d.ts +0 -41
- package/dist/module/user/controller/role.controller.js +0 -63
- package/dist/module/user/controller/role.controller.js.map +0 -1
- package/src/module/user/controller/role.controller.ts +0 -55
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="WEB_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$">
|
|
5
|
+
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
|
+
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
+
</content>
|
|
9
|
+
<orderEntry type="inheritedJdk" />
|
|
10
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
+
</component>
|
|
12
|
+
</module>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
+
<code_scheme name="Project" version="173">
|
|
3
|
+
<HTMLCodeStyleSettings>
|
|
4
|
+
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
|
5
|
+
</HTMLCodeStyleSettings>
|
|
6
|
+
<JSCodeStyleSettings version="0">
|
|
7
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
8
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
9
|
+
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
10
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
11
|
+
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
|
12
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
13
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
14
|
+
</JSCodeStyleSettings>
|
|
15
|
+
<TypeScriptCodeStyleSettings version="0">
|
|
16
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
17
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
18
|
+
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
19
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
20
|
+
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
|
21
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
22
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
23
|
+
</TypeScriptCodeStyleSettings>
|
|
24
|
+
<VueCodeStyleSettings>
|
|
25
|
+
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
|
26
|
+
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
|
27
|
+
</VueCodeStyleSettings>
|
|
28
|
+
<codeStyleSettings language="HTML">
|
|
29
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
30
|
+
<indentOptions>
|
|
31
|
+
<option name="INDENT_SIZE" value="2" />
|
|
32
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
33
|
+
<option name="TAB_SIZE" value="2" />
|
|
34
|
+
</indentOptions>
|
|
35
|
+
</codeStyleSettings>
|
|
36
|
+
<codeStyleSettings language="JavaScript">
|
|
37
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
38
|
+
<indentOptions>
|
|
39
|
+
<option name="INDENT_SIZE" value="2" />
|
|
40
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
41
|
+
<option name="TAB_SIZE" value="2" />
|
|
42
|
+
</indentOptions>
|
|
43
|
+
</codeStyleSettings>
|
|
44
|
+
<codeStyleSettings language="TypeScript">
|
|
45
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
46
|
+
<indentOptions>
|
|
47
|
+
<option name="INDENT_SIZE" value="2" />
|
|
48
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
49
|
+
<option name="TAB_SIZE" value="2" />
|
|
50
|
+
</indentOptions>
|
|
51
|
+
</codeStyleSettings>
|
|
52
|
+
<codeStyleSettings language="Vue">
|
|
53
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
54
|
+
<indentOptions>
|
|
55
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
56
|
+
</indentOptions>
|
|
57
|
+
</codeStyleSettings>
|
|
58
|
+
</code_scheme>
|
|
59
|
+
</component>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
|
4
|
+
<data-source source="LOCAL" name="@localhost" uuid="9a102608-c415-4802-970e-769555981800">
|
|
5
|
+
<driver-ref>mysql.8</driver-ref>
|
|
6
|
+
<synchronize>true</synchronize>
|
|
7
|
+
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
8
|
+
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
|
|
9
|
+
<working-dir>$ProjectFileDir$</working-dir>
|
|
10
|
+
</data-source>
|
|
11
|
+
</component>
|
|
12
|
+
</project>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/250218_nodejs_core.iml" filepath="$PROJECT_DIR$/.idea/250218_nodejs_core.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
package/.idea/vcs.xml
ADDED
|
@@ -34,9 +34,9 @@ let RolesGuard = class RolesGuard {
|
|
|
34
34
|
}
|
|
35
35
|
const requiredModule = this.reflector.get('moduleCode', context.getHandler());
|
|
36
36
|
const requiredActions = this.reflector.get('actions', context.getHandler());
|
|
37
|
-
const roleAccess = await this.entityManager.query(`SELECT *
|
|
38
|
-
FROM cr_module_access
|
|
39
|
-
WHERE role_id = ${user['role_id']}
|
|
37
|
+
const roleAccess = await this.entityManager.query(`SELECT *
|
|
38
|
+
FROM cr_module_access
|
|
39
|
+
WHERE role_id = ${user['role_id']}
|
|
40
40
|
AND module_code = '${requiredModule}'`);
|
|
41
41
|
if (!roleAccess || roleAccess.length === 0) {
|
|
42
42
|
throw new common_1.ForbiddenException('Access denied: No permissions found for this module');
|
|
@@ -2,7 +2,7 @@ import { ListMasterService } from '../service/list-master.service';
|
|
|
2
2
|
export declare class ListMasterController {
|
|
3
3
|
private readonly service;
|
|
4
4
|
constructor(service: ListMasterService);
|
|
5
|
-
getDropdownData(type: string, params:
|
|
5
|
+
getDropdownData(type: string, params: Record<string, string>): Promise<{
|
|
6
6
|
label: any;
|
|
7
7
|
value: any;
|
|
8
8
|
}[]>;
|
|
@@ -19,8 +19,8 @@ let ListMasterController = class ListMasterController {
|
|
|
19
19
|
constructor(service) {
|
|
20
20
|
this.service = service;
|
|
21
21
|
}
|
|
22
|
-
async getDropdownData(type, params
|
|
23
|
-
return await this.service.getDropdownOptions(type, params
|
|
22
|
+
async getDropdownData(type, params) {
|
|
23
|
+
return await this.service.getDropdownOptions(type, params);
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
exports.ListMasterController = ListMasterController;
|
|
@@ -29,9 +29,8 @@ __decorate([
|
|
|
29
29
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
30
30
|
__param(0, (0, common_1.Param)('type')),
|
|
31
31
|
__param(1, (0, common_1.Body)()),
|
|
32
|
-
__param(2, (0, common_1.Query)()),
|
|
33
32
|
__metadata("design:type", Function),
|
|
34
|
-
__metadata("design:paramtypes", [String, Object
|
|
33
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
35
34
|
__metadata("design:returntype", Promise)
|
|
36
35
|
], ListMasterController.prototype, "getDropdownData", null);
|
|
37
36
|
exports.ListMasterController = ListMasterController = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-master.controller.js","sourceRoot":"","sources":["../../../../src/module/listmaster/controller/list-master.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4F;AAC5F,wEAAmE;AAG5D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAIrD,AAAN,KAAK,CAAC,eAAe,CAAgB,IAAY,EAAU,
|
|
1
|
+
{"version":3,"file":"list-master.controller.js","sourceRoot":"","sources":["../../../../src/module/listmaster/controller/list-master.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4F;AAC5F,wEAAmE;AAG5D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAIrD,AAAN,KAAK,CAAC,eAAe,CAAgB,IAAY,EAAU,MAA8B;QACvF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF,CAAA;AARY,oDAAoB;AAKzB;IAFL,IAAA,aAAI,EAAC,wBAAwB,CAAC;IAC9B,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACD,WAAA,IAAA,cAAK,EAAC,MAAM,CAAC,CAAA;IAAgB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;2DAEzD;+BAPU,oBAAoB;IADhC,IAAA,mBAAU,EAAC,aAAa,CAAC;qCAEc,uCAAiB;GAD5C,oBAAoB,CAQhC"}
|
|
@@ -3,13 +3,15 @@ import { ListMasterItemsRepository } from '../repository/list-master-items.repos
|
|
|
3
3
|
import { ListMasterRepository } from '../repository/list-master.repository';
|
|
4
4
|
import { ApiRegistryService } from '../../third-party-module/service/api-registry.service';
|
|
5
5
|
import { HttpService } from '@nestjs/axios';
|
|
6
|
+
import { EntityManager } from 'typeorm';
|
|
6
7
|
export declare class ListMasterService extends EntityServiceImpl {
|
|
8
|
+
private readonly entityManager;
|
|
7
9
|
private readonly listMasterRepo;
|
|
8
10
|
private readonly listItemsRepo;
|
|
9
11
|
private readonly apiRegistryService;
|
|
10
12
|
private readonly httpService;
|
|
11
|
-
constructor(listMasterRepo: ListMasterRepository, listItemsRepo: ListMasterItemsRepository, apiRegistryService: ApiRegistryService, httpService: HttpService);
|
|
12
|
-
getDropdownOptions(type: string, params: Record<string, string
|
|
13
|
+
constructor(entityManager: EntityManager, listMasterRepo: ListMasterRepository, listItemsRepo: ListMasterItemsRepository, apiRegistryService: ApiRegistryService, httpService: HttpService);
|
|
14
|
+
getDropdownOptions(type: string, params: Record<string, string>): Promise<{
|
|
13
15
|
label: any;
|
|
14
16
|
value: any;
|
|
15
17
|
}[]>;
|
|
@@ -17,21 +17,23 @@ const list_master_repository_1 = require("../repository/list-master.repository")
|
|
|
17
17
|
const api_registry_service_1 = require("../../third-party-module/service/api-registry.service");
|
|
18
18
|
const rxjs_1 = require("rxjs");
|
|
19
19
|
const axios_1 = require("@nestjs/axios");
|
|
20
|
+
const typeorm_1 = require("typeorm");
|
|
20
21
|
let ListMasterService = class ListMasterService extends entity_service_impl_service_1.EntityServiceImpl {
|
|
21
|
-
constructor(listMasterRepo, listItemsRepo, apiRegistryService, httpService) {
|
|
22
|
+
constructor(entityManager, listMasterRepo, listItemsRepo, apiRegistryService, httpService) {
|
|
22
23
|
super();
|
|
24
|
+
this.entityManager = entityManager;
|
|
23
25
|
this.listMasterRepo = listMasterRepo;
|
|
24
26
|
this.listItemsRepo = listItemsRepo;
|
|
25
27
|
this.apiRegistryService = apiRegistryService;
|
|
26
28
|
this.httpService = httpService;
|
|
27
29
|
}
|
|
28
|
-
async getDropdownOptions(type, params
|
|
30
|
+
async getDropdownOptions(type, params) {
|
|
29
31
|
const config = await this.listMasterRepo.findByType(type);
|
|
30
32
|
if (!config)
|
|
31
33
|
throw new common_1.NotFoundException(`Type ${type} not found`);
|
|
32
34
|
switch (config.source) {
|
|
33
35
|
case 'entity':
|
|
34
|
-
return this.fetchFromEntity(type,
|
|
36
|
+
return this.fetchFromEntity(type, params);
|
|
35
37
|
case 'master':
|
|
36
38
|
return this.listItemsRepo.findItemsByType(type);
|
|
37
39
|
case 'custom':
|
|
@@ -40,20 +42,19 @@ let ListMasterService = class ListMasterService extends entity_service_impl_serv
|
|
|
40
42
|
throw new common_1.BadRequestException(`Unknown source: ${config.source}`);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
|
-
async fetchFromEntity(sourceList,
|
|
45
|
+
async fetchFromEntity(sourceList, params) {
|
|
44
46
|
let result = [];
|
|
47
|
+
const argsObjectList = [];
|
|
45
48
|
if (sourceList) {
|
|
46
49
|
const entityMaster = await this.entityMasterService.getEntityData(sourceList);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
let query = `SELECT * FROM ${entityMaster.db_table_name} WHERE 1=1 `;
|
|
51
|
+
for (let paramsKey in params) {
|
|
52
|
+
query += `AND ${paramsKey} = ? `;
|
|
53
|
+
argsObjectList.push(params[paramsKey]);
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
result.push({
|
|
54
|
-
label: entity.name,
|
|
55
|
-
value: parseInt(String(entity.id)),
|
|
56
|
-
});
|
|
55
|
+
let results = await this.entityManager.query(query, argsObjectList);
|
|
56
|
+
results.forEach(r => {
|
|
57
|
+
result.push({ label: r['name'], value: r['id'] });
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
return result;
|
|
@@ -106,7 +107,8 @@ let ListMasterService = class ListMasterService extends entity_service_impl_serv
|
|
|
106
107
|
exports.ListMasterService = ListMasterService;
|
|
107
108
|
exports.ListMasterService = ListMasterService = __decorate([
|
|
108
109
|
(0, common_1.Injectable)(),
|
|
109
|
-
__metadata("design:paramtypes", [
|
|
110
|
+
__metadata("design:paramtypes", [typeorm_1.EntityManager,
|
|
111
|
+
list_master_repository_1.ListMasterRepository,
|
|
110
112
|
list_master_items_repository_1.ListMasterItemsRepository,
|
|
111
113
|
api_registry_service_1.ApiRegistryService,
|
|
112
114
|
axios_1.HttpService])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-master.service.js","sourceRoot":"","sources":["../../../../src/module/listmaster/service/list-master.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gGAAmF;AACnF,2CAIwB;AACxB,6FAAuF;AACvF,iFAA4E;AAC5E,gGAA2F;AAC3F,+BAAsC;AACtC,yCAA4C;
|
|
1
|
+
{"version":3,"file":"list-master.service.js","sourceRoot":"","sources":["../../../../src/module/listmaster/service/list-master.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ exports.Role = void 0;
|
|
|
13
13
|
const base_entity_entity_1 = require("../../meta/entity/base-entity.entity");
|
|
14
14
|
const global_constant_1 = require("../../../constant/global.constant");
|
|
15
15
|
const typeorm_1 = require("typeorm");
|
|
16
|
+
const class_transformer_1 = require("class-transformer");
|
|
16
17
|
let Role = class Role extends base_entity_entity_1.BaseEntity {
|
|
17
18
|
constructor() {
|
|
18
19
|
super();
|
|
@@ -32,6 +33,10 @@ __decorate([
|
|
|
32
33
|
(0, typeorm_1.Column)({ type: 'varchar', length: 250, nullable: true }),
|
|
33
34
|
__metadata("design:type", String)
|
|
34
35
|
], Role.prototype, "description", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Exclude)(),
|
|
38
|
+
__metadata("design:type", Number)
|
|
39
|
+
], Role.prototype, "copy_from_role_id", void 0);
|
|
35
40
|
exports.Role = Role = __decorate([
|
|
36
41
|
(0, typeorm_1.Entity)({ name: 'cr_role' }),
|
|
37
42
|
__metadata("design:paramtypes", [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.entity.js","sourceRoot":"","sources":["../../../../src/module/user/entity/role.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6EAAkE;AAClE,uEAAoE;AACpE,qCAAyC;
|
|
1
|
+
{"version":3,"file":"role.entity.js","sourceRoot":"","sources":["../../../../src/module/user/entity/role.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6EAAkE;AAClE,uEAAoE;AACpE,qCAAyC;AACzC,yDAA4C;AAGrC,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,+BAAU;IAClC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,iCAAe,CAAC;IACrC,CAAC;CAaF,CAAA;AAjBY,oBAAI;AAOf;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACvC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACtB;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACrC;AAGpB;IADC,IAAA,2BAAO,GAAE;;+CACgB;eAhBf,IAAI;IADhB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;GACf,IAAI,CAiBhB"}
|
|
@@ -1,41 +1,8 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
2
|
import { Role } from '../entity/role.entity';
|
|
3
|
-
import { ModuleAccess } from 'src/module/module/entity/module-access.entity';
|
|
4
|
-
import { UserData } from '../entity/user.entity';
|
|
5
3
|
export declare class RoleRepository {
|
|
6
4
|
private readonly roleRepo;
|
|
7
|
-
|
|
8
|
-
constructor(roleRepo: Repository<Role>, moduleAccessRepo: Repository<ModuleAccess>);
|
|
5
|
+
constructor(roleRepo: Repository<Role>);
|
|
9
6
|
findByCode(code: string): Promise<Role | null>;
|
|
10
|
-
|
|
11
|
-
name: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
status?: 'ACTIVE' | 'INACTIVE';
|
|
14
|
-
copyFromRoleId?: number;
|
|
15
|
-
}, loggedInUser: UserData): Promise<{
|
|
16
|
-
success: boolean;
|
|
17
|
-
msg: string;
|
|
18
|
-
role: {
|
|
19
|
-
id: number;
|
|
20
|
-
name: string;
|
|
21
|
-
status: string;
|
|
22
|
-
code: string;
|
|
23
|
-
};
|
|
24
|
-
}>;
|
|
25
|
-
updateRole(roleId: number, { name, description, status, copyFromRoleId, }: {
|
|
26
|
-
name: string;
|
|
27
|
-
description?: string;
|
|
28
|
-
status?: 'ACTIVE' | 'INACTIVE';
|
|
29
|
-
copyFromRoleId?: number;
|
|
30
|
-
}, loggedInUser: UserData): Promise<{
|
|
31
|
-
success: boolean;
|
|
32
|
-
msg: string;
|
|
33
|
-
role: {
|
|
34
|
-
id: number;
|
|
35
|
-
name: string;
|
|
36
|
-
status: string;
|
|
37
|
-
code: string;
|
|
38
|
-
};
|
|
39
|
-
}>;
|
|
40
|
-
private isRoleNameExists;
|
|
7
|
+
isRoleNameExists(name: string, excludeRoleId?: number): Promise<boolean>;
|
|
41
8
|
}
|
|
@@ -17,104 +17,13 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const typeorm_1 = require("typeorm");
|
|
18
18
|
const typeorm_2 = require("@nestjs/typeorm");
|
|
19
19
|
const role_entity_1 = require("../entity/role.entity");
|
|
20
|
-
const module_access_entity_1 = require("../../module/entity/module-access.entity");
|
|
21
20
|
let RoleRepository = class RoleRepository {
|
|
22
|
-
constructor(roleRepo
|
|
21
|
+
constructor(roleRepo) {
|
|
23
22
|
this.roleRepo = roleRepo;
|
|
24
|
-
this.moduleAccessRepo = moduleAccessRepo;
|
|
25
23
|
}
|
|
26
24
|
async findByCode(code) {
|
|
27
25
|
return this.roleRepo.findOne({ where: { code } });
|
|
28
26
|
}
|
|
29
|
-
async createRole({ name, description, status = 'ACTIVE', copyFromRoleId, }, loggedInUser) {
|
|
30
|
-
if (await this.isRoleNameExists(name)) {
|
|
31
|
-
throw new common_1.BadRequestException('Role name already exists.');
|
|
32
|
-
}
|
|
33
|
-
const sourceRole = copyFromRoleId
|
|
34
|
-
? await this.roleRepo.findOne({ where: { id: copyFromRoleId } })
|
|
35
|
-
: null;
|
|
36
|
-
if (copyFromRoleId && !sourceRole) {
|
|
37
|
-
throw new common_1.BadRequestException('Source role not found.');
|
|
38
|
-
}
|
|
39
|
-
const newRole = this.roleRepo.create({
|
|
40
|
-
name,
|
|
41
|
-
description,
|
|
42
|
-
status,
|
|
43
|
-
created_by: loggedInUser.id,
|
|
44
|
-
created_date: new Date(),
|
|
45
|
-
});
|
|
46
|
-
const savedRole = await this.roleRepo.save(newRole);
|
|
47
|
-
savedRole.code = `ROL${savedRole.id}`;
|
|
48
|
-
await this.roleRepo.save(savedRole);
|
|
49
|
-
if (sourceRole) {
|
|
50
|
-
const sourcePermissions = await this.moduleAccessRepo.find({
|
|
51
|
-
where: { role_code: sourceRole.code },
|
|
52
|
-
});
|
|
53
|
-
const clonedPermissions = sourcePermissions.map(perm => this.moduleAccessRepo.create({
|
|
54
|
-
role_code: savedRole.code,
|
|
55
|
-
module_code: perm.module_code,
|
|
56
|
-
action_type: perm.action_type,
|
|
57
|
-
access_flag: perm.access_flag,
|
|
58
|
-
app_code: perm.app_code,
|
|
59
|
-
}));
|
|
60
|
-
await this.moduleAccessRepo.save(clonedPermissions);
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
success: true,
|
|
64
|
-
msg: 'Role created successfully',
|
|
65
|
-
role: {
|
|
66
|
-
id: savedRole.id,
|
|
67
|
-
name: savedRole.name,
|
|
68
|
-
status: savedRole.status,
|
|
69
|
-
code: savedRole.code,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
async updateRole(roleId, { name, description, status = 'ACTIVE', copyFromRoleId, }, loggedInUser) {
|
|
74
|
-
if (await this.isRoleNameExists(name, roleId)) {
|
|
75
|
-
throw new common_1.BadRequestException('Role name already exists.');
|
|
76
|
-
}
|
|
77
|
-
const role = await this.roleRepo.findOne({ where: { id: roleId } });
|
|
78
|
-
if (!role) {
|
|
79
|
-
throw new common_1.BadRequestException('Role not found');
|
|
80
|
-
}
|
|
81
|
-
Object.assign(role, {
|
|
82
|
-
name,
|
|
83
|
-
description: description || '',
|
|
84
|
-
status,
|
|
85
|
-
modified_by: loggedInUser.id,
|
|
86
|
-
modified_date: new Date(),
|
|
87
|
-
});
|
|
88
|
-
await this.roleRepo.save(role);
|
|
89
|
-
if (copyFromRoleId) {
|
|
90
|
-
const sourceRole = await this.roleRepo.findOne({ where: { id: copyFromRoleId } });
|
|
91
|
-
if (!sourceRole) {
|
|
92
|
-
throw new common_1.BadRequestException('Source role not found');
|
|
93
|
-
}
|
|
94
|
-
await this.moduleAccessRepo.delete({ role_code: role.code });
|
|
95
|
-
const sourcePermissions = await this.moduleAccessRepo.find({
|
|
96
|
-
where: { role_code: sourceRole.code },
|
|
97
|
-
});
|
|
98
|
-
const clonedPermissions = sourcePermissions.map(perm => this.moduleAccessRepo.create({
|
|
99
|
-
role_code: role.code,
|
|
100
|
-
module_code: perm.module_code,
|
|
101
|
-
action_type: perm.action_type,
|
|
102
|
-
access_flag: perm.access_flag,
|
|
103
|
-
app_code: perm.app_code,
|
|
104
|
-
}));
|
|
105
|
-
await this.moduleAccessRepo.save(clonedPermissions);
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
success: true,
|
|
109
|
-
msg: 'Role updated successfully',
|
|
110
|
-
role: {
|
|
111
|
-
id: role.id,
|
|
112
|
-
name: role.name,
|
|
113
|
-
status: role.status,
|
|
114
|
-
code: role.code,
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
27
|
async isRoleNameExists(name, excludeRoleId) {
|
|
119
28
|
const query = this.roleRepo
|
|
120
29
|
.createQueryBuilder('role')
|
|
@@ -130,8 +39,6 @@ exports.RoleRepository = RoleRepository;
|
|
|
130
39
|
exports.RoleRepository = RoleRepository = __decorate([
|
|
131
40
|
(0, common_1.Injectable)(),
|
|
132
41
|
__param(0, (0, typeorm_2.InjectRepository)(role_entity_1.Role)),
|
|
133
|
-
|
|
134
|
-
__metadata("design:paramtypes", [typeorm_1.Repository,
|
|
135
|
-
typeorm_1.Repository])
|
|
42
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
136
43
|
], RoleRepository);
|
|
137
44
|
//# sourceMappingURL=role.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.repository.js","sourceRoot":"","sources":["../../../../src/module/user/repository/role.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AACjE,qCAAqC;AACrC,6CAAmD;AACnD,uDAA6C;
|
|
1
|
+
{"version":3,"file":"role.repository.js","sourceRoot":"","sources":["../../../../src/module/user/repository/role.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AACjE,qCAAqC;AACrC,6CAAmD;AACnD,uDAA6C;AAKtC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAEmB,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAC1C,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAGM,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,aAAsB;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;aACxB,kBAAkB,CAAC,MAAM,CAAC;aAC1B,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,YAAY,CAAC;IACxB,CAAC;CACF,CAAA;AAvBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;qCACI,oBAAU;GAH5B,cAAc,CAuB1B"}
|
|
@@ -2,40 +2,13 @@ import { EntityServiceImpl } from '../../meta/service/entity-service-impl.servic
|
|
|
2
2
|
import { BaseEntity } from '../../meta/entity/base-entity.entity';
|
|
3
3
|
import { UserData } from '../entity/user.entity';
|
|
4
4
|
import { RoleRepository } from '../repository/role.repository';
|
|
5
|
-
import { EntityManager } from 'typeorm';
|
|
5
|
+
import { EntityManager, Repository } from 'typeorm';
|
|
6
|
+
import { ModuleAccess } from '../../module/entity/module-access.entity';
|
|
6
7
|
export declare class RoleService extends EntityServiceImpl {
|
|
7
8
|
private readonly roleRepository;
|
|
8
9
|
private readonly entityManager;
|
|
9
|
-
|
|
10
|
+
private readonly moduleAccessRepo;
|
|
11
|
+
constructor(roleRepository: RoleRepository, entityManager: EntityManager, moduleAccessRepo: Repository<ModuleAccess>);
|
|
10
12
|
createEntity(entityData: BaseEntity, loggedInUser: UserData | null): Promise<BaseEntity>;
|
|
11
|
-
|
|
12
|
-
name: string;
|
|
13
|
-
description?: string;
|
|
14
|
-
status?: 'ACTIVE' | 'INACTIVE';
|
|
15
|
-
copyFromRoleId?: number;
|
|
16
|
-
}, loggedInUser: UserData): Promise<{
|
|
17
|
-
success: boolean;
|
|
18
|
-
msg: string;
|
|
19
|
-
role: {
|
|
20
|
-
id: number;
|
|
21
|
-
name: string;
|
|
22
|
-
status: string;
|
|
23
|
-
code: string;
|
|
24
|
-
};
|
|
25
|
-
}>;
|
|
26
|
-
updateRole(id: number, body: {
|
|
27
|
-
name?: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
status?: 'ACTIVE' | 'INACTIVE';
|
|
30
|
-
copyFromRoleId?: number;
|
|
31
|
-
}, loggedInUser: UserData): Promise<{
|
|
32
|
-
success: boolean;
|
|
33
|
-
msg: string;
|
|
34
|
-
role: {
|
|
35
|
-
id: number;
|
|
36
|
-
name: string;
|
|
37
|
-
status: string;
|
|
38
|
-
code: string;
|
|
39
|
-
};
|
|
40
|
-
}>;
|
|
13
|
+
updateEntity(entityData: BaseEntity, loggedInUser: UserData | null): Promise<BaseEntity>;
|
|
41
14
|
}
|