Skip to content

feat(ra-console): registre des opérateurs dans le navigateur (étape 6e) - #91

Merged
PhilippeVienne merged 1 commit into
devfrom
feat/ra-console-frontend-operators
Sep 30, 2026
Merged

PhilippeVienne merged 1 commit into
devfrom
feat/ra-console-frontend-operators

Conversation

@PhilippeVienne

Copy link
Copy Markdown
Contributor

Remplace #73, fermée par GitHub à la suppression de sa branche de base (pile) après la fusion de #90 (ex-#72). Même contenu, rebasé sur dev (#85, ex-#69, y est déjà : le commit de fusion disparaît) ; base : dev. En plus : le paragraphe « Ce qui n'existe pas encore » de docs/RA-CONSOLE.md est remis à jour (clés en attente, image, chart et compose existent).

Objet

docs/WEBUI.md §10 et §15 étape 6, tranche 6e : un administrateur gère le registre des opérateurs depuis la console. Base : #72 (feat/ra-console-frontend-revoke). Cette branche contient aussi la fusion de #69 (routes de registre, écrites en parallèle sur #67) : merger #69 avant cette PR ; au rebase sur dev, le commit de fusion disparaît. Deux conflits résolus à la fusion (ajouts en fin de action_challenge.rs et de docs/RA-CONSOLE.md, les deux côtés conservés).

  • API : GET /api/v1/operators — opérateurs, clés, clés en attente, en lecture seule sur les tables de ca-server. L'empreinte d'une clé en attente est recalculée avec oe_actions::key_fingerprint, la fonction même de ca-server : l'administrateur la compare hors bande avec celle que l'invité a reçue (§10) ; une console qui afficherait une autre empreinte ferait échouer la confirmation, pas passer une autre clé.
  • Écran des opérateurs :
    • invitation — le jeton s'affiche une seule fois, à transmettre par un canal distinct ; il n'est conservé nulle part ;
    • confirmation d'une clé en attente, après avoir déclaré (case à cocher) avoir comparé l'empreinte avec l'invité ;
    • révocation d'une clé (motif obligatoire) ;
    • changement de rôle (le rôle admin exige un second administrateur : AWAITING_QUORUM, co-signature en salle de quorum de feat(ra-console): révocation et salle de quorum dans le navigateur (étape 6c) #72).
    • Pour les non-administrateurs, ces boutons sont désactivés — affichage seulement, ca-server juge.

Limites

  • La confirmation de clé n'est pas couverte par Playwright : l'enregistrement d'une clé par l'authentificateur virtuel serait refusé par la liste blanche d'attestation. Elle l'est par le test Rust de feat(ra-console): gestion du registre des opérateurs depuis la console #69, complété ici (empreinte affichée = empreinte remise à l'invitée, clé en attente disparue après confirmation).
  • Libre-service sur ses propres clés (ajout/retrait avec réassertion) : non fait.

Vérifications

  • Rust : an_admin_invites_and_confirms_an_operator_through_the_console étendu (lecture du registre, empreinte identique, 401 sans session) ; les 14 tests de action_challenge.rs passent après la fusion.
  • Playwright 10/10 en local sur trois passes : invitation (jeton affiché une fois, frank apparaît), changement de rôle de dave (vérifié côté serveur), révocation de sa clé ; consultation seule pour un non-administrateur. Mutation : forcer l'affichage « administrateur » fait échouer ce dernier parcours.
  • cargo fmt --check, cargo clippy --workspace --all-targets -- -D warnings (1.97 et 1.98.1), cargo test --workspace avec PostgreSQL, cargo audit --ignore RUSTSEC-2023-0071, npm run typecheck : verts.

Revue humaine obligatoire

Voir PROVENANCE.md. Chaque case est cochée par le
contributeur humain qui valide la PR, après l'avoir fait lui-même.

  • Revue d'architecture validée par l'humain
  • Code relu et tests unitaires/intégration vérifiés localement
  • Absence de dépendances tierces incompatibles avec la double licence EUPL-1.2 / AGPL-3.0 (make licenses)
  • Validation de l'apport intellectuel et de la paternité humaine sur la modification

Assistance par IA

  • Cette PR a été produite avec l'assistance de Claude Code : les commits concernés portent la remorque Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, et scripts/provenance.py archive a été lancé
  • Cette PR a été écrite sans assistance par IA

docs/WEBUI.md §10, §15 étape 6 : un administrateur gère le registre
depuis la console, chaque écriture étant une action signée que ca-server
juge (routes de #69, fusionnées dans cette branche).

- `GET /api/v1/operators` : opérateurs, clés, clés en attente, en lecture
  seule ; l'empreinte d'une clé en attente est recalculée avec
  oe_actions::key_fingerprint, la fonction même de ca-server (test Rust :
  identique à celle remise à l'invitée).
- Écran des opérateurs : invitation (jeton affiché une seule fois),
  confirmation d'une clé en attente après déclaration de comparaison de
  l'empreinte hors bande, révocation de clé (motif obligatoire),
  changement de rôle (admin : second administrateur en salle de quorum).
  Boutons désactivés pour les non-administrateurs (affichage seulement).
- Harnais e2e : un administrateur et un opérateur de test. Parcours :
  invitation, changement de rôle, révocation de clé ; consultation seule
  pour un non-administrateur (mutation tuée).

Co-authored-by: Claude <noreply@anthropic.com>
@PhilippeVienne
PhilippeVienne force-pushed the feat/ra-console-frontend-operators branch from 4903f54 to ad54d9d Compare September 30, 2026 19:01
@PhilippeVienne
PhilippeVienne merged commit 3a0b4b5 into dev Sep 30, 2026
16 checks passed
@PhilippeVienne
PhilippeVienne deleted the feat/ra-console-frontend-operators branch September 30, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant