-
Dans votre base de données
training_db
, ajoutez les colonnes suivantes dans la tableusers
:- password VARCHAR(255)
- api_token VARCHAR(255)
-
Créez une page HTML d'inscription à votre service d'API, contenant uniquement un formulaire avec les champs suivants :
- Mot de passe
- Confirmation du mot de passe
-
À la soumission du formulaire d'inscription, réalisez les opérations suivantes :
- Insérer un nouveau compte dans la table
users
(vous pouvez le faire directement en PHP avec PDO, pas besoin de passer par du JS et l'API avec une requête POST) - Pensez à hacher le mot de passe avec la fonction
password_hash
- Générer une clé d'API pour la colonne
api_token
(chercher sur internet comment générer une chaîne aléatoire en PHP) - Affichez une page de confirmation d'inscription présentant la clé d'API générée
- Insérer un nouveau compte dans la table
-
Modifiez ensuite votre API pour qu'à chaque requête, elle récupère en paramètre GET une clé d'API :
- Refuser l'accès à l'API si aucune clé n'est fournie (code de réponse 401)
- Si une clé est fournie, vérifier qu'elle existe pour un utilisateur :
- si c'est le cas, exécuter le endpoint demandé
- sinon, refuser l'accès à l'API (code de réponse)
Bonus :
- Ajouter une colonne
nb_api_requests
dans la tableusers
, au formatINT NOT NULL DEFAULT 0
, pour garder une trace du nombre de requêtes d'API effectuées par un utilisateur - À chaque requête d'API, augmenter de 1 le nombre de requêtes effectuées par l'utilisateur authentifié
- Au-delà de 10 requêtes, refuser l'accès à l'API et renvoyer un code 429