156 lines
5.0 KiB
Markdown
156 lines
5.0 KiB
Markdown
# 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 :
|
|
- **base neuve** → `supabase/schema.sql`
|
|
- **base déjà en service** → `supabase/update_all.sql`
|
|
4. Colle-le et clique **Run**.
|
|
|
|
> C'est sans danger même si tu l'as déjà exécuté : tout est « ré-exécutable ».
|
|
> Ça met en place `is_admin`, les commentaires, les pièces jointes 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 (bouton
|
|
« Générer » si tu manques d'imagination), pôles, et droits admin
|
|
- **Modifier** un membre : nom, email, mot de passe, photo, pôles
|
|
- **Promouvoir / rétrograder** un admin (avec confirmation)
|
|
- **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).
|
|
- Depuis la v0.2, la **suppression d'un projet** est réservée à son créateur ou à
|
|
un administrateur (avant, n'importe quel membre pouvait tout effacer).
|
|
|
|
---
|
|
|
|
## ⚠️ Après la mise à jour v0.2 — redéployer la fonction
|
|
|
|
La migration v10 supprime la colonne `profiles.role`, dans laquelle l'ancienne
|
|
version de l'Edge Function écrivait. **Redéploie-la**, sinon la création de
|
|
comptes échouera :
|
|
|
|
```bash
|
|
npx supabase functions deploy admin-users --no-verify-jwt
|
|
```
|