Skip to main content

authentification

Cette API permet aux utilisateurs du backoffice de s’authentifier et de gérer leur accès à la plateforme Connect My Zone.


Login

Authentification d'un utilisateur avec son email et son mot de passe.

Endpoint : POST /login

Authentification : Aucune

Headers requis :

Accept: application/json

Paramètres :

ChampTypeRequisDescription
emailstringNon*Adresse email de l'utilisateur
passwordstringOuiMot de passe de l'utilisateur

Notes :

  • Vous devez fournir email ou phone (pas les deux)

Requête avec email:

curl -X POST https://api-services.mazone-test.ansut.ci/auth/v1.0/users/backoffice/login \
-H "Accept: application/json" \
-F "email=utilisateur@exemple.com" \
-F "password=monMotDePasse123"
  1. Succès - Compte actif sans 2FA (200)

L'utilisateur est authentifié et reçoit son token d'accès.

{
"error": false,
"message": "Successfully",
"data": {
"user": {
"id": "019e0224-fdda-7074-b959-1851680bcad0",
"last_name": "Abdallah",
"first_name": "Diarra",
"email": "utilisateur@exemple.com",
"phone": "0544411389",
"email_verified_at": "2026-05-07 11:23:33",
"profile": "utilisateur-standard",
"status": "active",
"photo": null
},
"token": {
"value": "33|eal7VIlccnooIKTC9kgmBimAfKYuzIgQP9qyOuHhccd8fb23",
"expiresAt": null
}
}
}
  1. Succès - Compte en attente (pending) ou 2FA activé (200)

Un code OTP à 4 chiffres est envoyé par email à l'utilisateur (valable 5 minutes). La réponse contient uniquement l'email.

"utilisateur@exemple.com"
  1. Erreur - Identifiants incorrects par email (400)
{
"error": true,
"statusCode": 400,
"message": "Email ou mot de passe incorrect"
}
  1. Erreur - Identifiants incorrects par téléphone (400)
{
"error": true,
"statusCode": 400,
"message": "Numéro de téléphone ou mot de passe incorrect"
}
  1. Erreur - Compte temporairement bloqué (400)
{
"error": true,
"statusCode": 400,
"message": "Votre compte est temporairement bloqué. Veuillez réessayer dans X minutes."
}

Après 3 tentatives de connexion échouées consécutives.

Règles de sécurité

RègleValeur
Tentatives maximales avant blocage3 échecs consécutifs
Durée du blocageConfigurable (ex: 3 minutes)
Durée de validité de l'OTP5 minutes

Informations tracées dans les logs :

  • Adresse IP

  • User-Agent

  • Type d'action (tentative, succès, échec, blocage)

Notes importantes

  • Le champ channel=mobile est à utiliser uniquement pour l'application mobile

  • Les comptes avec statut pending ou avec 2FA activée nécessitent une validation OTP

  • Chaque tentative échouée incrémente le compteur interne attempts

  • Après déblocage, le compteur de tentatives est réinitialisé


Envoi d'OTP par email

Cette API permet d'envoyer un code OTP (One-Time Password) à 4 chiffres par email à un utilisateur. Le code est valable 5 minutes.

Endpoint : POST /send-otp

Authentification : Aucune

Headers requis :

Accept: application/json

Content-Type: application/json

Paramètres :

ChampTypeRequisDescription
emailstringOuiAdresse email du compte utilisateur

Requête standard :

curl -X POST https://api-services.mazone-test.ansut.ci/auth/v1.0/users/backoffice/send-otp \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "utilisateur@exemple.com"
}'

Réponses

  1. Succès (200)

Un code OTP à 4 chiffres a été envoyé par email. La réponse contient l'email de l'utilisateur.

{
"error": false,
"statusCode": 200,
"message": "utilisateur@exemple.com"
}
  1. Erreur - Utilisateur non trouvé (400)
{
"error": true,
"statusCode": 400,
"message": "Utilisateur non trouvé."
}
  1. Erreur - Trop de requêtes / Rate limiting (429)

Un délai d'attente est imposé entre deux envois d'OTP pour éviter les abus.

{
"error": true,
"statusCode": 429,
"message": "Trop de tentatives. Veuillez patienter avant de renvoyer un code."
}

Règles de sécurité

RègleValeur
Format de l'OTP4 chiffres (1000 à 9999)
Durée de validité de l'OTP5 minutes
Rate limitingOui (délai entre deux envois)
Clé de cache rate limitingotp:send:email

Validation d'OTP par email (connexion)

Cette API permet de valider un code OTP reçu par email pour finaliser l'authentification d'un utilisateur avec un compte en statut pending ou avec 2FA activée.

Endpoint : POST /validate-otp

Authentification : Aucune

Headers requis :

Accept: application/json

Content-Type: application/json

Paramètres :

ChampTypeRequisDescription
emailstringOuiAdresse email de l'utilisateur
otpstringOuiCode OTP à 4 chiffres reçu par email

Requête :

curl -X POST https://api-services.mazone-test.ansut.ci/auth/v1.0/users/backoffice/validate-otp \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "utilisateur@exemple.com",
"otp": "1234"
}'

Réponses

  1. Succès - Authentification complète (200)

Le code OTP est valide, l'utilisateur est authentifié et reçoit son token d'accès.

{
"error": false,
"message": "Successfully",
"data": {
"user": {
"id": "019e0224-fdda-7074-b959-1851680bcad0",
"last_name": "Abdallah",
"first_name": "Diarra",
"email": "utilisateur@exemple.com",
"phone": "0544411389",
"email_verified_at": "2026-05-07 11:23:33",
"profile": "utilisateur-standard",
"status": "active",
"photo": null
},
"token": {
"value": "33|eal7VIlccnooIKTC9kgmBimAfKYuzIgQP9qyOuHhccd8fb23",
"expiresAt": null
}
}
}
  1. Erreur - Utilisateur non trouvé (400)
{
"error": true,
"statusCode": 400,
"message": "Utilisateur non trouvé."
}
  1. Erreur - Code OTP incorrect (400)
{
"error": true,
"statusCode": 400,
"message": "Code OTP incorrect"
}
  1. Erreur - Code OTP expiré (400)
{
"error": true,
"statusCode": 400,
"message": "Code OTP expiré"
}

Comportement détaillé

Validation : L'email est validé et parsé

Recherche utilisateur : L'utilisateur est recherché par son email

Vérification existence : Si l'utilisateur n'existe pas → erreur

Vérification code OTP : Si le code ne correspond pas → erreur

Vérification expiration : Si l'OTP a expiré (plus de 5 minutes) → erreur

Nettoyage OTP : Suppression de l'OTP et de sa date d'expiration

Activation du compte :

Statut passe à active

email_verified_at est défini (si non déjà fait)

Déblocage : Le compte est débloqué si nécessaire

Génération token : Création d'un token d'authentification

Log : Enregistrement de la connexion dans les logs

Réponse : Retourne les informations utilisateur et le token


Déconnexion

Cette API permet à un utilisateur de se déconnecter en révoquant son token d'authentification actuel.

Endpoint : PUT /logout

Authentification : Bearer Token

Headers requis : Accept: application/json

Requête :

curl -X PUT https://api-services.mazone-test.ansut.ci/auth/v1.0/users/backoffice/logout \
-H "Authorization: Bearer 33|eal7VIlccnooIKTC9kgmBimAfKYuzIgQP9qyOuHhccd8fb23" \
-H "Accept: application/json"

Réponse succès (200) :

{
"error": false,
"message": "Déconnexion réussie."
}