@@ -15,54 +15,55 @@ export class PasswdadmService extends AbstractSettingsService {
1515 return this . setParameter ( 'passwordpolicies' , policies ) ;
1616 }
1717
18- public async checkPolicies ( password : string ) : Promise < boolean > {
18+ public async getPolicyViolation ( password : string ) : Promise < string | null > {
1919 const policies = await this . getPolicies ( ) ;
2020 if ( password . length < policies . len ) {
2121 this . logger . error ( 'Password too short' ) ;
22- return false ;
22+ return `Le mot de passe est trop court (minimum ${ policies . len } caractères)` ;
2323 }
24- //tes caracteres speciaux
2524 if ( policies . hasSpecialChars > 0 ) {
2625 if ( / [ ! @ # \$ % \^ \& * \) \( + = . _ - ] / . test ( password ) === false ) {
2726 this . logger . error ( 'must have special characters' ) ;
28- return false ;
27+ return 'Le mot de passe doit contenir au moins un caractère spécial' ;
2928 }
3029 }
3130 if ( policies . hasLowerCase > 0 ) {
3231 if ( / [ a - z ] / . test ( password ) === false ) {
3332 this . logger . error ( 'must have lower case characters' ) ;
34- return false ;
33+ return 'Le mot de passe doit contenir au moins une minuscule' ;
3534 }
3635 }
3736 if ( policies . hasUpperCase > 0 ) {
3837 if ( / [ A - Z ] / . test ( password ) === false ) {
3938 this . logger . error ( 'must have upper case characters' ) ;
40- return false ;
39+ return 'Le mot de passe doit contenir au moins une majuscule' ;
4140 }
4241 }
4342 if ( policies . hasNumbers > 0 ) {
4443 if ( / [ 0 - 9 ] / . test ( password ) === false ) {
4544 this . logger . error ( 'must have number' ) ;
46- return false ;
45+ return 'Le mot de passe doit contenir au moins un chiffre' ;
4746 }
4847 }
49- //calcul de l'entropie
5048 if ( policies . minComplexity > 0 ) {
5149 const c = stringEntropy ( password ) ;
5250 if ( c < policies . minComplexity ) {
5351 this . logger . error ( 'entropie trop faible' ) ;
54- return false ;
52+ return 'La complexité du mot de passe est insuffisante' ;
5553 }
5654 }
5755
58- // check si le mdp est pwned
5956 if ( policies . checkPwned === true ) {
6057 const numPwns = await pwnedPassword ( password ) ;
6158 if ( numPwns > 0 ) {
62- return false ;
59+ return "Ce mot de passe est déjà apparu lors d'une violation de données" ;
6360 }
6461 }
65- return true ;
62+ return null ;
63+ }
64+
65+ public async checkPolicies ( password : string ) : Promise < boolean > {
66+ return ( await this . getPolicyViolation ( password ) ) === null ;
6667 }
6768
6869 protected async defaultValues < T = PasswordPoliciesDto > ( ) : Promise < T > {
0 commit comments