rez_core 1.0.79 → 1.0.82
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/meta/service/entity-service-impl.service.d.ts +3 -1
- package/dist/module/meta/service/entity-service-impl.service.js +12 -0
- package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
- package/dist/module/meta/service/entity-validation.service.d.ts +5 -3
- package/dist/module/meta/service/entity-validation.service.js +26 -16
- package/dist/module/meta/service/entity-validation.service.js.map +1 -1
- package/dist/module/meta/service/media-data.service.d.ts +1 -1
- package/dist/module/user/repository/role.repository.d.ts +4 -1
- package/dist/module/user/repository/role.repository.js +8 -3
- package/dist/module/user/repository/role.repository.js.map +1 -1
- package/dist/module/user/repository/user.repository.d.ts +2 -2
- package/dist/module/user/repository/user.repository.js +16 -10
- package/dist/module/user/repository/user.repository.js.map +1 -1
- package/dist/module/user/service/role.service.js +2 -2
- package/dist/module/user/service/role.service.js.map +1 -1
- package/dist/module/user/service/user.service.d.ts +2 -2
- package/dist/module/user/service/user.service.js +22 -14
- 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/meta/service/entity-service-impl.service.ts +15 -1
- package/src/module/meta/service/entity-validation.service.ts +34 -18
- package/src/module/user/repository/role.repository.ts +15 -5
- package/src/module/user/repository/user.repository.ts +22 -13
- package/src/module/user/service/role.service.ts +2 -2
- package/src/module/user/service/user.service.ts +46 -16
|
@@ -9,6 +9,7 @@ import { EntityListService } from './entity-list.service';
|
|
|
9
9
|
import { EntityManager } from 'typeorm';
|
|
10
10
|
import { EntityTableService } from './entity-table.service';
|
|
11
11
|
import { EntityTableColumnService } from './entity-table-column.service';
|
|
12
|
+
import { EntityValidationService } from './entity-validation.service';
|
|
12
13
|
export declare class EntityServiceImpl implements EntityService<BaseEntity> {
|
|
13
14
|
protected readonly entityMasterService: EntityMasterService;
|
|
14
15
|
protected readonly entityTableColumnService: EntityTableColumnService;
|
|
@@ -16,7 +17,8 @@ export declare class EntityServiceImpl implements EntityService<BaseEntity> {
|
|
|
16
17
|
protected readonly reflectionHelper: ReflectionHelper;
|
|
17
18
|
protected readonly entityListService: EntityListService;
|
|
18
19
|
protected readonly loggingService: LoggingService;
|
|
19
|
-
|
|
20
|
+
protected readonly entityValidationService: EntityValidationService;
|
|
21
|
+
createEntity(entityData: BaseEntity, loggedInUser: UserData | null, manager?: EntityManager): Promise<any>;
|
|
20
22
|
deleteEntity(entityType: string, entityId: number, loggedInUserData: UserData): void;
|
|
21
23
|
findByCode(entityType: string, code: string): Promise<BaseEntity>;
|
|
22
24
|
getEntityData(entityType: string, id: number): Promise<BaseEntity | null>;
|
|
@@ -22,12 +22,20 @@ const excel_helper_service_1 = require("../../../utils/service/excel-helper.serv
|
|
|
22
22
|
const entity_table_service_1 = require("./entity-table.service");
|
|
23
23
|
const entity_table_column_service_1 = require("./entity-table-column.service");
|
|
24
24
|
const global_constant_1 = require("../../../constant/global.constant");
|
|
25
|
+
const entity_validation_service_1 = require("./entity-validation.service");
|
|
25
26
|
let EntityServiceImpl = class EntityServiceImpl {
|
|
26
27
|
async createEntity(entityData, loggedInUser, manager) {
|
|
27
28
|
if (!entityData.entity_type) {
|
|
28
29
|
throw new common_1.BadRequestException(`EntityType is missing`);
|
|
29
30
|
}
|
|
30
31
|
const entityMaster = await this.entityMasterService.getEntityData(entityData.entity_type);
|
|
32
|
+
const validationErrors = await this.entityValidationService.validateEntityData(entityData, entityMaster);
|
|
33
|
+
if (validationErrors.length > 0) {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
errors: validationErrors,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
31
39
|
const repo = manager
|
|
32
40
|
? manager.getRepository(entityMaster.entity_data_class)
|
|
33
41
|
: this.reflectionHelper.getRepoService(entityMaster.entity_data_class);
|
|
@@ -176,6 +184,10 @@ __decorate([
|
|
|
176
184
|
(0, common_1.Inject)(),
|
|
177
185
|
__metadata("design:type", loggingUtil_service_1.LoggingService)
|
|
178
186
|
], EntityServiceImpl.prototype, "loggingService", void 0);
|
|
187
|
+
__decorate([
|
|
188
|
+
(0, common_1.Inject)(),
|
|
189
|
+
__metadata("design:type", entity_validation_service_1.EntityValidationService)
|
|
190
|
+
], EntityServiceImpl.prototype, "entityValidationService", void 0);
|
|
179
191
|
exports.EntityServiceImpl = EntityServiceImpl = __decorate([
|
|
180
192
|
(0, common_1.Injectable)()
|
|
181
193
|
], EntityServiceImpl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-service-impl.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/entity-service-impl.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAyE;AAEzE,mEAA8D;AAC9D,gGAAoF;AAEpF,oFAA4E;AAE5E,+DAA0D;AAE1D,sEAA8D;AAC9D,yBAAyB;AACzB,6BAA6B;AAC7B,sFAA0E;AAE1E,iEAA4D;AAC5D,+EAAyE;AACzE,uEAA4E;
|
|
1
|
+
{"version":3,"file":"entity-service-impl.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/entity-service-impl.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AttributeMasterService } from 'src/module/meta/service/attribute-master.service';
|
|
2
2
|
import { AttributeMaster } from '../entity/attribute-master.entity';
|
|
3
3
|
import { ReflectionHelper } from 'src/utils/service/reflection-helper.service';
|
|
4
|
+
import { DataSource } from 'typeorm';
|
|
4
5
|
interface ValidationError {
|
|
5
6
|
field: string;
|
|
6
7
|
message: string;
|
|
@@ -8,10 +9,11 @@ interface ValidationError {
|
|
|
8
9
|
export declare class EntityValidationService {
|
|
9
10
|
private readonly attributeMasterService;
|
|
10
11
|
private readonly reflectionHelper;
|
|
11
|
-
|
|
12
|
+
private dataSource;
|
|
13
|
+
constructor(attributeMasterService: AttributeMasterService, reflectionHelper: ReflectionHelper, dataSource: DataSource);
|
|
12
14
|
validateRequiredFields(entityData: Record<string, any>, attributeData: AttributeMaster[]): ValidationError[];
|
|
13
|
-
validateUniqueFields(entityData: Record<string, any>, attributeData: AttributeMaster[], entityType: string): Promise<ValidationError[]>;
|
|
14
|
-
validateEntityData(entityData: Record<string, any
|
|
15
|
+
validateUniqueFields(entityData: Record<string, any>, attributeData: AttributeMaster[], entityType: string, db_table_name: string): Promise<ValidationError[]>;
|
|
16
|
+
validateEntityData(entityData: Record<string, any>, entityMaster: any): Promise<ValidationError[]>;
|
|
15
17
|
private hasValidValue;
|
|
16
18
|
}
|
|
17
19
|
export {};
|
|
@@ -13,50 +13,59 @@ exports.EntityValidationService = void 0;
|
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const attribute_master_service_1 = require("./attribute-master.service");
|
|
15
15
|
const reflection_helper_service_1 = require("../../../utils/service/reflection-helper.service");
|
|
16
|
+
const typeorm_1 = require("typeorm");
|
|
16
17
|
let EntityValidationService = class EntityValidationService {
|
|
17
|
-
constructor(attributeMasterService, reflectionHelper) {
|
|
18
|
+
constructor(attributeMasterService, reflectionHelper, dataSource) {
|
|
18
19
|
this.attributeMasterService = attributeMasterService;
|
|
19
20
|
this.reflectionHelper = reflectionHelper;
|
|
21
|
+
this.dataSource = dataSource;
|
|
20
22
|
}
|
|
21
23
|
validateRequiredFields(entityData, attributeData) {
|
|
22
24
|
const errors = [];
|
|
23
25
|
attributeData
|
|
24
26
|
.filter(attr => attr.required)
|
|
25
27
|
.forEach(attr => {
|
|
26
|
-
const value = entityData[attr.
|
|
28
|
+
const value = entityData[attr.attribute_key];
|
|
27
29
|
if (!this.hasValidValue(value)) {
|
|
28
30
|
errors.push({
|
|
29
|
-
field: attr.
|
|
30
|
-
message: `Field
|
|
31
|
+
field: attr.name,
|
|
32
|
+
message: `Field ${attr.name} is required.`,
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
});
|
|
34
36
|
return errors;
|
|
35
37
|
}
|
|
36
|
-
async validateUniqueFields(entityData, attributeData, entityType) {
|
|
38
|
+
async validateUniqueFields(entityData, attributeData, entityType, db_table_name) {
|
|
37
39
|
const errors = [];
|
|
38
|
-
const repo = this.reflectionHelper.getRepoService(entityData.entity_type);
|
|
39
|
-
if (!repo) {
|
|
40
|
-
throw new Error(`Repository service not found for entityType: ${entityType}`);
|
|
41
|
-
}
|
|
42
40
|
for (const attr of attributeData.filter(a => a.is_unique)) {
|
|
43
|
-
const value = entityData[attr.
|
|
41
|
+
const value = entityData[attr.attribute_key];
|
|
44
42
|
if (this.hasValidValue(value)) {
|
|
45
|
-
|
|
43
|
+
let qb = this.dataSource
|
|
44
|
+
.createQueryBuilder()
|
|
45
|
+
.select('*')
|
|
46
|
+
.from(db_table_name, db_table_name)
|
|
47
|
+
.where(`${db_table_name}.${attr.attribute_key} = :value`, { value });
|
|
48
|
+
const orgId = entityData.organization_id;
|
|
49
|
+
if (orgId !== undefined && orgId !== null) {
|
|
50
|
+
qb = qb.andWhere(`${db_table_name}.organization_id = :organization_id`, {
|
|
51
|
+
organization_id: orgId,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const existing = await qb.limit(1).getRawOne();
|
|
46
55
|
if (existing) {
|
|
47
56
|
errors.push({
|
|
48
|
-
field: attr.
|
|
49
|
-
message: `Field
|
|
57
|
+
field: attr.name,
|
|
58
|
+
message: `Field ${attr.name} must be unique. Value ${value} already exists.`,
|
|
50
59
|
});
|
|
51
60
|
}
|
|
52
61
|
}
|
|
53
62
|
}
|
|
54
63
|
return errors;
|
|
55
64
|
}
|
|
56
|
-
async validateEntityData(entityData) {
|
|
65
|
+
async validateEntityData(entityData, entityMaster) {
|
|
57
66
|
const attributes = await this.attributeMasterService.findAttributesByMappedEntityType(entityData.entity_type);
|
|
58
67
|
const requiredErrors = this.validateRequiredFields(entityData, attributes);
|
|
59
|
-
const uniqueErrors = await this.validateUniqueFields(entityData, attributes, entityData.entity_type);
|
|
68
|
+
const uniqueErrors = await this.validateUniqueFields(entityData, attributes, entityData.entity_type, entityMaster.db_table_name);
|
|
60
69
|
return [...requiredErrors, ...uniqueErrors];
|
|
61
70
|
}
|
|
62
71
|
hasValidValue(value) {
|
|
@@ -71,6 +80,7 @@ exports.EntityValidationService = EntityValidationService;
|
|
|
71
80
|
exports.EntityValidationService = EntityValidationService = __decorate([
|
|
72
81
|
(0, common_1.Injectable)(),
|
|
73
82
|
__metadata("design:paramtypes", [attribute_master_service_1.AttributeMasterService,
|
|
74
|
-
reflection_helper_service_1.ReflectionHelper
|
|
83
|
+
reflection_helper_service_1.ReflectionHelper,
|
|
84
|
+
typeorm_1.DataSource])
|
|
75
85
|
], EntityValidationService);
|
|
76
86
|
//# sourceMappingURL=entity-validation.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-validation.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/entity-validation.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yEAA0F;AAE1F,gGAA+E;
|
|
1
|
+
{"version":3,"file":"entity-validation.service.js","sourceRoot":"","sources":["../../../../src/module/meta/service/entity-validation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare class MediaDataService extends EntityServiceImpl {
|
|
|
13
13
|
bucketName: string | undefined;
|
|
14
14
|
s3: S3;
|
|
15
15
|
generateMediaUploadDetails(fileName: string, mappedAttributeKey: string, mappedEntityType?: string, mappedEntityId?: number): Promise<{
|
|
16
|
-
id:
|
|
16
|
+
id: any;
|
|
17
17
|
path: string;
|
|
18
18
|
uploadUrl: string;
|
|
19
19
|
} | null>;
|
|
@@ -4,5 +4,8 @@ export declare class RoleRepository {
|
|
|
4
4
|
private readonly roleRepo;
|
|
5
5
|
constructor(roleRepo: Repository<Role>);
|
|
6
6
|
findByCode(code: string): Promise<Role | null>;
|
|
7
|
-
isRoleNameExists(name: string,
|
|
7
|
+
isRoleNameExists(name: string, options?: {
|
|
8
|
+
excludeRoleId?: number;
|
|
9
|
+
organization_id?: number;
|
|
10
|
+
}): Promise<boolean>;
|
|
8
11
|
}
|
|
@@ -24,12 +24,17 @@ let RoleRepository = class RoleRepository {
|
|
|
24
24
|
async findByCode(code) {
|
|
25
25
|
return this.roleRepo.findOne({ where: { code } });
|
|
26
26
|
}
|
|
27
|
-
async isRoleNameExists(name,
|
|
27
|
+
async isRoleNameExists(name, options) {
|
|
28
28
|
const query = this.roleRepo
|
|
29
29
|
.createQueryBuilder('role')
|
|
30
30
|
.where('role.name = :name', { name });
|
|
31
|
-
if (excludeRoleId) {
|
|
32
|
-
query.andWhere('role.id != :excludeRoleId', { excludeRoleId });
|
|
31
|
+
if (options?.excludeRoleId) {
|
|
32
|
+
query.andWhere('role.id != :excludeRoleId', { excludeRoleId: options.excludeRoleId });
|
|
33
|
+
}
|
|
34
|
+
if (options?.organization_id !== undefined) {
|
|
35
|
+
query.andWhere('role.organization_id = :organization_id', {
|
|
36
|
+
organization_id: options.organization_id,
|
|
37
|
+
});
|
|
33
38
|
}
|
|
34
39
|
const existingRole = await query.getOne();
|
|
35
40
|
return !!existingRole;
|
|
@@ -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;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,
|
|
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,CAC3B,IAAY,EACZ,OAA8D;QAE9D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;aACxB,kBAAkB,CAAC,MAAM,CAAC;aAC1B,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,QAAQ,CAAC,yCAAyC,EAAE;gBACxD,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,YAAY,CAAC;IACxB,CAAC;CAEF,CAAA;AAjCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;qCACI,oBAAU;GAH5B,cAAc,CAiC1B"}
|
|
@@ -3,8 +3,8 @@ import { UserData } from '../entity/user.entity';
|
|
|
3
3
|
export declare class UserRepository {
|
|
4
4
|
private userRepository;
|
|
5
5
|
constructor(userRepository: Repository<UserData>);
|
|
6
|
-
findByEmailId(email: string): Promise<UserData | null>;
|
|
7
6
|
findById(userId: number): Promise<UserData | null>;
|
|
8
|
-
|
|
7
|
+
findByEmailId(email: string, organization_id?: number): Promise<UserData | null>;
|
|
8
|
+
findByMobile(mobile: string, organization_id?: number): Promise<UserData | null>;
|
|
9
9
|
saveUser(user: UserData): Promise<UserData>;
|
|
10
10
|
}
|
|
@@ -21,20 +21,26 @@ let UserRepository = class UserRepository {
|
|
|
21
21
|
constructor(userRepository) {
|
|
22
22
|
this.userRepository = userRepository;
|
|
23
23
|
}
|
|
24
|
-
async findByEmailId(email) {
|
|
25
|
-
if (email) {
|
|
26
|
-
return this.userRepository.findOne({ where: { email_id: email } });
|
|
27
|
-
}
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
24
|
async findById(userId) {
|
|
31
25
|
return this.userRepository.findOne({ where: { id: userId } });
|
|
32
26
|
}
|
|
33
|
-
async
|
|
34
|
-
if (
|
|
35
|
-
return
|
|
27
|
+
async findByEmailId(email, organization_id) {
|
|
28
|
+
if (!email)
|
|
29
|
+
return null;
|
|
30
|
+
const where = { email_id: email };
|
|
31
|
+
if (organization_id !== undefined) {
|
|
32
|
+
where.organization_id = organization_id;
|
|
33
|
+
}
|
|
34
|
+
return this.userRepository.findOne({ where });
|
|
35
|
+
}
|
|
36
|
+
async findByMobile(mobile, organization_id) {
|
|
37
|
+
if (!mobile)
|
|
38
|
+
return null;
|
|
39
|
+
const where = { mobile: mobile };
|
|
40
|
+
if (organization_id !== undefined) {
|
|
41
|
+
where.organization_id = organization_id;
|
|
36
42
|
}
|
|
37
|
-
return
|
|
43
|
+
return this.userRepository.findOne({ where });
|
|
38
44
|
}
|
|
39
45
|
async saveUser(user) {
|
|
40
46
|
return this.userRepository.save(user);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../../../src/module/user/repository/user.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAqC;AACrC,uDAAiD;AACjD,2CAA4C;AAC5C,6CAAmD;AAG5C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACsC,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IACvE,CAAC;IAEJ,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../../../src/module/user/repository/user.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAqC;AACrC,uDAAiD;AACjD,2CAA4C;AAC5C,6CAAmD;AAG5C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACsC,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IACvE,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,eAAwB;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,KAAK,GAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACvC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,eAAwB;QACzD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,KAAK,GAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACtC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAID,KAAK,CAAC,QAAQ,CAAC,IAAc;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAnCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,sBAAQ,CAAC,CAAA;qCAAyB,oBAAU;GAFrD,cAAc,CAmC1B"}
|
|
@@ -29,7 +29,7 @@ let RoleService = class RoleService extends entity_service_impl_service_1.Entity
|
|
|
29
29
|
}
|
|
30
30
|
async createEntity(entityData, loggedInUser) {
|
|
31
31
|
let role = entityData;
|
|
32
|
-
if (await this.roleRepository.isRoleNameExists(role.name)) {
|
|
32
|
+
if (await this.roleRepository.isRoleNameExists(role.name, { organization_id: entityData.organization_id })) {
|
|
33
33
|
throw new common_1.BadRequestException('Role name already exists.');
|
|
34
34
|
}
|
|
35
35
|
const sourceRole = role.copy_from_role_id
|
|
@@ -76,7 +76,7 @@ let RoleService = class RoleService extends entity_service_impl_service_1.Entity
|
|
|
76
76
|
throw new common_1.BadRequestException('Cannot deactivate system role');
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
if (await this.roleRepository.isRoleNameExists(entityData.name, entityData.id)) {
|
|
79
|
+
if (await this.roleRepository.isRoleNameExists(entityData.name, { excludeRoleId: entityData.id })) {
|
|
80
80
|
throw new common_1.BadRequestException('Role name already exists.');
|
|
81
81
|
}
|
|
82
82
|
const { copy_from_role_id, ...persistableData } = role;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/role.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AACjE,gGAAmF;AAInF,uEAA+D;AAC/D,mEAA+D;AAC/D,qCAAoD;AACpD,6CAAmD;AACnD,mFAAwE;AAIjE,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,+CAAiB;IAChD,YACmB,cAA8B,EAC9B,aAA4B,EAE5B,gBAA0C;QAE3D,KAAK,EAAE,CAAC;QALS,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kBAAa,GAAb,aAAa,CAAe;QAE5B,qBAAgB,GAAhB,gBAAgB,CAA0B;IAG7D,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAsB,EACtB,YAA6B;QAE7B,IAAI,IAAI,GAAG,UAAkB,CAAC;QAE9B,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/role.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,6 @@ export declare class UserService extends EntityServiceImpl {
|
|
|
17
17
|
createEntity(entityData: BaseEntity, loggedInUser: UserData | null, manager?: EntityManager): Promise<BaseEntity>;
|
|
18
18
|
getEntityData(entityType: string, id: number): Promise<BaseEntity | null>;
|
|
19
19
|
updateEntity(entityData: BaseEntity, loggedInUserData: UserData): Promise<BaseEntity>;
|
|
20
|
-
findByEmailId(email_id: string): Promise<UserData | null>;
|
|
21
|
-
findByMobile(mobile: string): Promise<UserData | null>;
|
|
20
|
+
findByEmailId(email_id: string, organization_id?: number): Promise<UserData | null>;
|
|
21
|
+
findByMobile(mobile: string, organization_id: number): Promise<UserData | null>;
|
|
22
22
|
}
|
|
@@ -33,11 +33,11 @@ let UserService = class UserService extends entity_service_impl_service_1.Entity
|
|
|
33
33
|
}
|
|
34
34
|
async createEntity(entityData, loggedInUser, manager) {
|
|
35
35
|
let userData = entityData;
|
|
36
|
-
let existingUser = await this.userRepository.findByEmailId(userData.email_id);
|
|
36
|
+
let existingUser = await this.userRepository.findByEmailId(userData.email_id, userData.organization_id);
|
|
37
37
|
if (existingUser) {
|
|
38
38
|
throw new common_1.BadRequestException('User already exists');
|
|
39
39
|
}
|
|
40
|
-
existingUser = await this.userRepository.findByMobile(userData.mobile);
|
|
40
|
+
existingUser = await this.userRepository.findByMobile(userData.mobile, userData.organization_id);
|
|
41
41
|
if (existingUser) {
|
|
42
42
|
throw new common_1.BadRequestException('User already exists');
|
|
43
43
|
}
|
|
@@ -86,27 +86,35 @@ let UserService = class UserService extends entity_service_impl_service_1.Entity
|
|
|
86
86
|
return null;
|
|
87
87
|
}
|
|
88
88
|
async updateEntity(entityData, loggedInUserData) {
|
|
89
|
-
|
|
89
|
+
const userDto = entityData;
|
|
90
|
+
const existingUser = await this.userRepository.findById(entityData.id);
|
|
91
|
+
if (!existingUser) {
|
|
92
|
+
throw new common_1.BadRequestException('User not found');
|
|
93
|
+
}
|
|
90
94
|
if (userDto.password) {
|
|
91
|
-
const
|
|
92
|
-
userDto.password
|
|
95
|
+
const decryptedPassword = encryptUtil_service_1.EncryptUtilService.decryptGCM(existingUser.password, this.masterKey, this.masterIv);
|
|
96
|
+
if (decryptedPassword === userDto.password) {
|
|
97
|
+
throw new common_1.BadRequestException('New password cannot be the same as the current password');
|
|
98
|
+
}
|
|
99
|
+
const encryptedPassword = encryptUtil_service_1.EncryptUtilService.encryptGCM(userDto.password, this.masterKey, this.masterIv);
|
|
100
|
+
userDto.password = encryptedPassword;
|
|
93
101
|
}
|
|
94
|
-
|
|
95
|
-
|
|
102
|
+
const userData = (0, class_transformer_1.plainToInstance)(user_entity_1.UserData, userDto);
|
|
103
|
+
const savedData = await super.updateEntity(userData, loggedInUserData);
|
|
96
104
|
if (userDto.roles) {
|
|
97
|
-
|
|
98
|
-
for (const role
|
|
99
|
-
|
|
105
|
+
await this.userRoleMappingService.deleteByUserId(savedData.id);
|
|
106
|
+
for (const role of userDto.roles) {
|
|
107
|
+
const userRoleMapping = new user_role_mapping_entity_1.UserRoleMapping(savedData.id, Number(role));
|
|
100
108
|
await this.userRoleMappingService.assignUserRole(userRoleMapping);
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
111
|
return savedData;
|
|
104
112
|
}
|
|
105
|
-
async findByEmailId(email_id) {
|
|
106
|
-
return await this.userRepository.findByEmailId(email_id);
|
|
113
|
+
async findByEmailId(email_id, organization_id) {
|
|
114
|
+
return await this.userRepository.findByEmailId(email_id, organization_id);
|
|
107
115
|
}
|
|
108
|
-
async findByMobile(mobile) {
|
|
109
|
-
return await this.userRepository.findByMobile(mobile);
|
|
116
|
+
async findByMobile(mobile, organization_id) {
|
|
117
|
+
return await this.userRepository.findByMobile(mobile, organization_id);
|
|
110
118
|
}
|
|
111
119
|
};
|
|
112
120
|
exports.UserService = UserService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/user.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiE;AACjE,gGAAmF;AACnF,uDAAiD;AAEjD,mEAA+D;AAC/D,oFAAgF;AAChF,0FAAkF;AAClF,uEAG2C;AAE3C,2EAAqE;AACrE,iFAAqE;AACrE,yDAAoD;AAGpD,2CAA+C;AAGxC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,+CAAiB;IAChD,YACU,cAA8B,EAC9B,sBAA8C,EACrC,iBAAoC,EAC7C,aAA4B;QAEpC,KAAK,EAAE,CAAC;QALA,mBAAc,GAAd,cAAc,CAAgB;QAC9B,2BAAsB,GAAtB,sBAAsB,CAAwB;QACrC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAC7C,kBAAa,GAAb,aAAa,CAAe;QAKtC,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACvD,aAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAHrD,CAAC;IAKD,KAAK,CAAC,YAAY,CAChB,UAAsB,EACtB,YAA6B,EAC7B,OAAuB;QAEvB,IAAI,QAAQ,GAAG,UAA2B,CAAC;QAC3C,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CACxD,QAAQ,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../../src/module/user/service/user.service.ts"],"names":[],"mappings":"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"}
|