Documentation de l’API Backend (DAB)

Inscription et Connexion

Temps estimé :7 minutes 75 views

Inscription

L’implémentation de la fonctionnalité d’inscription des utilisateurs avec les champs requis suivants : nom, prénom, adresse e-mail, mot de passe, adresse, nom du cabinet, et Siren du cabinet (facultatif). L’inscription des utilisateurs est gérée via l’API REST de Drupal.

Prérequis

installés et activés les modules suivants :
RESTful Web Services
REST UI

Configuration des Champs Utilisateur

Pour ajouter les champs utilisateur requis, accédez à l’interface d’administration de Drupal. Par défaut, les champs disponibles pour les utilisateurs sont name (nom d’utilisateur), mail (adresse e-mail) et pass (mot de passe). Nous allons ajouter des champs supplémentaires pour collecter des informations plus détaillées lors de l’inscription.

  1. Accédez à /admin/config/people/accounts/fields
  2. Ajoutez les champs suivants
    • firstName (field_firstname) : de type Texte (texte simple)
    • lastName (field_lastname) : de type Texte (texte simple)
    • cabinet (field_cabinet) : de type Texte (texte simple)
    • Siren du cabinet (field_siren) : de type Texte (texte simple, facultatif)

Activation et Configuration des Modules REST

  1. Allez dans Extend et recherchez les modules RESTful Web Services et REST UI, puis activez-les
  2. Configurer le point de terminaison de l’inscription utilisateur :
    • Allez dans Configuration > Web services > REST ou directement à l’URL /admin/config/services/rest.
    • Activez le point de terminaison /user/register: POST.
  3. Cliquez sur Edit pour configurer le point de terminaison :
    • Granularity : Resource
    • Methods : POST
    • Accepted request formats : JSON
    • Authentication providers : Cookies
  4. Configuration des Permissions :
    • Allez dans People > Permissions ou directement à l’URL /admin/people/permissions
    • Accordez la permission Access POST on User registration resource à l’utilisateur Anonymous

NB : Par défaut, Drupal permet aux utilisateurs de créer des comptes, de définir leur mot de passe et d’être immédiatement connectés, ou de créer leur compte, d’attendre un e-mail de vérification, puis de créer leur mot de passe. Lorsque le processus d’activation par e-mail est requis, les utilisateurs ne peuvent pas choisir leur propre mot de passe dès le début du processus d’inscription, ce qui peut être source de frustration et réduire l’expérience utilisateur. Le module User Registration Password résout ce problème en permettant aux utilisateurs de créer leur compte avec un mot de passe dès l’inscription initiale et simplement activer leur compte en recevant l’e-mail de vérification.

Le module User Registration Password

Pour installer ce module, utilisez Composer en exécutant la commande suivante à la racine de votre projet Drupal :

composer require 'drupal/user_registrationpassword:^2.0'

Assurez-vous d’exécuter composer install après l’installation pour mettre à jour les dépendances.

  • Allez dans Extend (/admin/modules) , recherchez User registration password dans la liste des modules et activez-le
  • Allez dans Configuration > People > Account settings > Registration and cancellation (/admin/config/people/accounts)
    • Cochez la case Visitors, but administrator approval is required sous la section Registration and cancellation pour activer la vérification par e-mail
    • Cochez également la case Do not require a verification email, and let users set their password on the registration form dans la section Require email verification when a visitor creates an account
  • Accordez la permission Access POST on User registration resource à l’utilisateur Anonymous.

Tester l’Inscription avec Mot de Passe via Postman

  • Créez une requête POST vers https://votre-site-drupal.com/user/register?_format=json
  • Ajoutez les en-têtes Content-Type: application/json
  • Dans le corps de la requête JSON, incluez le champ pass avec le mot de passe souhaité :
{
    "name": {
        "value": "[email protected]"
    },
    "mail": {
        "value": "[email protected]"
    },
    "pass": {
        "value": "your_password_here"
    },
    "field_firstname": {
        "value": "your_firtsname_here"
    },
    "field_lastname": {
        "value": "your_lastname_here"
    },
    "field_cabinet": {
        "value": "your_company_here"
    },
    "field_siren": {
        "value": "your_siren_here"
    }
}

L’utilisateur est bien créé et un e-mail d’activation lui a été envoyé. Cependant, le statut de son compte est défini sur « blocked ». L’utilisateur ne pourra pas se connecter tant qu’il n’aura pas activé son compte pour obtenir le statut « active ». Nous allons maintenant aborder l’étape suivante : l’activation du compte.

