Repository navigation
Admin : socle Next.js, coque, connexion, rôles et journal (A-01) #52
Copy link
Copy link
Open
Labels
area:adminapps/adminapps/adminprio:P0BloquantBloquantstatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:featureNouvelle fonctionnalitéNouvelle fonctionnalité
Milestone
Description
Contexte
Epic : #5
Admin-Web › Principes · Rôles · Modèles communs · A-01 · écrans de référence : #339
Décision : D-085 (cadrage du 2026-10-09)
Maquette : Ecrans › Admin web · validée le 2026-10-09 (#339, D-086)
Comportement attendu
apps/admin: Next.js (App Router), Tailwind, shadcn/ui thémé depuistokens.json, clientpackages/api-client, rendu des données côté client uniquement ; Cloud Runeurope-west9,noindex,no-store.- Connexion Google et e-mail (Firebase Auth) ; accès refusé sans rôle
editor,moderatorouadmin, ou si suspendu ; retour à la page demandée. - Coque : navigation par rôle (matrice de la spec) avec compteurs « à traiter », en-tête, compte.
- Composants communs : tableau paginé par curseur avec filtres dans l'adresse, panneau de détail, confirmation avec motif, toasts, états vide, chargement, erreur.
- API : garde de rôle sur
/admin/*, tableadmin_actions(auteur, action, cible, avant, après, motif) écrite par toute action d'écriture admin. - Commencer sans attendre la planche Design — admin web : coque, file de modération et tableau de bord (écrans de référence) #339 ; reprendre l'habillage une fois validée.
Critères d'acceptation
- Un compte
userest refusé avec message clair - Un
editorne voit que ses sections, et l'API lui refuse les autres (403) - Une action d'écriture laisse une ligne dans
admin_actions
Ajouts du 2026-10-09 (D-086, D-087)
- Maquette : Ecrans › Admin web · écrans de référence validés le 2026-10-09 (Design — admin web : coque, file de modération et tableau de bord (écrans de référence) #339, D-086) · canevas Widoo — Admin : coque, A-01 et ses refus, thème shadcn (variables depuis
tokens.json), modèles (tableau, panneau de détail, confirmation avec motif, toasts), menu réduit aux icônes de 1 024 à 1 279 px. - Double authentification obligatoire : TOTP via Firebase Authentication avec Identity Platform, activée à la première connexion ; l'API refuse
/admin/*sans second facteur (403mfa_required) ; session de 12 h au plus ; nouvelle vérification si la dernière date de plus de 10 min avant une action sensible (Admin-Web › Principes). - Compteurs de navigation :
GET /admin/counters, filtrés par rôle, rouges au-delà de 72 h. - Un compte sans second facteur est conduit à l'activer avant d'entrer
Ajout du 2026-10-09 (décision d'Ilan)
- L'admin reste une app séparée du site (
apps/admin, service Cloud Run et sous-domaineadmin.widooapp.comà part) : pas de/adminsur le site, pour cloisonner la session et les règles de cache. - Créer
packages/ui: thème shadcn tiré detokens.jsonet composants communs, utilisés parapps/adminet, au fil des évolutions, parapps/web.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:adminapps/adminapps/adminprio:P0BloquantBloquantstatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:featureNouvelle fonctionnalitéNouvelle fonctionnalité
Activity
IlanAMG commentedon Sep 28, 2026
Plus de planche de design (#78 fermé, décision d'Ilan du 2026-09-28) : spécification détaillée à venir dans le wiki (section Admin web d'Ecrans), à faire par le chef de projet avant le début de v0.6 ; composants d'une bibliothèque standard.
[-]Créer l'app admin : socle React/Vite et connexion (A-01)[/-][+]Admin : socle Next.js, coque, connexion, rôles et journal (A-01)[/+]Nascimento95 commentedon Oct 12, 2026
🔨 Démarrage — plan :
packages/shared: sections de l'admin et matrice des rôles (une seule source pour l'API et le menu).packages/ui: thème shadcn tiré detokens.jsonet composants communs.apps/admin: socle Next.js (mêmes choix que le site, repris de la brancheissue/233-web-foundation, pas encore fusionnée), en-têtesnoindexetno-store, coque avec navigation par rôle, A-01.mfa_requiredet compte suspendu, tableadmin_actions,GET /admin/counters.Deux points en attente d'Ilan ou Paul, sans bloquer le début :
La migration
admin_actionssera dans la PR ; son application en staging reste à Ilan ou Paul.Nascimento95 commentedon Oct 12, 2026
⛔ Bloqué pour le dernier critère (« un compte sans second facteur est conduit à l'activer ») : l'écran d'activation et de saisie du code TOTP ne peut ni se tester ni se valider sans le vrai projet Firebase. L'émulateur Firebase Auth ne gère pas le TOTP.
Il faut, d'Ilan ou de Paul :
apiKey,authDomain,projectId) ;admin(staging) dans les domaines autorisés ;0003_add_admin_actionsen staging.Ces écrans n'ont pas de planche : A-01 ne montre ni l'activation ni la saisie du code. Je suivrai le modèle de la carte de connexion, sauf avis contraire.
Le reste du ticket est dans la PR en brouillon #363 (niveau 2) : trois critères sur quatre tenus. L'API refuse déjà
/admin/*sans second facteur hors émulateur, donc rien n'est ouvert par erreur.Nascimento95 commentedon Oct 13, 2026
Réglages faits par Marco sur le projet Firebase
widoo-staging, le 2026-10-13 (depuis la console Firebase et Cloud Shell, avec le compte invité par Ilan) :mfa.providerConfigs,adjacentIntervals: 1) : il ne s'active ni dans la console Firebase ni dans la console Google Cloud. Réversible par la même commande avecDISABLED. Le multifacteur par SMS reste désactivé.localhostfigure dans les domaines autorisés ; le domaine de l'admin de staging reste à y ajouter quand il existera.Le blocage du 2026-10-12 est donc levé pour staging : l'écran d'activation et de saisie du code TOTP peut être codé et testé contre le vrai projet.
Restent à faire par Ilan ou Paul : les mêmes réglages sur le projet de production le moment venu ; un modèle d'e-mail en français (
defaultLocaleesten) ; l'application de la migration0003_add_admin_actionsen staging.Nascimento95 commentedon Oct 13, 2026
Écran de double authentification ajouté à la PR #363 (commits
0acb39det0474cf9), qui sort du brouillon.Vérifié par Marco le 2026-10-13, dans Chrome, admin et API en local sur le commit
0474cf9, branchés sur le projet Firebasewidoo-staging(base de données locale) :userest refusé avec message clair — connexion Google réelle, « Ce compte n'a pas accès à l'admin. » avec l'adresse.Les deux autres critères sont couverts par les tests de l'API et le test en local du 2026-10-12 (menu de l'éditeur, 403 sur les sections refusées, ligne dans
admin_actions).Non vérifié contre le vrai projet : le lien de connexion par e-mail et la saisie de la clé à la main. La CI de la PR attend toujours la fusion de #364.
Nascimento95 commentedon Oct 13, 2026
Complément de vérification par Marco, le 2026-10-13, même montage (admin et API en local sur
0474cf9, Firebasewidoo-staging, base locale), avec un second compte :moderatordans la base locale : activation de la double authentification avec son propre QR code, puis entrée dans l'admin ;Le mail du lien de connexion a bien été reçu sur une boîte Hotmail, dans le courrier indésirable (signalé dans l'Inbox : #4 (comment)).
IlanAMG commentedon Oct 16, 2026
Chef de projet (16/10/2026) : glissé du Sprint 0 au Sprint 1, non terminé.