Skip to content

Commit c90ca79

Browse files
authored
Merge pull request #46 from Libertech-FR/transform
Transform
2 parents a986282 + 3483bc8 commit c90ca79

File tree

8 files changed

+229
-51
lines changed

8 files changed

+229
-51
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sesame-orchestrator",
3-
"version": "1.2.53",
3+
"version": "1.2.56",
44
"description": "Synchronisation d'Identités Multi-sources",
55
"private": true,
66
"contributors": [
@@ -63,6 +63,7 @@
6363
"@the-software-compagny/nestjs_module_restools": "^0.0.11",
6464
"ajv": "^8.16.0",
6565
"ajv-errors": "^3.0.0",
66+
"ajv-formats": "^3.0.1",
6667
"argon2": "^0.41.1",
6768
"awesome-phonenumber": "^6.10.0",
6869
"bullmq": "^5.8.2",

src/management/identities/identities-crud.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ export class IdentitiesCrudService extends AbstractIdentitiesService {
3434
//TODO : add validation logic here
3535
const logPrefix = `Validation [${update.inetOrgPerson.cn}]:`;
3636
try {
37+
this.logger.log(`${logPrefix} Starting additionalFields transformation.`);
38+
await this._validation.transform(update.additionalFields);
3739
this.logger.log(`${logPrefix} Starting additionalFields validation.`);
3840
const validations = await this._validation.validate(update.additionalFields);
3941
this.logger.log(`${logPrefix} AdditionalFields validation successful.`);

src/management/identities/identities-doublon.service.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,26 @@ export class IdentitiesDoublonService extends AbstractIdentitiesService {
133133
...identity1.inetOrgPerson.employeeNumber,
134134
...identity2.inetOrgPerson.employeeNumber,
135135
];
136+
identity1.inetOrgPerson.departmentNumber = [
137+
...identity1.inetOrgPerson.departmentNumber,
138+
...identity2.inetOrgPerson.departmentNumber,
139+
];
136140
// si supann est present
137141
if (
138142
identity1.additionalFields.objectClasses.includes('supannPerson') &&
139143
identity2.additionalFields.objectClasses.includes('supannPerson')
140144
) {
141-
identity2.additionalFields.attributes.supannPerson.supannTypeEntiteAffectation.forEach((depN) => {
142-
(identity1.additionalFields.attributes.supannPerson as any).supannTypeEntiteAffectation.push(depN);
143-
});
145+
if (identity2.additionalFields.attributes.supannPerson.includes('supannTypeEntiteAffectation') ) {
146+
identity2.additionalFields.attributes.supannPerson.supannTypeEntiteAffectation.forEach((depN) => {
147+
(identity1.additionalFields.attributes.supannPerson as any).supannTypeEntiteAffectation.push(depN);
148+
});
149+
}
144150
// supannRefId
145-
identity2.additionalFields.attributes.supannPerson.supannRefId.forEach((depN) => {
146-
(identity1.additionalFields.attributes.supannPerson as any).supannRefId.push(depN);
147-
});
151+
if (identity2.additionalFields.attributes.supannPerson.includes('supannRefId') ){
152+
identity2.additionalFields.attributes.supannPerson.supannRefId.forEach((depN) => {
153+
(identity1.additionalFields.attributes.supannPerson as any).supannRefId.push(depN);
154+
});
155+
}
148156
}
149157
identity1.state = IdentityState.TO_VALIDATE;
150158
identity1.srcFusionId = identity2._id;

src/management/identities/identities-upsert.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export class IdentitiesUpsertService extends AbstractIdentitiesService {
5252

5353
const logPrefix = `Validation [${data?.inetOrgPerson?.employeeType}:${data?.inetOrgPerson?.employeeNumber}]:`;
5454
try {
55+
this.logger.log(`${logPrefix} Starting additionalFields transformation.`);
56+
await this._validation.transform(data.additionalFields);
5557
this.logger.log(`${logPrefix} Starting additionalFields validation.`);
5658
const validations = await this._validation.validate(data.additionalFields);
5759
this.logger.log(`${logPrefix} AdditionalFields validation successful.`);

src/management/identities/validations/_config/validSchema.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ const validSchema = {
2828
},
2929
format: {
3030
type: 'string',
31-
enum: ['date', 'email'],
32-
errorMessage: "Le 'format' doit être 'date' ou 'email'.",
31+
enum: ['date', 'email','number','time','date-time','duration','uri','uri-reference','hostname','ipv4','ipv6','regex','uuid'],
32+
errorMessage: "Format invalide",
3333
},
3434
items: {
3535
type: 'object',
@@ -118,7 +118,7 @@ const validSchema = {
118118
camelCase: {
119119
type: 'boolean',
120120
errorMessage: "L'option 'camelCase' doit être un booléen.",
121-
},
121+
}
122122
},
123123
required: ['type'],
124124
additionalProperties: false,

src/management/identities/validations/_dto/config.dto.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IsString, ArrayNotEmpty, ValidateNested, IsEnum, IsBoolean } from 'class-validator';
1+
import {IsString, ArrayNotEmpty, ValidateNested, IsEnum, IsBoolean, IsOptional} from 'class-validator';
22
import { Type } from 'class-transformer';
33
import { ConfigObjectType } from '../_enums/config.object';
44

@@ -15,6 +15,10 @@ export class ConfigObjectAttributeDTO {
1515

1616
@IsBoolean()
1717
public required: boolean;
18+
19+
@IsString()
20+
@IsOptional()
21+
public format: string;
1822
}
1923

2024
export class ConfigObjectObjectClassDTO {

0 commit comments

Comments
 (0)