Activation de compte

????

Demande d’un lien d’activation de compte

??

Demande de Réinitialisation de mot de passe

Pour permettre aux utilisateurs de réinitialiser leur mot de passe sur un site décentralisé (découplé) utilisant Drupal 10 en tant que backend, nous avons implémenté le module « Rest Password Reset ». Ce module offre des points de terminaison API REST permettant aux utilisateurs de demander leur nom d’utilisateur ou de réinitialiser leur mot de passe via des appels API.

Pour installer ce module, utilisez la commande composer suivante :

composer require 'drupal/rest_password_reset:^1.1'
  • Allez dans Extend (/admin/modules) , recherchez Rest Password Reset dans la liste des modules et activez-le
  • Allez dans Configuration > Web services > REST ou directement à l’URL /admin/config/services/rest pour configurer les points de terminaison REST fournis par le module à savoir :
    • GET /api/user/username/{email} : qui permet de récupérer le nom d’utilisateur associé à une adresse e-mail
    • GET /api/user/reset/{email} : qui envoie un e-mail avec un lien de réinitialisation de mot de passe à l’adresse e-mail fournie
    • POST /api/user/reset/password : qui permet de réinitialiser le mot de passe en fournissant les nouveaux paramètres (uid, timestamp,hash,new_password ) via une requête POST
  • Utilisez l’authentification par cookies pour permettre aux applications frontend d’interagir avec les points de terminaison sans nécessiter une authentification préalable
  • Assurez-vous que les utilisateurs anonymes ont accès aux points de terminaison REST requis. Cela peut être configuré via People -> Permissions
  • Pour configurer l’URI du frontend et le suffixe, ainsi que personnaliser l’e-mail de réinitialisation reçu par l’utilisateur, allez dans Configuration > Web services > Rest Password Reset. Cette option n’apparaît pas directement dans la liste déroulante des services web, mais vous y accéderez en cliquant sur Web services

Connexion

Pour configurer une API de connexion sécurisée sur Drupal 10, commencez par installer et activer les modules nécessaires : JSON:API, JSON:API Extras, Simple OAuth, et Consumers. Configurez ensuite JSON:API pour définir les permissions des endpoints et utilisez JSON:API Extras pour personnaliser les routes et les champs exposés. Configurez Simple OAuth en générant des clés pour l’authentification OAuth 2.0 et ajustez les permissions du répertoire de stockage. Créez un rôle spécifique (par exemple, « Expert ») avec les permissions appropriées, puis ajoutez un consumer associé à ce rôle. Enfin, créez un utilisateur avec le rôle défini, générez un token OAuth via une requête POST, et utilisez ce token pour accéder aux endpoints JSON sécurisés. (Référez-vous au document Configuration et Sécurisation de l’API pour plus d’informations.)

Connexion par e-mail avec le module Email Registration

Pour améliorer l’expérience utilisateur et simplifier la gestion des comptes, nous avons utilisé le module Email Registration. Ce module permet aux utilisateurs de se connecter à l’aide de leur adresse e-mail au lieu de leur nom d’utilisateur. Voici comment l’installer :

composer require 'drupal/email_registration:^2.0@RC'

Activer le et accédez à /admin/config/people/accounts et configurez le pour permettre la connexion par e-mail

Voici un exemple de requête de connexion pour obtenir un token d’accès en utilisant curl :

curl --request POST \
  --url http://example.com/oauth/token \
  --header 'content-type: application/json' \
  --data '{
    "grant_type": "password",
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET",
    "username": "[email protected]",
    "password": "userpassword"
  }'

Explication des paramètres

  • grant_type: Type de la demande. Ici, nous utilisons password pour indiquer que nous fournissons un nom d’utilisateur et un mot de passe.
  • client_id: L’identifiant du client OAuth 2.0.
  • client_secret: Le secret du client OAuth 2.0.
  • username: L’adresse e-mail de l’utilisateur.
  • password: Le mot de passe de l’utilisateur.

Réponse Attendue

Vous devriez recevoir une réponse contenant un token d’accès comme ceci :

{
  "access_token": "YOUR_ACCESS_TOKEN",
  "expires_in": 3600,
  "token_type": "Bearer",
  "scope": null,
  "refresh_token": "YOUR_REFRESH_TOKEN"
}

Utilisation du Token d’Accès

Une fois que vous avez le token d’accès, vous pouvez l’utiliser pour accéder aux endpoints protégés de votre API. Par exemple :

curl --request GET \
  --url http://example.com/api/article \
  --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
CONTENTS