Skip to content

Commit 1c672fe

Browse files
Mise à jour du module Identities
1 parent 34d4e0c commit 1c672fe

File tree

2 files changed

+40
-62
lines changed

2 files changed

+40
-62
lines changed
Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,25 @@
1-
import { HttpException, Logger, Module } from '@nestjs/common';
1+
import { Module } from '@nestjs/common';
22
import { MongooseModule } from '@nestjs/mongoose';
3-
import { IdentitiesSchema, Identities } from './_schemas/identities.schema';
3+
import { Identities, IdentitiesSchema } from './_schemas/identities.schema';
44
import { IdentitiesService } from './identities.service';
55
import { IdentitiesController } from './identities.controller';
66
import { IdentitiesValidationService } from './validations/identities.validation.service';
77
import { IdentitiesValidationModule } from './validations/identities.validation.module';
8-
import { IdentityState } from './_enums/states.enum';
9-
import { ValidationConfigException, ValidationSchemaException } from '~/_common/errors/ValidationException';
8+
import { IdentitiesJsonformsService } from './jsonforms/identities.jsonforms.service';
9+
import { IdentitiesJsonformsModule } from './jsonforms/identities.jsonforms.module';
1010

1111
@Module({
1212
imports: [
1313
MongooseModule.forFeatureAsync([
1414
{
1515
name: Identities.name,
16-
imports: [IdentitiesValidationModule],
17-
inject: [IdentitiesValidationService],
18-
useFactory: (validationService: IdentitiesValidationService) => {
19-
const schema = IdentitiesSchema;
20-
21-
schema.pre('validate', async function (next) {
22-
const logPrefix = `Validation [${this.inetOrgPerson.cn}]:`;
23-
try {
24-
Logger.log(`${logPrefix} Starting additionalFields validation.`);
25-
await validationService.validate(this.additionalFields);
26-
Logger.log(`${logPrefix} AdditionalFields validation successful.`);
27-
} catch (error) {
28-
handleValidationError(error, this, logPrefix);
29-
}
30-
next();
31-
});
32-
33-
schema.pre('save', async function (next) {
34-
if (this.state === IdentityState.TO_CREATE) {
35-
this.state = IdentityState.TO_VALIDATE;
36-
}
37-
next();
38-
});
39-
40-
return schema;
41-
},
16+
imports: [IdentitiesValidationModule, IdentitiesJsonformsModule],
17+
inject: [IdentitiesValidationService, IdentitiesJsonformsService],
18+
useFactory: () => IdentitiesSchema,
4219
},
4320
]),
4421
],
45-
providers: [IdentitiesService, IdentitiesValidationService],
22+
providers: [IdentitiesService, IdentitiesValidationService, IdentitiesJsonformsService],
4623
controllers: [IdentitiesController],
4724
})
4825
export class IdentitiesModule {}
49-
50-
function handleValidationError(error: Error | HttpException, identity: Identities, logPrefix: string) {
51-
if (error instanceof ValidationConfigException) {
52-
Logger.error(`${logPrefix} Validation config error. ${JSON.stringify(error.getValidations())}`);
53-
throw new ValidationConfigException(error.getPayload());
54-
}
55-
56-
if (error instanceof ValidationSchemaException) {
57-
Logger.warn(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
58-
if (identity.state === IdentityState.TO_CREATE) {
59-
Logger.warn(`${logPrefix} State set to TO_COMPLETE.`);
60-
identity.state = IdentityState.TO_COMPLETE;
61-
identity.additionalFields.validations = error.getValidations();
62-
} else {
63-
Logger.error(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
64-
throw new ValidationSchemaException(error.getPayload());
65-
}
66-
} else {
67-
Logger.error(`${logPrefix} Unhandled error: ${error.message}`);
68-
throw error; // Rethrow the original error if it's not one of the handled types.
69-
}
70-
}

src/management/identities/identities.service.ts

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ export class IdentitiesService extends AbstractServiceSchema {
3434
const logPrefix = `Validation [${data.inetOrgPerson.cn}]:`;
3535
data.additionalFields.validations = {};
3636
try {
37-
Logger.log(`${logPrefix} Starting additionalFields validation.`);
37+
this.logger.log(`${logPrefix} Starting additionalFields validation.`);
3838
const validations = await this._validation.validate(data.additionalFields);
39-
Logger.log(`${logPrefix} AdditionalFields validation successful.`);
40-
Logger.log(`Validations : ${validations}`);
39+
this.logger.log(`${logPrefix} AdditionalFields validation successful.`);
40+
this.logger.log(`Validations : ${validations}`);
4141
data.state = IdentityState.TO_VALIDATE;
4242
} catch (error) {
4343
data = this.handleValidationError(error, data, logPrefix);
@@ -46,7 +46,7 @@ export class IdentitiesService extends AbstractServiceSchema {
4646
//TODO: ameliorer la logique d'upsert
4747
const identity = await this._model.findOne({ 'inetOrgPerson.uid': data.inetOrgPerson.uid });
4848
if (identity) {
49-
Logger.log(`${logPrefix} Identity already exists. Updating.`);
49+
this.logger.log(`${logPrefix} Identity already exists. Updating.`);
5050
data.additionalFields.objectClasses = [
5151
...new Set([...identity.additionalFields.objectClasses, ...data.additionalFields.objectClasses]),
5252
];
@@ -71,6 +71,29 @@ export class IdentitiesService extends AbstractServiceSchema {
7171
options?: QueryOptions<T> & { rawResult: true },
7272
): Promise<ModifyResult<Query<T, T, any, T>>> {
7373
// noinspection UnnecessaryLocalVariableJS
74+
//TODO : add validation logic here
75+
const logPrefix = `Validation [${update.inetOrgPerson.cn}]:`;
76+
try {
77+
this.logger.log(`${logPrefix} Starting additionalFields validation.`);
78+
const validations = await this._validation.validate(update.additionalFields);
79+
this.logger.log(`${logPrefix} AdditionalFields validation successful.`);
80+
this.logger.log(`Validations : ${validations}`);
81+
} catch (error) {
82+
if (error instanceof ValidationConfigException) {
83+
this.logger.error(`${logPrefix} Validation config error. ${JSON.stringify(error.getValidations())}`);
84+
throw new ValidationConfigException(error.getPayload());
85+
}
86+
if (error instanceof ValidationSchemaException) {
87+
this.logger.warn(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
88+
update.additionalFields.validations = error.getValidations();
89+
this.logger.error(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
90+
throw new ValidationSchemaException(error.getPayload());
91+
} else {
92+
this.logger.error(`${logPrefix} Unhandled error: ${error.message}`);
93+
throw error; // Rethrow the original error if it's not one of the handled types.
94+
}
95+
}
96+
console.log('update', update);
7497
const updated = await super.update(_id, update, options);
7598
//TODO: add backends service logic here (TO_SYNC)
7699
return updated;
@@ -89,23 +112,23 @@ export class IdentitiesService extends AbstractServiceSchema {
89112

90113
private handleValidationError(error: Error | HttpException, identity: Identities, logPrefix: string) {
91114
if (error instanceof ValidationConfigException) {
92-
Logger.error(`${logPrefix} Validation config error. ${JSON.stringify(error.getValidations())}`);
115+
this.logger.error(`${logPrefix} Validation config error. ${JSON.stringify(error.getValidations())}`);
93116
throw new ValidationConfigException(error.getPayload());
94117
}
95118

96119
if (error instanceof ValidationSchemaException) {
97-
Logger.warn(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
120+
this.logger.warn(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
98121
identity.additionalFields.validations = error.getValidations();
99122
if (identity.state === IdentityState.TO_CREATE) {
100-
Logger.warn(`${logPrefix} State set to TO_COMPLETE.`);
123+
this.logger.warn(`${logPrefix} State set to TO_COMPLETE.`);
101124
identity.state = IdentityState.TO_COMPLETE;
102125
return identity;
103126
} else {
104-
Logger.error(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
127+
this.logger.error(`${logPrefix} Validation schema error. ${JSON.stringify(error.getValidations())}`);
105128
throw new ValidationSchemaException(error.getPayload());
106129
}
107130
} else {
108-
Logger.error(`${logPrefix} Unhandled error: ${error.message}`);
131+
this.logger.error(`${logPrefix} Unhandled error: ${error.message}`);
109132
throw error; // Rethrow the original error if it's not one of the handled types.
110133
}
111134
}

0 commit comments

Comments
 (0)