Skip to content

Instantly share code, notes, and snippets.

@ld-web
Created April 15, 2025 07:58
Show Gist options
  • Save ld-web/934a2fbf75a9146d497bb70272a4b2ae to your computer and use it in GitHub Desktop.
Save ld-web/934a2fbf75a9146d497bb70272a4b2ae to your computer and use it in GitHub Desktop.

Atelier API Token

  • Dans votre base de données training_db, ajoutez les colonnes suivantes dans la table users :

    • 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 :

    • email
    • 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
  • 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 table users, au format INT 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment