Thème
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
- L'utilisateur saisit son email et son mot de passe
- Le frontend envoie les identifiants à Supabase Auth
- Supabase Auth vérifie les identifiants dans la table auth.users
- En cas de succès, Supabase retourne un JWT d'accès et un JWT de rafraîchissement
- Le JWT est stocké dans le localStorage du navigateur
- 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
- L'utilisateur clique sur Mot de passe oublié
- Supabase Auth envoie un email avec un lien de réinitialisation
- Le lien est valide pendant 24 heures
- 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
