@colisweb/rescript-toolkit 5.11.0 → 5.13.0
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/locale/fr.json
CHANGED
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"defaultMessage": "Format requis : 14 chiffres",
|
|
25
25
|
"message": "Format requis : 14 chiffres"
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
"id": "_1a17bbef",
|
|
29
|
+
"defaultMessage": "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre.",
|
|
30
|
+
"message": "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre."
|
|
31
|
+
},
|
|
27
32
|
{
|
|
28
33
|
"id": "_242e1892",
|
|
29
34
|
"defaultMessage": "Cette valeur ne peut être supérieure à {value}.",
|
|
@@ -64,6 +69,11 @@
|
|
|
64
69
|
"defaultMessage": "Samedi",
|
|
65
70
|
"message": "Samedi"
|
|
66
71
|
},
|
|
72
|
+
{
|
|
73
|
+
"id": "_4c9b77dc",
|
|
74
|
+
"defaultMessage": "Le mot de passe ne peut pas contenir l'identifiant.",
|
|
75
|
+
"message": "Le mot de passe ne peut pas contenir l'identifiant."
|
|
76
|
+
},
|
|
67
77
|
{
|
|
68
78
|
"id": "_4df46058",
|
|
69
79
|
"defaultMessage": "Semaine {number}",
|
|
@@ -124,6 +134,11 @@
|
|
|
124
134
|
"defaultMessage": "Ce mois",
|
|
125
135
|
"message": "Ce mois"
|
|
126
136
|
},
|
|
137
|
+
{
|
|
138
|
+
"id": "_7fca1009",
|
|
139
|
+
"defaultMessage": "Veuillez ne pas utiliser votre idenfiant comme mot de passe",
|
|
140
|
+
"message": "Veuillez ne pas utiliser votre idenfiant comme mot de passe"
|
|
141
|
+
},
|
|
127
142
|
{
|
|
128
143
|
"id": "_8f8eb0df",
|
|
129
144
|
"defaultMessage": "Vendredi",
|
package/package.json
CHANGED
package/src/form/ReSchema.res
CHANGED
|
@@ -28,6 +28,7 @@ module Make = (Lenses: Lenses) => {
|
|
|
28
28
|
type rec t =
|
|
29
29
|
| Email({field: Lenses.field<string>, error: option<string>}): t
|
|
30
30
|
| Phone({field: Lenses.field<string>, error: option<string>}): t
|
|
31
|
+
| Password({field: Lenses.field<string>, error: option<string>}): t
|
|
31
32
|
| NoValidation({field: Lenses.field<'a>}): t
|
|
32
33
|
| StringNonEmpty({field: Lenses.field<string>, error: option<string>}): t
|
|
33
34
|
| StringRegExp({field: Lenses.field<string>, matches: string, error: option<string>}): t
|
|
@@ -83,6 +84,7 @@ module Make = (Lenses: Lenses) => {
|
|
|
83
84
|
|
|
84
85
|
let email = (~error=?, field) => [Email({field, error})]
|
|
85
86
|
let phone = (~error=?, field) => [Phone({field, error})]
|
|
87
|
+
let password = (~error=?, field) => [Phone({field, error})]
|
|
86
88
|
|
|
87
89
|
let nonEmpty = (~error=?, field) => [StringNonEmpty({field, error})]
|
|
88
90
|
|
|
@@ -216,6 +218,19 @@ module Make = (Lenses: Lenses) => {
|
|
|
216
218
|
}
|
|
217
219
|
},
|
|
218
220
|
)
|
|
221
|
+
| Validation.Password({field, error}) => {
|
|
222
|
+
let value = Lenses.get(values, field)
|
|
223
|
+
|
|
224
|
+
(
|
|
225
|
+
Field(field),
|
|
226
|
+
switch value {
|
|
227
|
+
| "" => Error(i18n.stringNonEmpty(~value=""))
|
|
228
|
+
| password if !Js.Re.test_(%re("/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{10,}/"), password) =>
|
|
229
|
+
Error(error->Option.getWithDefault(i18n.passwordTooShort))
|
|
230
|
+
| _ => Valid
|
|
231
|
+
},
|
|
232
|
+
)
|
|
233
|
+
}
|
|
219
234
|
| Validation.NoValidation({field}) => (Field(field), Valid)
|
|
220
235
|
| Validation.StringNonEmpty({field, error}) =>
|
|
221
236
|
let value = Lenses.get(values, field)
|
|
@@ -314,6 +329,7 @@ module Make = (Lenses: Lenses) => {
|
|
|
314
329
|
| Validation.FloatMin({field}) => Field(field) == fieldName
|
|
315
330
|
| Validation.FloatMax({field}) => Field(field) == fieldName
|
|
316
331
|
| Validation.Email({field}) => Field(field) == fieldName
|
|
332
|
+
| Validation.Password({field}) => Field(field) == fieldName
|
|
317
333
|
| Validation.NoValidation({field}) => Field(field) == fieldName
|
|
318
334
|
| Validation.StringNonEmpty({field}) => Field(field) == fieldName
|
|
319
335
|
| Validation.StringRegExp({field}) => Field(field) == fieldName
|
|
@@ -334,6 +350,7 @@ module Make = (Lenses: Lenses) => {
|
|
|
334
350
|
| Validation.False({field}) => Field(field) == fieldName
|
|
335
351
|
| Validation.Phone({field}) => Field(field) == fieldName
|
|
336
352
|
| Validation.True({field}) => Field(field) == fieldName
|
|
353
|
+
| Validation.Password({field}) => Field(field) == fieldName
|
|
337
354
|
| Validation.IntMin({field}) => Field(field) == fieldName
|
|
338
355
|
| Validation.IntMax({field}) => Field(field) == fieldName
|
|
339
356
|
| Validation.FloatMin({field}) => Field(field) == fieldName
|
|
@@ -11,6 +11,7 @@ type t = {
|
|
|
11
11
|
stringMin: (~value: string, ~min: int) => string,
|
|
12
12
|
stringMax: (~value: string, ~max: int) => string,
|
|
13
13
|
phone: string,
|
|
14
|
+
passwordTooShort: string,
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
let default = {
|
|
@@ -33,4 +34,5 @@ let default = {
|
|
|
33
34
|
stringMax: (~value as _value, ~max) =>
|
|
34
35
|
`Le champ doit avoir au maximum ${max->Int.toString} caractères.`,
|
|
35
36
|
phone: "Format du numéro invalide. Ex : +33612345678",
|
|
37
|
+
passwordTooShort: "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre.",
|
|
36
38
|
}
|
package/src/form/Reform.res
CHANGED
|
@@ -112,6 +112,7 @@ module Make = (Config: Config) => {
|
|
|
112
112
|
| Validation.FloatMax({field}) => (Field(field), Pristine)
|
|
113
113
|
| Validation.Email({field}) => (Field(field), Pristine)
|
|
114
114
|
| Validation.Phone({field}) => (Field(field), Pristine)
|
|
115
|
+
| Validation.Password({field}) => (Field(field), Pristine)
|
|
115
116
|
| Validation.NoValidation({field}) => (Field(field), Pristine)
|
|
116
117
|
| Validation.StringNonEmpty({field}) => (Field(field), Pristine)
|
|
117
118
|
| Validation.StringRegExp({field}) => (Field(field), Pristine)
|
|
@@ -48,6 +48,15 @@ module Msg = {
|
|
|
48
48
|
}
|
|
49
49
|
let optionNonEmpty = {defaultMessage: "Champ requis"}
|
|
50
50
|
let invalidValue = {defaultMessage: "Valeur non valide."}
|
|
51
|
+
let passwordTooShort = {
|
|
52
|
+
defaultMessage: "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre.",
|
|
53
|
+
}
|
|
54
|
+
let passwordCantBeEqualLogin = {
|
|
55
|
+
defaultMessage: "Veuillez ne pas utiliser votre idenfiant comme mot de passe",
|
|
56
|
+
}
|
|
57
|
+
let passwordCantContainLogin = {
|
|
58
|
+
defaultMessage: "Le mot de passe ne peut pas contenir l'identifiant.",
|
|
59
|
+
}
|
|
51
60
|
}
|
|
52
61
|
|
|
53
62
|
let toReSchemaResult = (opt: option<string>): ReSchema.fieldState<'a> =>
|
|
@@ -395,3 +404,14 @@ let required14Digits = (intl, value) => {
|
|
|
395
404
|
}
|
|
396
405
|
}
|
|
397
406
|
}
|
|
407
|
+
let password = (intl, ~login, value) => {
|
|
408
|
+
switch value {
|
|
409
|
+
| "" => Some(Intl.formatMessage(intl, Msg.requiredValue))
|
|
410
|
+
| p if !Js.Re.test_(%re("/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{10,}/"), p) =>
|
|
411
|
+
Some(intl->Intl.formatMessage(Msg.passwordTooShort))
|
|
412
|
+
| p if p === login => Some(intl->Intl.formatMessage(Msg.passwordCantBeEqualLogin))
|
|
413
|
+
| p if p->Js.String2.toLowerCase->Js.String2.includes(login->Js.String2.toLowerCase) =>
|
|
414
|
+
Some(intl->Intl.formatMessage(Msg.passwordCantContainLogin))
|
|
415
|
+
| _ => None
|
|
416
|
+
}
|
|
417
|
+
}
|