Skip to content

Authentification

Présentation

L'authentification de BTP Chantier Pro est gérée par Supabase Auth. Elle utilise le mécanisme JWT (JSON Web Token) avec email et mot de passe.

Mécanisme de connexion

  1. L'utilisateur saisit son email et son mot de passe
  2. Le frontend envoie les identifiants à Supabase Auth
  3. Supabase Auth vérifie les identifiants dans la table auth.users
  4. En cas de succès, Supabase retourne un JWT d'accès et un JWT de rafraîchissement
  5. Le JWT est stocké dans le localStorage du navigateur
  6. Toutes les requêtes suivantes incluent le JWT dans l'en-tête Authorization

Durée de session

JWT d'accès       : 1 heure
JWT de refresh    : 7 jours
Renouvellement    : automatique par le SDK Supabase

Création d'un compte

Les comptes utilisateurs sont créés de deux façons :

  • Par inscription directe sur la page de connexion
  • Par invitation depuis la page Organisation

Réinitialisation du mot de passe

  1. L'utilisateur clique sur Mot de passe oublié
  2. Supabase Auth envoie un email avec un lien de réinitialisation
  3. Le lien est valide pendant 24 heures
  4. L'utilisateur définit un nouveau mot de passe

Gestion côté code

La connexion est gérée dans App.jsx via les méthodes du SDK Supabase :

// Connexion
const { data, error } = await db.auth.signInWithPassword({
  email: 'user@example.com',
  password: 'motdepasse'
})

// Déconnexion
await db.auth.signOut()

// Récupérer l'utilisateur connecté
const { data: { user } } = await db.auth.getUser()

// Écouter les changements d'état
db.auth.onAuthStateChange((event, session) => {
  if (event === 'SIGNED_IN') setCurrentUser(session.user)
  if (event === 'SIGNED_OUT') setCurrentUser(null)
})

Identifiant utilisateur

Chaque utilisateur authentifié possède un identifiant unique UUID accessible via auth.uid() dans PostgreSQL. Cet identifiant est utilisé dans toutes les politiques RLS pour filtrer les données.

Sécurité

  • Les mots de passe sont hachés par Supabase Auth avec bcrypt
  • Les JWT sont signés avec une clé secrète configurée dans Supabase
  • Le JWT anonyme (anon key) est public mais limité par les politiques RLS
  • Le JWT de service (service role key) doit rester secret et n'est jamais exposé au frontend

Comptes de test

En développement, les comptes de test sont créés directement depuis la console Supabase :

https://supabase.waali.at
Authentication > Users > Invite user

BTP Chantier Pro