You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Documentation Technique - Service de Validation des Identités
2
+
# Documentation Technique - Service de Validation des Identités (Mise à Jour)
3
3
4
4
## Description
5
-
Ce document décrit le fonctionnement du service de validation des identités dans une application NestJS, en utilisant `yup` pour la validation des données.
5
+
Cette documentation mise à jour décrit les améliorations apportées au service de validation des identités dans une application NestJS. Ce service utilise `yup` pour la validation des données et `ajv` pour gérer la validation des schémas JSON et YML. Les fichiers de configuration YML sont chargés dynamiquement et convertis en schémas `yup` pour valider les données utilisateur.
6
6
7
7
## Services
8
8
9
9
### IdentitiesValidationService
10
10
11
+
#### Modifications Clés
12
+
- Extraction de la logique de validation d'attributs dans une méthode privée `validateAttribute`, améliorant la lisibilité et la maintenabilité.
13
+
- Utilisation améliorée de la gestion des erreurs pour fournir des messages d'erreur spécifiques.
14
+
- Commentaires et annotations de type TypeScript ajoutés pour une meilleure compréhension et utilisation du type checking de TypeScript.
@@ -10,7 +10,7 @@ Le système de validation d'identité utilise des fichiers de configuration YAML
10
10
Les champs de base de l'objet `inetOrgPerson` sont validés par défaut.
11
11
12
12
### Champs obligatoires :
13
-
-`cn`
13
+
-`cn`
14
14
-`sn`
15
15
-`uid`
16
16
@@ -34,53 +34,212 @@ Les champs de base de l'objet `inetOrgPerson` sont validés par défaut.
34
34
35
35
Le fichier de configuration YAML doit être nommé selon le nom de l'`objectClass` qu'il définit, par exemple `supann.yml` pour l'`objectClass``supann`. Il doit être placé dans le dossier `TBD`.
36
36
37
+
Vous pouvez vous baser sur le template si dessous pour créer votre fichier YAML. Les champs $schema, type, properties et required sont obligatoires. Vpis ajouterez le champs désirés dans properties. Pour les champs requis, vous les listerez dans required.
Chaque attribut peut avoir des options supplémentaires pour définir des règles de validation spécifiques. Les options sont définies en tant que clés dans le fichier YAML.
89
+
90
+
#### Array (Tableau)
91
+
- **ensure**: Assure que la valeur est toujours un tableau.
92
+
```yaml
93
+
type: array
94
+
ensure: true
95
+
```
96
+
- **compact**: Supprime les valeurs vides du tableau.
97
+
```yaml
98
+
type: array
99
+
compact: true
100
+
```
101
+
- **items (of)** : Définit le type des éléments du tableau.
102
+
103
+
```yaml
104
+
type: array
105
+
items:
62
106
type: string
63
-
# more attributes...
64
-
```
107
+
```
108
+
- **maxItems (max)** : Définit le nombre maximum d'éléments du tableau.
109
+
```yaml
110
+
type: array
111
+
maxItems: 5
112
+
```
113
+
- **minItems (min)** : Définit le nombre minimum d'éléments du tableau.
114
+
```yaml
115
+
type: array
116
+
minItems: 2
117
+
```
65
118
66
-
#### Exemple Générique de Fichier YAML
119
+
#### Boolean (Booléen)
120
+
- *Pas de clés spécifiques*
121
+
```yaml
122
+
type: boolean
123
+
```
124
+
125
+
#### Date
126
+
- **maxDate (max)**: Définit la date maximum.
127
+
```yaml
128
+
type: date
129
+
maxDate: '2024-01-01'
130
+
```
131
+
- **minDate (min)**: Définit la date minimum.
132
+
```yaml
133
+
type: date
134
+
minDate: '2020-01-01'
135
+
```
136
+
137
+
#### Number (Nombre)
138
+
- **integer**: Définit que la valeur doit être un entier.
139
+
```yaml
140
+
type: number
141
+
integer: true
142
+
```
143
+
- **moreThan (exclusiveMinimum)**: Définit la valeur minimum.
144
+
```yaml
145
+
type: number
146
+
moreThan: 10
147
+
```
148
+
- **lessThan (exclusiveMaximum)**: Définit la valeur maximum.
149
+
```yaml
150
+
type: number
151
+
lessThan: 20
152
+
```
153
+
- **positive**: Définit que la valeur doit être positive.
154
+
```yaml
155
+
type: number
156
+
positive: true
157
+
```
158
+
- **negative**: Définit que la valeur doit être négative.
159
+
```yaml
160
+
type: number
161
+
negative: true
162
+
```
163
+
- **min (minimum)**: Définit la valeur minimum.
164
+
```yaml
165
+
type: number
166
+
min: 5
167
+
```
168
+
- **max (maximum)**: Définit la valeur maximum.
169
+
```yaml
170
+
type: number
171
+
max: 100
172
+
```
173
+
- **truncate**: Tronque la valeur.
174
+
```yaml
175
+
type: number
176
+
truncate: true
177
+
```
178
+
- **round**: Arrondi la valeur.
179
+
```yaml
180
+
type: number
181
+
round: true
182
+
```
183
+
184
+
#### Object (Objet)
185
+
- **camelCase**: Convertit les clés de l'objet en camelCase.
186
+
```yaml
187
+
type: object
188
+
camelCase: true
189
+
```
190
+
- **constantCase**: Convertit les clés de l'objet en CONSTANT_CASE.
191
+
```yaml
192
+
type: object
193
+
constantCase: true
194
+
```
195
+
- **noUnknown (propertyNames)**: Définit que l'objet ne peut pas contenir de clés non définies.
196
+
```yaml
197
+
type: object
198
+
noUnknown: true
199
+
```
200
+
201
+
#### String (Chaîne de caractères)
202
+
- **minLength (min)**: Définit la longueur minimum de la chaîne de caractères.
203
+
```yaml
204
+
type: string
205
+
minLength: 5
206
+
```
207
+
- **maxLength (max)**: Définit la longueur maximum de la chaîne de caractères.
208
+
```yaml
209
+
type: string
210
+
maxLength: 20
211
+
```
212
+
- **pattern (matches or regex)**: Définit une expression régulière à respecter.
213
+
```yaml
214
+
type: string
215
+
pattern: '^[a-zA-Z]+$'
216
+
```
217
+
- **email (format: 'email')**: Définit que la chaîne de caractères doit être un email.
218
+
```yaml
219
+
type: string
220
+
email: true
221
+
```
222
+
- **url (format: 'url')**: Définit que la chaîne de caractères doit être une URL.
223
+
```yaml
224
+
type: string
225
+
url: true
226
+
```
227
+
- **lowercase**: Convertit la chaîne de caractères en minuscule.
228
+
```yaml
229
+
type: string
230
+
lowercase: true
231
+
```
232
+
- **uppercase**: Convertit la chaîne de caractères en majuscule.
233
+
```yaml
234
+
type: string
235
+
uppercase: true
236
+
```
237
+
- **trim**: Supprime les espaces en début et fin de chaîne de caractères.
0 commit comments