Votre site internet comporte un espace utilisateur ? Actuellement, il faut cliquer sur le bouton de connexion pour voir si le mot de passe est au bon format ou non ? Vous souhaitez que cela s’affiche en direct au fur et à mesure que l’utilisateur saisi son mot de passe afin de lui faciliter la vie ? Vous êtes sur le bon tutoriel !

L’objectif de cet article, et que vous soyez capable, à la fin, d’indiquer à l’utilisateur si le format de son mot de passe est correct ou pas avant qu’il ne clique sur le bouton valider.

Ici, nous demanderons un mot de passe avec au moins 8 caractères, au moins une majuscule et une minuscule, ainsi qu’avec au moins un caractère spécial.

 

Éléments visuels de base

Nous aurons donc besoin de :

  • un champ mot de passe,
  • une fenêtre avec les informations, qui s’affiche lorsque le champ est focus, c’est-à-dire quand l’utilisateur l’a activé pour saisir des données,
  • un bloc qui regroupe ces deux éléments, pour pouvoir les positionner de façon propre.

Voici un exemple complet pour la mise en place des éléments de base.

 

Gérer la validité du mot de passe

Maintenant que les bases sont placées, nous allons pouvoir passer au JavaScript. Le tout sera réalisé avec jQuery.

Nous allons créer une fonction qui va gérer la validité du mot de passe. Cette fonction sera appelée à chaque fois que l’utilisateur saisie ou supprime un caractère dans le champ.

const checkPassword = function() { ... }

Pour le moment, pas de tests, seulement une simulation de la validité. Nous aurons une variable good qui contient une boolean servant à indiquer si le mot de passe est valide ou non.

let good = false

Quand un test a déjà été effectué, le champ sera affiché avec des bordures vertes ou rouge, grâce aux classes valid et error. Il faudra donc penser à réinitialiser cette donnée à chaque test.

$('#password')
  .removeClass('valid')
  .removeClass('error')

Maintenant, nous allons traiter le mot de passe. Pour cela, il faut commencer par le récupérer.

let password = $('#password').val()
C’est à cet endroit précis que nous placerons les tests de la prochaine sous-partie du tutoriel.

Enfin gérer à la fois la couleur du champ et l’affichage du bouton de connexion. Pour ce faire, nous allons nous baser sur la variable good. Elle sera modifiée progressivement en fonction des tests, mais nous reviendrons là-dessus après. Donc, si le mot de passe est valide, donc que good est à true, le champ deviendra vert et le bouton de connexion s’affichera. Dans le cas inverse, si good est à false, le champ passera en rouge et le bouton sera masqué.

Pour être plus user friendly, on va éviter de mettre le champ en rouge si le mot de passe est vide (pas encore saisi ou vidé). Pour cela, une simple condition sur la taille du mot de passe suffira.
if( good ) {
  $('#password').addClass('valid')
  $('#connect').show()
}
else {
  if( password.length > 0 ) {
    $('#password').addClass('error')
  }
  $('#connect').hide()
}

La fonction est prête. Il va maintenant falloir l’appeler à deux moments :

  • Au chargement de la page, pour gérer un éventuel mot de passe sauvegardé temporairement (même si pour des raisons de sécurité les navigateurs ne sont pas censé le faire),
  • Dès que l’utilise modifie le champ, grâce à l’événement input.
$(function() {
  checkPassword()
  $('#password').on('input', checkPassword)
})

Dans cet exemple, vous pouvez modifier la variable good (ligne 3) pour constater le changement de comportement.

 

Trouvez le meilleur développeur web sur Codeur.com

Vos premiers devis en 15 minutes

Gratuit et sans obligation

Déjà plus de 75 000 clients

Trouver un freelance

 

Tests sur le mot de passe

Maintenant que la gestion de la validée du mot de passe est faite et que le résultat des tests est simulé, nous allons pouvoir passer aux tests eux-même.

Souvenez-vous de la variable good. Elle va devenir le fil-rouge des tests. Nous allons la rendre valide dès le début (true), puis faire tous les tests dans l’ordre et l’invalide dès qu’un test est refusé. C’est la méthode la plus optimisée pour gérer une série de tests.

Tous les tests qui vont suivre seront effectués avec des RegEx ou « expressions régulières » .

Si vous n’êtes pas familiarisé avec elles, comprendre et surtout adapter le tutoriel va être très compliqué. Nous recommandons dans ce cas de demander l’aide d’un freelance via le site Codeur.com.

Les tests de façon général

De manière très général, chaque test ressemblera au précédent et suivra une logique :

  • Si le test est valide :
    • Alors, l’indication dans la fenêtre d’aide passe du rouge au vert.
  • Sinon :
    • L’indication dans la fenêtre d’aide passe du vert au rouge.
    • La variable good passe à false (test invalidés)/
if( /*Test ici*/ ) {
  $( /*selecteur_aide*/ ).removeClass('error').addClass('valid')
}
else {
  $( /*selecteur_aide*/ ).removeClass('valid').addClass('error')
  good = false
}

Si c’est ok pour vous alors c’est parti.

Longueur du mot de passe

Pas de regEx ici, on vérifie tout simplement que le mot passe comporte au moins 8 caractères.

password.length >= 8
Pas de fonction trim ici. Il s’agit d’un mot de passe, chaque caractère compte, même les espaces.
if( password.length >= 8 ) {
  $('#password-alert-length').removeClass('error').addClass('valid')
}
else {
  $('#password-alert-length').removeClass('valid').addClass('error')
  good = false
}

La majuscule

Le test suivant consiste à vérifier que le mot de passe contienne au moins une majuscule, comprise entre A et Z. Attention, pas de flag i, car on doit gérer la casse.

if( /[A-Z]/.test(password) ) {
  $('#password-alert-upper').removeClass('error').addClass('valid')
}
else {
  $('#password-alert-upper').removeClass('valid').addClass('error')
  good = false
}

La minuscule

Même chose pour la majuscule, mais avoir une minuscule (en respectant la casse) cette fois.

if( /[a-z]/.test(password) ) {
  $('#password-alert-lower').removeClass('error').addClass('valid')
}
else {
  $('#password-alert-lower').removeClass('valid').addClass('error')
  good = false
}

Le chiffre

if( /[1-9]/.test(password) ) {
  $('#password-alert-number').removeClass('error').addClass('valid')
}
else {
  $('#password-alert-number').removeClass('valid').addClass('error')
  good = false
}

Le caractère spécial

if( /[&#-_|!?]/.test(password) ) {
  $('#password-alert-special').removeClass('error').addClass('valid')
}
else {
  $('#password-alert-special').removeClass('valid').addClass('error')
  good = false
}

Résultat final

Vous pouvez retrouver le code complet et le tester avec cet exemple.

 

Notre astuce pour afficher les éléments à ajouter à un mot de passe

Vous savez à présent comment afficher à l’utiliser les éléments qu’il doit indiquer dans son mot de passe, avec des codes couleurs mis à jour en direct. Il ne tient qu’à vous à présent d’adapter les tests pour votre site internet.

Si la tâche est trop ardue, n’hésitez pas à demander de l’aide auprès d’un développeur jQuery sur Codeur.com. Le dépôt d’annonce est gratuit et vous recevrez rapidement de nombreuses candidatures pour réaliser votre projet.