Saltar al contenido principal

Vue d'ensemble

Bienvenue dans la documentation d'administration de BeePass. Ce guide couvre l'ensemble des outils disponibles dans le backoffice pour superviser la plateforme, gerer les utilisateurs, piloter les finances, executer le pipeline genetique et surveiller l'infrastructure.

Le backoffice est concu pour donner aux administrateurs une visibilite complete sur la sante de la plateforme, tout en protegeant les donnees sensibles derriere plusieurs couches de securite. Que vous ayez besoin de verifier l'etat d'un abonnement, d'investiguer un incident de securite ou de lancer une evaluation genetique, tout est accessible depuis une interface centralisee.

Prerequis

L'acces au backoffice est strictement controle pour proteger les donnees des eleveurs et la stabilite de la plateforme. Trois conditions doivent etre reunies avant de pouvoir y acceder :

ConditionDescription
Role administrateurLe compte doit posseder le role admin ou super_admin dans profiles.roles (JSONB)
TOTP 2FA obligatoireL'authentification a deux facteurs par code TOTP (un code temporaire a 6 chiffres genere par une application comme Google Authenticator) est imposee pour tous les comptes admin -- elle ne peut pas etre desactivee (tentative de desactivation = 403)
VPN WireGuardLe sous-domaine admin.beepass.io est protege par une allowlist IP Traefik limitee au reseau WireGuard (10.0.0.0/24). Concretement, seuls les appareils connectes au VPN peuvent atteindre la page de connexion
Acces refuse sans VPN

Sans connexion WireGuard active, admin.beepass.io retourne une erreur 403 meme avec des identifiants admin valides. Contactez un super-admin pour obtenir votre configuration WireGuard.

Flux d'authentification

La connexion au backoffice se fait en plusieurs etapes. Ce processus multi-couches garantit qu'un mot de passe vole ne suffit pas a acceder au panneau d'administration -- il faudrait aussi le VPN et le code TOTP.

1. Connexion VPN WireGuard
|
2. Acces a admin.beepass.io
|
3. Saisie email + mot de passe -> cookie pre-authentification (TTL 10 min)
|
4. Validation du code TOTP (6 chiffres)
|
5. Emission du cookie HMAC admin (jose JWT HS256, HttpOnly, Secure, SameSite=Lax, TTL 8h)
|
6. Acces au backoffice -- le cookie coexiste avec le cookie Supabase SSR

