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
|
@@ -8,6 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.RoleService = void 0;
|
|
13
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -15,52 +18,96 @@ const entity_service_impl_service_1 = require("../../meta/service/entity-service
|
|
|
15
18
|
const global_constant_1 = require("../../../constant/global.constant");
|
|
16
19
|
const role_repository_1 = require("../repository/role.repository");
|
|
17
20
|
const typeorm_1 = require("typeorm");
|
|
21
|
+
const typeorm_2 = require("@nestjs/typeorm");
|
|
22
|
+
const module_access_entity_1 = require("../../module/entity/module-access.entity");
|
|
18
23
|
let RoleService = class RoleService extends entity_service_impl_service_1.EntityServiceImpl {
|
|
19
|
-
constructor(roleRepository, entityManager) {
|
|
24
|
+
constructor(roleRepository, entityManager, moduleAccessRepo) {
|
|
20
25
|
super();
|
|
21
26
|
this.roleRepository = roleRepository;
|
|
22
27
|
this.entityManager = entityManager;
|
|
28
|
+
this.moduleAccessRepo = moduleAccessRepo;
|
|
23
29
|
}
|
|
24
30
|
async createEntity(entityData, loggedInUser) {
|
|
25
31
|
let role = entityData;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
if (await this.roleRepository.isRoleNameExists(role.name)) {
|
|
33
|
+
throw new common_1.BadRequestException('Role name already exists.');
|
|
34
|
+
}
|
|
35
|
+
const sourceRole = role.copy_from_role_id
|
|
36
|
+
? await this.getEntityData(global_constant_1.ENTITYTYPE_ROLE, role.copy_from_role_id)
|
|
37
|
+
: null;
|
|
38
|
+
if (role.copy_from_role_id && !sourceRole) {
|
|
39
|
+
throw new common_1.BadRequestException('Source role not found.');
|
|
40
|
+
}
|
|
41
|
+
const savedRole = await super.createEntity(role, loggedInUser);
|
|
42
|
+
if (sourceRole) {
|
|
43
|
+
const sourcePermissions = await this.moduleAccessRepo.find({
|
|
44
|
+
where: { role_code: sourceRole.code },
|
|
45
|
+
});
|
|
46
|
+
const clonedPermissions = sourcePermissions.map((perm) => this.moduleAccessRepo.create({
|
|
47
|
+
role_code: savedRole.code,
|
|
48
|
+
module_code: perm.module_code,
|
|
49
|
+
action_type: perm.action_type,
|
|
50
|
+
access_flag: perm.access_flag,
|
|
51
|
+
app_code: perm.app_code,
|
|
52
|
+
}));
|
|
53
|
+
await this.moduleAccessRepo.save(clonedPermissions);
|
|
54
|
+
}
|
|
55
|
+
return savedRole;
|
|
30
56
|
}
|
|
31
|
-
async
|
|
32
|
-
if (!
|
|
57
|
+
async updateEntity(entityData, loggedInUser) {
|
|
58
|
+
if (!entityData.name) {
|
|
33
59
|
throw new common_1.BadRequestException('Role name is required');
|
|
34
60
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
61
|
+
const role = entityData;
|
|
62
|
+
if (entityData.status === 'INACTIVE') {
|
|
63
|
+
const existingRole = await this.getEntityData(global_constant_1.ENTITYTYPE_ROLE, entityData.id);
|
|
64
|
+
if (!existingRole) {
|
|
65
|
+
throw new common_1.BadRequestException('Role not found');
|
|
66
|
+
}
|
|
67
|
+
const associatedUsers = await this.entityManager.query(`SELECT map.*
|
|
68
|
+
FROM cr_user_role_mapping map
|
|
69
|
+
JOIN cr_user usr ON map.user_id = usr.id
|
|
70
|
+
WHERE usr.status = 'ACTIVE'
|
|
71
|
+
and map.role_id = ${existingRole?.id}`);
|
|
41
72
|
if (associatedUsers.length > 0) {
|
|
42
73
|
throw new common_1.BadRequestException('Cannot deactivate role as it is associated with active users');
|
|
43
74
|
}
|
|
44
|
-
if (!entityData) {
|
|
45
|
-
throw new common_1.BadRequestException('Role not found');
|
|
46
|
-
}
|
|
47
|
-
const role = entityData;
|
|
48
75
|
if (role.is_system === 1) {
|
|
49
76
|
throw new common_1.BadRequestException('Cannot deactivate system role');
|
|
50
77
|
}
|
|
51
78
|
}
|
|
52
|
-
|
|
53
|
-
name
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
if (await this.roleRepository.isRoleNameExists(entityData.name, entityData.id)) {
|
|
80
|
+
throw new common_1.BadRequestException('Role name already exists.');
|
|
81
|
+
}
|
|
82
|
+
const { copy_from_role_id, ...persistableData } = role;
|
|
83
|
+
const updatedRole = await super.updateEntity(persistableData, loggedInUser);
|
|
84
|
+
if (role.copy_from_role_id) {
|
|
85
|
+
const sourceRole = await this.getEntityData(global_constant_1.ENTITYTYPE_ROLE, role.copy_from_role_id);
|
|
86
|
+
if (!sourceRole) {
|
|
87
|
+
throw new common_1.BadRequestException('Source role not found');
|
|
88
|
+
}
|
|
89
|
+
await this.moduleAccessRepo.delete({ role_code: role.code });
|
|
90
|
+
const sourcePermissions = await this.moduleAccessRepo.find({
|
|
91
|
+
where: { role_code: sourceRole.code },
|
|
92
|
+
});
|
|
93
|
+
const clonedPermissions = sourcePermissions.map((perm) => this.moduleAccessRepo.create({
|
|
94
|
+
role_code: role.code,
|
|
95
|
+
module_code: perm.module_code,
|
|
96
|
+
action_type: perm.action_type,
|
|
97
|
+
access_flag: perm.access_flag,
|
|
98
|
+
app_code: perm.app_code,
|
|
99
|
+
}));
|
|
100
|
+
await this.moduleAccessRepo.save(clonedPermissions);
|
|
101
|
+
}
|
|
102
|
+
return updatedRole;
|
|
58
103
|
}
|
|
59
104
|
};
|
|
60
105
|
exports.RoleService = RoleService;
|
|
61
106
|
exports.RoleService = RoleService = __decorate([
|
|
62
107
|
(0, common_1.Injectable)(),
|
|
108
|
+
__param(2, (0, typeorm_2.InjectRepository)(module_access_entity_1.ModuleAccess)),
|
|
63
109
|
__metadata("design:paramtypes", [role_repository_1.RoleRepository,
|
|
64
|
-
typeorm_1.EntityManager
|
|
110
|
+
typeorm_1.EntityManager,
|
|
111
|
+
typeorm_1.Repository])
|
|
65
112
|
], RoleService);
|
|
66
113
|
//# sourceMappingURL=role.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/role.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/role.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,14 +29,19 @@ const user_role_mapping_repository_1 = require("./repository/user-role-mapping.r
|
|
|
29
29
|
const user_role_mapping_service_1 = require("./service/user-role-mapping.service");
|
|
30
30
|
const role_repository_1 = require("./repository/role.repository");
|
|
31
31
|
const module_access_entity_1 = require("../module/entity/module-access.entity");
|
|
32
|
-
const role_controller_1 = require("./controller/role.controller");
|
|
33
32
|
let UserModule = class UserModule {
|
|
34
33
|
};
|
|
35
34
|
exports.UserModule = UserModule;
|
|
36
35
|
exports.UserModule = UserModule = __decorate([
|
|
37
36
|
(0, common_1.Module)({
|
|
38
37
|
imports: [
|
|
39
|
-
typeorm_1.TypeOrmModule.forFeature([
|
|
38
|
+
typeorm_1.TypeOrmModule.forFeature([
|
|
39
|
+
user_entity_1.UserData,
|
|
40
|
+
user_session_entity_1.UserSession,
|
|
41
|
+
role_entity_1.Role,
|
|
42
|
+
user_role_mapping_entity_1.UserRoleMapping,
|
|
43
|
+
module_access_entity_1.ModuleAccess,
|
|
44
|
+
]),
|
|
40
45
|
entity_module_1.EntityModule,
|
|
41
46
|
utils_module_1.UtilsModule,
|
|
42
47
|
auth_module_1.AuthModule,
|
|
@@ -61,7 +66,7 @@ exports.UserModule = UserModule = __decorate([
|
|
|
61
66
|
role_repository_1.RoleRepository,
|
|
62
67
|
login_service_1.LoginService,
|
|
63
68
|
],
|
|
64
|
-
controllers: [login_controller_1.LoginController, user_controller_1.UserController
|
|
69
|
+
controllers: [login_controller_1.LoginController, user_controller_1.UserController],
|
|
65
70
|
})
|
|
66
71
|
], UserModule);
|
|
67
72
|
//# sourceMappingURL=user.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.module.js","sourceRoot":"","sources":["../../../src/module/user/user.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,sDAAgD;AAChD,yDAAqD;AACrD,2DAAuD;AACvD,yDAAqD;AACrD,kEAA8D;AAC9D,yEAAoE;AACpE,sEAA2D;AAC3D,oEAAgE;AAChE,2DAAuD;AACvD,gFAA4E;AAC5E,qCAAyC;AACzC,qDAAiD;AACjD,kEAA8D;AAC9D,sDAA4C;AAC5C,yDAAqD;AACrD,gFAAoE;AACpE,4FAAsF;AACtF,mFAA6E;AAC7E,kEAA8D;AAC9D,gFAAqE;
|
|
1
|
+
{"version":3,"file":"user.module.js","sourceRoot":"","sources":["../../../src/module/user/user.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,sDAAgD;AAChD,yDAAqD;AACrD,2DAAuD;AACvD,yDAAqD;AACrD,kEAA8D;AAC9D,yEAAoE;AACpE,sEAA2D;AAC3D,oEAAgE;AAChE,2DAAuD;AACvD,gFAA4E;AAC5E,qCAAyC;AACzC,qDAAiD;AACjD,kEAA8D;AAC9D,sDAA4C;AAC5C,yDAAqD;AACrD,gFAAoE;AACpE,4FAAsF;AACtF,mFAA6E;AAC7E,kEAA8D;AAC9D,gFAAqE;AAqC9D,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAnCtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,sBAAQ;gBACR,iCAAW;gBACX,kBAAI;gBACJ,0CAAe;gBACf,mCAAY;aACb,CAAC;YACF,4BAAY;YACZ,0BAAW;YACX,wBAAU;SACX;QACD,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,0BAAW,EAAE;YACjD,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,0BAAW,EAAE;YACjD,gCAAc;YACd,yCAAkB;YAClB,4BAAY;YACZ,8CAAqB;YACrB,gBAAU;YACV,wDAAyB;YACzB,kDAAsB;YACtB,gCAAc;SACf;QACD,OAAO,EAAE;YACP,aAAa;YACb,yCAAkB;YAClB,aAAa;YACb,kDAAsB;YACtB,gCAAc;YACd,4BAAY;SACb;QACD,WAAW,EAAE,CAAC,kCAAe,EAAE,gCAAc,CAAC;KAC/C,CAAC;GACW,UAAU,CAAG"}
|