Exercice 05 - Authentification avec clé Api
Vous pouvez faire cet exercice à partir de l'api que vous avez développé à l'exercice précédent ou bien débuter un nouveau projet. Si vous recommencez un api, assurez-vous d'avoir au moins une route qui retourne un résultat et que vous pourrez protéger.
1. Création d'un utilisateur
- Créer une table utilisateurs dans votre base de données. Vous devez avoir minimalement les champs id, nom, courriel, mot_de_passe et cle_api.
- Créez une route pour ajouter un nouvel utilisateur.
POST /api/users
// Les informations seront dans le corps de la requête
{
"nom" : "Mathieu",
"courriel" : "math@cegepvicto.ca",
"mot_de_passe" : "123patates"
}
- Avant de créer l'utilisateur, assurez-vous que tous les champs nécessaire sont présent et que le courriel est unique dans la table. Retournez le bon message d'erreur le cas échéant.
- Utilisez la méthode que vous souhaitez pour générer la clé api.
- Le mot de passe doit être hashé avec BCrypt avant d'être sauvegarder dans la base de données.
- La réponse de la requête doit être formaté comme suit.
2. Intergiciel de validation
- Créez un intergiciel qui va valider que la clé est présente dans l'entête de la requête existe dans la base de donnée. Vous devez utiliser Authorization.
- Retournez une erreur si la clé n'est pas présente ou si elle est invalide.
3. Protection d'un route
- Protégez une de vos routes avec l'intergiciel et testez son fonctionnement.
4. Ajout d'une route pour récupérer la clé
- Ajoutez une route pour permettre à un utilisateur de récupérer sa clé API s'il la oublié. On peut aussi ajouté un paramêtre dans l'url pour demander d'en générer une nouvelle.
GET /api/users/cle?nouvelle=1
// Les informations seront dans le corps de la requête
{
"courriel" : "math@cegepvicto.ca",
"mot_de_passe" : "123patates"
}
- Validez que le courriel et le mot de passe correspondent.
- Si le paramêtre nouvelle est présent et égale à 1, générez une nouvelle clé.
- Retourner la nouvelle clé ou l'ancienne à l'utilisateur.