Le cookie admin est signe avec SUPABASE_SERVICE_ROLE_KEY en HMAC (une methode cryptographique qui garantit que le cookie n'a pas ete modifie) et couvre le domaine .beepass.io. Apres 8 heures d'inactivite, une nouvelle authentification TOTP est requise.

Codes de secours

Chaque compte admin dispose de 8 codes de secours (backup codes) generes lors de l'activation TOTP. Ces codes sont hashes SHA-256 avec salt individuel et ne peuvent etre utilises qu'une seule fois. Conservez-les dans un gestionnaire de mots de passe -- ils sont votre filet de securite si vous perdez l'acces a votre application TOTP.

Architecture double session

Pourquoi deux sessions ? Parce qu'un administrateur est aussi un eleveur. Il doit pouvoir gerer ses propres reines (session eleveur) tout en administrant la plateforme (session admin), sans avoir a se deconnecter de l'un pour acceder a l'autre.

Le backoffice utilise un systeme de double session independant. L'administrateur peut etre connecte simultanement en tant qu'eleveur (cookie Supabase SSR) et en tant qu'admin (cookie HMAC) dans le meme navigateur.

SessionCookieAuthPortee
Eleveursb-xxx-auth-tokenSupabase SSR/dashboard, /apps/*
Adminbeepass-admin-tokenjose JWT HS256 HMAC/backoffice/*

Le cookie admin couvre le domaine .beepass.io (cross-subdomain), ce qui permet la coexistence entre beepass.io et admin.beepass.io.

Sections du backoffice

Modules de la plateforme

BeePass est compose de modules independants mais interconnectes. Chacun repond a un besoin specifique des eleveurs ou de l'administration. Voici l'etat de chaque module :

#ModuleStatutDescription
APasseport Genetique100%Reines F0/F1, evaluations, pedigree, QR codes
BTracabilite QR100%QR codes SVG, passeports publics, batch PDF/ZPL
CChat Communautaire100%DM + groupes, Realtime, fichiers/vocal/emoji, reactions
DCentre Support100%Peppermint, RAG IA, SLA tracking, pieces jointes
ECalendrier Elevage90%Google + Apple CalDAV sync, countdowns, OAuth
FMoteur BeeMatch25%Appariement genetique (en cours)
GEnvironnement70%Worker env_compute, geocodage, meteo saisonniere
HMoteur EBV90%Pipeline ONE SHOT complet, 8 traits, normalisation BeeBreed
IAdmin Dashboard100%Dashboard, monitoring, securite, 30+ pages backoffice
JParametres & Securite100%TOTP, sessions, MFA, audit, rate limiting configurables, feature flags, alert channels (email/push/webhook), maintenance notify cron, session config
KInfrastructure100%18 services Docker, Traefik v3, Prometheus/Grafana
LAINV-honeybees v2090%Matrice A^-1, package TS, 56 tests
MDocumentation100%Docusaurus 3.9, 48 pages, 8 locales (FR/EN/DE/IT/ES/RU/NL/PT)
NBilling Stripe100%4 plans, webhook, checkout, Customer Portal
OContacts100%Carnet hybride, enrichissement profil, CSV, geocoding
PAPI Keys100%CRUD, wizard 4 etapes, permissions granulaires, SHA-256
QSEO & Metadata100%Routing multilingue, hreflang 6 langues, sitemap index, OG images, JSON-LD, GA4, Search Console
RChatbot IA90%RAG pgvector, Ollama embeddings, escalade support
SRecherche globale100%Recherche unifiee multi-entites (F0, F1, contacts, calendar, tickets)
TTesteurs100%Page testeurs, evaluations, carte Google Maps, profil eleveur

Roles administrateur

La plateforme distingue deux niveaux d'administration. Cette separation existe pour limiter les risques : un admin peut gerer le quotidien, mais les operations irreversibles (suppression de comptes, attribution de roles admin) sont reservees aux super-admins.

RolePerimetre
adminAcces complet au backoffice, gestion utilisateurs, finances, monitoring, pipeline genetique
super_adminDroits admin + gestion des roles admin + suppression de comptes + creation d'utilisateurs + configuration infrastructure

Les roles sont stockes dans le champ JSONB profiles.roles. Un meme compte peut cumuler plusieurs roles (ex : ["admin", "eleveur"]). Le trigger validate_user_roles() valide les roles cote base de donnees, empechant les combinaisons invalides.

Verification des roles JSONB

profiles.roles est un champ JSONB. Toujours utiliser Array.isArray(roles) avant .includes() pour eviter les erreurs a l'execution. Ne jamais presumer que le champ est un tableau -- dans de rares cas, il peut etre null ou mal formate.

Conventions techniques

Ces conventions s'appliquent a toutes les routes et composants du backoffice. Elles garantissent une securite uniforme et facilitent la maintenance du code.

ConventionDescription
Prefixe APIToutes les routes API admin sont prefixees /api/admin/
CredentialsLes appels fetch() cote client vers /api/admin/* incluent systematiquement credentials: "include" pour transmettre le cookie HMAC
Auth helperLes routes admin utilisent verifyAdminFromRequest() (src/lib/verify-admin.ts) -- jamais createSupabaseServerClient() directement. Ce helper verifie le cookie HMAC + fallback SSR + verifie le role en base (cache 2 min)
Service roleLes routes admin utilisent createClient() direct avec SUPABASE_SERVICE_ROLE_KEY pour les operations DB, contournant les politiques RLS (Row Level Security)
AuditLes actions sensibles sont enregistrees dans le journal d'audit (18 types d'evenements)
Rate limitingAdmin login : 5 tentatives / 15 min. Admin TOTP : 5 / 15 min (Upstash Redis)
i18nTextes admin en francais uniquement (pas de traduction multi-langue pour le backoffice)

Infrastructure sous-jacente

Le backoffice repose sur une infrastructure Docker de 18 services heberges sur un serveur Hetzner (Nuremberg). Chaque service est un container Docker isole, avec son propre healthcheck (verification de sante automatique) qui permet a Traefik de retirer un service defaillant du routage.

ServiceRoleHealthcheck
beepass-webNext.js 15 + API Routeswget 127.0.0.1:3000
beepass-workerPipeline EBV (Python + BLUPF90+)curl 127.0.0.1:8000/health
beepass-redisFile d'attente rq (gere les jobs asynchrones comme le pipeline genetique)redis-cli ping
beepass-docsDocumentation Docusauruscurl 127.0.0.1:80
beepass-traefikReverse proxy SSL (redirige le trafic et gere les certificats HTTPS)traefik healthcheck --ping
beepass-backuppg_dump cron quotidien (sauvegarde automatique de la base de donnees)pgrep crond
beepass-ollamaLLM (Llama 3.2 3B) pour les suggestions IAollama list
beepass-beszelMonitoring systeme (CPU, RAM, disque)-- (image scratch)
beepass-zapScanner OWASP ZAP (detecte les vulnerabilites web)Endpoint /JSON/core/view/version/
beepass-nucleiScanner Nuclei (tests de securite cibles)-- (ephemere)
beepass-prometheusCollecte metriques pour les tableaux de bord Grafanawget 127.0.0.1:9090/-/healthy
beepass-grafanaDashboards monitoring (visualisation graphique des metriques)wget 127.0.0.1:3000/api/health
Traefik et healthchecks

Traefik v3 exclut automatiquement les containers unhealthy du routing. Un healthcheck defaillant rend le service invisible et provoque des erreurs 404 sur l'ensemble du site. Toujours verifier les healthchecks apres un deploiement -- c'est souvent la premiere chose a investiguer en cas de 404 generalise.

PWA (Progressive Web App)

BeePass est installable comme une application native sur mobile et desktop. Le manifest est dynamique (GET /api/manifest) et adapte le nom et la page d'accueil selon le domaine :

DomaineNom applicationPage d'accueilFond
admin.beepass.ioAdmin BeePass/backofficeDark (#202936)
beepass.ioBeePass/Blanc (#ffffff)

Les notifications push (Web Push VAPID) permettent de recevoir les alertes admin directement sur le telephone, meme quand le navigateur est ferme. Voir Notifications pour la configuration.