AlfyChat
Langage :

Authentification Gateway

Les utilisateurs s'authentifient via JWT Bearer. Les bots ont leur propre token dédié.

Connexion utilisateur

POST
/api/auth/login

Retourne un JWT (15 min) et un refresh token (1 an)

POST /api/auth/login
js
const res = await fetch('https://gateway.alfychat.app/api/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ email: 'user@example.com', password: 'motdepasse' }),
});

const { token, refreshToken, user } = await res.json();
sessionStorage.setItem('token', token);
console.log('Connecté en tant que :', user.username);

Réponse

200 OK
json
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",  // JWT, 15 minutes
  "refreshToken": "a1b2c3d4e5f6...",                     // 1 an (365 jours)
  "user": {
    "id":         "u1a2b3c4-...",
    "username":   "Alice",
    "email":      "alice@example.com",
    "avatar":     "https://media.alfychat.app/avatars/...",
    "isVerified": true
  }
}

Utiliser le JWT

Requête protégée
http
GET /api/users/me HTTP/1.1
Host: gateway.alfychat.app
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Refresh du token

POST
/api/auth/refresh

Obtenir un nouveau JWT via le refresh token

POST /api/auth/refresh
json
// Corps de la requête
{ "refreshToken": "a1b2c3d4e5f6..." }

// Réponse 200
{
  "token":        "nouveau.jwt.ici",
  "refreshToken": "nouveau.refresh.token"
}

Autres endpoints auth

POST
/api/auth/register

Créer un nouveau compte utilisateur

POST
/api/auth/logout

Invalider la session (refresh token révoqué)

GET
/api/users/me

Profil de l'utilisateur connecté

PATCH
/api/users/me

Modifier le profil (username, avatar, bio, statut)

POST
/api/bots/authenticate

Vérifier et authentifier un token bot

Sécurité des tokens

  • Stockez le JWT en mémoire ou dans un cookie HttpOnly (pas localStorage)
  • Un JWT expiré retourne 401 Unauthorized — rafraîchissez-le avant expiration
  • En cas de compromission du refresh token, appelez /logout pour le révoquer