[Coffre Secrets] Phase 1c — UI : nœud Secrets sous Home-user, vues et parcours #19

Open
opened 2026-10-27 21:36:23 -04:00 by bruno · 0 comments
Owner

Contexte : spec « Coffre de secrets ObsiGate » §8, §9. Dépend des issues Phase 1a/1b.

Périmètre :

  • Sidebar : nœud virtuel permanent « Secrets », icône cadenas U+1F510, enfant de home- UNIQUEMENT si vaultName === home- (utilisateur courant), jamais sous le Home d'un autre, jamais sous un vault de notes. Patron exact du dossier virtuel « Partage » (#196) dans frontend/js/sidebar.js : data-type="virtual-secrets", aucun dossier sur disque.
  • Compteur = nombre de secrets du coffre personnel (métadonnée seule) ; si KEK absente, point d'alerte à la place. Menu contextuel (⋮) : Ouvrir, Nouveau secret, Gérer les accès, Journal d'accès. Aucune action de fichier (renommer, déplacer, supprimer comme un dossier).
  • Clic = ouverture d'une vue Secrets dédiée dans la zone principale. Ne déclenche ni navigation de fichiers, ni indexer.py, ni recherche, ni graphe. Les coffres partagés accessibles apparaissent comme sous-entrées de Secrets (nom + propriétaire).
  • Vues : (1) coffre (bandeau état KEK, tableau secrets : nom, service, type, modifié, expire, octrois, statut ; colonne valeur = •••••• seulement) ; (2) détail d'un secret (panneau latéral : métadonnées, référence canonique copiable coffre:/, versions par dates seules, octrois, journal récent ; actions Rotation, Gérer les accès, Copie manuelle à usage unique, Supprimer) ; (3) accès et consommateurs (création d'octroi avec confirmation résumant exactement ce qui devient accessible ; alertes expiration < 30 jours, octrois sans expiration, consommateurs inactifs > 90 jours).
  • Parcours création (5 étapes) : Secrets > Nouveau secret dans le coffre Personnel ; nom unique, type, service, expiration optionnelle, note avec avertissement « Ne collez jamais la valeur dans la note » ; valeur collée ou générée (champ mot de passe, œil avant enregistrement, copie possible AVANT enregistrement si générée) ; à l'enregistrement, le serveur chiffre et l'interface efface immédiatement le champ (« Secret enregistré. La valeur ne sera plus affichée. ») ; proposition d'octroi optionnelle, aucun octroi par défaut.
  • Rotation : nouvelle valeur, nouvelle version active immédiatement, ancienne non distribuable. Révocation à deux niveaux : octroi (prochain appel) vs consommateur (jti invalidé, tous coffres). Suppression : confirmation nommant les octrois cassés.
  • AUCUN bouton « afficher » nulle part (liste, détail, menu). C'est un choix de sécurité documenté dans l'UI dès la première création, pas une fonction manquante.
  • Coffre personnel créé automatiquement avec le Home (voir backend/user_home.py ensure_user_home).

Critères d'acceptation :

  • Capture sidebar montrant Secrets sous le Home de l'utilisateur courant, et uniquement là.
  • Secret de test créé, jamais réaffiché, absent de la recherche, du graphe et de l'index.
  • Le nœud n'apparaît pas sous le Home d'un autre utilisateur ni sous un vault de notes.
Contexte : spec « Coffre de secrets ObsiGate » §8, §9. Dépend des issues Phase 1a/1b. Périmètre : - Sidebar : nœud virtuel permanent « Secrets », icône cadenas U+1F510, enfant de home-<username> UNIQUEMENT si vaultName === home-<me> (utilisateur courant), jamais sous le Home d'un autre, jamais sous un vault de notes. Patron exact du dossier virtuel « Partage » (#196) dans frontend/js/sidebar.js : data-type="virtual-secrets", aucun dossier sur disque. - Compteur = nombre de secrets du coffre personnel (métadonnée seule) ; si KEK absente, point d'alerte à la place. Menu contextuel (⋮) : Ouvrir, Nouveau secret, Gérer les accès, Journal d'accès. Aucune action de fichier (renommer, déplacer, supprimer comme un dossier). - Clic = ouverture d'une vue Secrets dédiée dans la zone principale. Ne déclenche ni navigation de fichiers, ni indexer.py, ni recherche, ni graphe. Les coffres partagés accessibles apparaissent comme sous-entrées de Secrets (nom + propriétaire). - Vues : (1) coffre (bandeau état KEK, tableau secrets : nom, service, type, modifié, expire, octrois, statut ; colonne valeur = •••••• seulement) ; (2) détail d'un secret (panneau latéral : métadonnées, référence canonique copiable coffre:<slug>/<nom>, versions par dates seules, octrois, journal récent ; actions Rotation, Gérer les accès, Copie manuelle à usage unique, Supprimer) ; (3) accès et consommateurs (création d'octroi avec confirmation résumant exactement ce qui devient accessible ; alertes expiration < 30 jours, octrois sans expiration, consommateurs inactifs > 90 jours). - Parcours création (5 étapes) : Secrets > Nouveau secret dans le coffre Personnel ; nom unique, type, service, expiration optionnelle, note avec avertissement « Ne collez jamais la valeur dans la note » ; valeur collée ou générée (champ mot de passe, œil avant enregistrement, copie possible AVANT enregistrement si générée) ; à l'enregistrement, le serveur chiffre et l'interface efface immédiatement le champ (« Secret enregistré. La valeur ne sera plus affichée. ») ; proposition d'octroi optionnelle, aucun octroi par défaut. - Rotation : nouvelle valeur, nouvelle version active immédiatement, ancienne non distribuable. Révocation à deux niveaux : octroi (prochain appel) vs consommateur (jti invalidé, tous coffres). Suppression : confirmation nommant les octrois cassés. - AUCUN bouton « afficher » nulle part (liste, détail, menu). C'est un choix de sécurité documenté dans l'UI dès la première création, pas une fonction manquante. - Coffre personnel créé automatiquement avec le Home (voir backend/user_home.py ensure_user_home). Critères d'acceptation : - Capture sidebar montrant Secrets sous le Home de l'utilisateur courant, et uniquement là. - Secret de test créé, jamais réaffiché, absent de la recherche, du graphe et de l'index. - Le nœud n'apparaît pas sous le Home d'un autre utilisateur ni sous un vault de notes.
bruno added the kanban:todo label 2026-10-27 21:36:23 -04:00
bruno added kanban:in_progress and removed kanban:todo labels 2026-10-27 21:55:06 -04:00
bruno added kanban:review and removed kanban:in_progress labels 2026-10-27 22:19:41 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Projets/ObsiGate#19