Connaissez-vous "strengthmeter" ?
C'est un paramètre supplémentaire qu'on peut ajouter à un champ de formulaire de type password. Il permet d'afficher sous le champ en question une barre horizontale colorée dont la couleur évolue selon les caractères frappés.
C'est dans le fichier xml qui définie les paramètres du formulaire qu'il faut ajouter cette valeur : strengthmeter="true" dans les définitions du champ password en question.
Par exemple :
On voit aussi que le paramètre strengthmeter est accompagné de threshold="66".
La valeur "66" est la valeur par défaut si le paramètre threshold n'est pas défini, donc, ici, la ligne threshold="66" n'est pas réellement nécessaire...
Ce paramètre définie le score minimum à obtenir pour valider le champ.
Ce score est obtenu dans l'appel du fichier passwordstrength.js qui est dans le répertoire /media/system/js/ par le bout de code que voici :
Les amateurs de javascript et de regex apprécieront sûrement et viendront éclairer notre lanterne, je compte sur eux...
Pour revenir à strengthmeter, le résultat de la manœuvre est interprété dans le fichier password.php qui est dans /libraries/joomla/form/fields/, par la fonction getInput().
Mais voilà le Hic : il y a un bug dans le code (Joomla! 3.1.4) !
Ligne 48 il est écrit :
alors qu'il faudrait :
pour que ça fonctionne plus bas à la ligne 84 qui déclanche l'apparition de cette fameuse barre colorée :
Voilà. J'espère avoir déclenché des vocations pour ce paramètre inconnu (indiqué nulle part dans la doc officielle).
C'est un paramètre supplémentaire qu'on peut ajouter à un champ de formulaire de type password. Il permet d'afficher sous le champ en question une barre horizontale colorée dont la couleur évolue selon les caractères frappés.
C'est dans le fichier xml qui définie les paramètres du formulaire qu'il faut ajouter cette valeur : strengthmeter="true" dans les définitions du champ password en question.
Par exemple :
<field name="password1" type="password"
autocomplete="off"
class="validate-password"
description="COM_USERS_DESIRED_PASSWORD"
field="password2"
filter="raw"
label="COM_USERS_REGISTER_PASSWORD1_LABEL"
message="COM_USERS_REGISTER_PASSWORD1_MESSAGE"
required="true"
size="30"
validate="equals"
strengthmeter="true"
threshold="66"
/>
(Ici les paramètres pour le champ "mot de passe" pour l'enregistrement d'un utilisateur)
autocomplete="off"
class="validate-password"
description="COM_USERS_DESIRED_PASSWORD"
field="password2"
filter="raw"
label="COM_USERS_REGISTER_PASSWORD1_LABEL"
message="COM_USERS_REGISTER_PASSWORD1_MESSAGE"
required="true"
size="30"
validate="equals"
strengthmeter="true"
threshold="66"
/>
(Ici les paramètres pour le champ "mot de passe" pour l'enregistrement d'un utilisateur)
La valeur "66" est la valeur par défaut si le paramètre threshold n'est pas défini, donc, ici, la ligne threshold="66" n'est pas réellement nécessaire...
Ce paramètre définie le score minimum à obtenir pour valider le champ.
Ce score est obtenu dans l'appel du fichier passwordstrength.js qui est dans le répertoire /media/system/js/ par le bout de code que voici :
String.implement({
strength: function(){
var n = 0;
if (this.match(/\d/)) n += 10;
if (this.match(/[a-z]+/)) n += 26;
if (this.match(/[A-Z]+/)) n += 26;
if (this.match(/[^\da-zA-Z]/)) n += 33;
return (n == 0) ? 0 : (this.length * n.log() / (2).log()).round();
}
});
strength: function(){
var n = 0;
if (this.match(/\d/)) n += 10;
if (this.match(/[a-z]+/)) n += 26;
if (this.match(/[A-Z]+/)) n += 26;
if (this.match(/[^\da-zA-Z]/)) n += 33;
return (n == 0) ? 0 : (this.length * n.log() / (2).log()).round();
}
});
Pour revenir à strengthmeter, le résultat de la manœuvre est interprété dans le fichier password.php qui est dans /libraries/joomla/form/fields/, par la fonction getInput().
Mais voilà le Hic : il y a un bug dans le code (Joomla! 3.1.4) !
Ligne 48 il est écrit :
$meter = ((string) $this->element['strengthmeter'] == 'true' ? ' $meter= 1' : ' $meter = 0');
$meter = ((string) $this->element['strengthmeter'] == 'true' ? '1' : '0');
if ($meter == 1)