# Guide de mise en place — Comptes & Panel Admin Ce guide explique, **étape par étape**, comment activer le panel d'administration (création / suppression de comptes, gestion des rôles) pour ton équipe. Tu ne fais ça **qu'une seule fois**. Ensuite, tout se gère depuis l'appli. --- ## Vue d'ensemble | Qui | Voit quoi | |-----|-----------| | Toi (admin) | Tout + un menu **« Administration »** pour gérer les comptes | | Tes collègues | L'appli normale, juste un écran **« Se connecter »** | Les clés Supabase sont **déjà intégrées** dans l'appli (fichier `.env`) : tes collègues n'ont **rien** à configurer. --- ## Étape 1 — Vérifier le fichier `.env` Le fichier `.env` (à la racine du projet) contient déjà ton URL et ta clé : ``` VITE_SUPABASE_URL=https://cesjrlfqeqftayhnqjkb.supabase.co VITE_SUPABASE_ANON_KEY=eyJhbGci... ``` ✅ Rien à faire si c'est correct. (L'URL ne doit PAS contenir `/rest/v1/`.) --- ## Étape 2 — Mettre à jour la base de données 1. Va sur [supabase.com](https://supabase.com) → ton projet. 2. Menu **SQL Editor** → **New query**. 3. Copie **tout** le contenu du fichier `supabase/schema.sql` et colle-le. 4. Clique **Run**. > C'est sans danger même si tu l'as déjà exécuté : tout est « ré-exécutable ». > Ça ajoute le champ `is_admin` et les sécurités du panel admin. --- ## Étape 3 — Créer TON compte administrateur Comme l'inscription publique est désactivée, on crée le **tout premier compte** (le tien) à la main : 1. Dans Supabase → menu **Authentication** → **Users** → bouton **Add user**. 2. Mets ton **email** + un **mot de passe**, et coche **Auto Confirm User**. 3. Clique **Create user**. Puis on te donne les droits admin : 4. Retourne dans **SQL Editor** → **New query**, colle ceci en remplaçant l'email : ```sql update public.profiles set is_admin = true where id = (select id from auth.users where email = 'TON_EMAIL@exemple.com'); ``` 5. Clique **Run**. 🎉 Tu es maintenant administrateur. --- ## Étape 4 — Déployer l'Edge Function (le « serveur de confiance ») C'est elle qui crée/supprime les comptes en sécurité. **Deux méthodes au choix.** ### Méthode A — En ligne de commande (recommandée) Dans un terminal, à la racine du projet : ```bash # 1. Se connecter à Supabase (ouvre le navigateur) npx supabase login # 2. Déployer la fonction npx supabase functions deploy admin-users ^ --project-ref cesjrlfqeqftayhnqjkb --no-verify-jwt ``` > `--no-verify-jwt` est normal ici : la fonction vérifie elle-même que > l'appelant est bien un admin connecté (voir le code). > La clé `service_role` est fournie automatiquement par Supabase, tu n'as > rien à copier. ### Méthode B — Par le tableau de bord (sans terminal) 1. Supabase → menu **Edge Functions** → **Create a new function**. 2. Nom : `admin-users`. 3. Colle le contenu de `supabase/functions/admin-users/index.ts`. 4. Déploie. 5. Dans les **réglages** de la fonction, **désactive « Enforce JWT Verification »**. --- ## Étape 5 — Construire et distribuer l'appli ```bash npm run tauri:build ``` L'installateur se trouve ensuite dans : `src-tauri/target/release/bundle/` Envoie ce fichier à tes collègues. Les clés sont dedans : ils n'ont **rien** à régler. --- ## Au quotidien — Gérer les comptes 1. Ouvre l'appli, connecte-toi avec ton compte admin. 2. Menu **Administration** (visible uniquement pour les admins). 3. Tu peux : - **Créer un compte** : nom, email, mot de passe provisoire, rôle, (admin ?) - **Changer le rôle** d'un membre - **Promouvoir / rétrograder** un admin - **Supprimer** un compte Communique l'email + le mot de passe provisoire à chaque membre. Il se connecte, c'est tout. ✅ --- ## Notes de sécurité - La clé `anon` dans l'appli est **publique par nature** : aucun risque. - La clé `service_role` (toute-puissante) **n'est jamais dans l'appli** : elle reste cachée dans l'Edge Function, côté serveur. - Un membre normal **ne peut pas** se promouvoir admin lui-même (bloqué côté base). - Tu ne peux pas supprimer ni rétrograder **ton propre** compte admin (anti-blocage).