feat(ra-console): frontend, socle (étape 6a) - #70
Open
PhilippeVienne wants to merge 1 commit into
Open
PhilippeVienne wants to merge 1 commit into
PhilippeVienne wants to merge 1 commit into
Conversation
docs/WEBUI.md §15 étape 6, docs/UI-UX.md : la console sert son interface, en TypeScript compilé par esbuild (choix de l'utilisateur), sans framework ni dépendance d'exécution. - Assets embarqués dans le binaire (include_bytes!, src/web.rs) depuis web/dist, versionné : compiler ra-console n'exige pas Node. - En-têtes de sécurité sur toutes les réponses, API comprise (UI-UX §6.3) : CSP stricte sans unsafe-inline ni CDN, frame-ancestors 'none', X-Frame-Options DENY, nosniff, Referrer-Policy, Cache-Control no-store. `http::app` compose l'API, le frontend et ces en-têtes. - Bannière d'environnement (OPENEIDAS_RA_ENVIRONMENT, « non déclaré » à défaut), connexion par nom et clé FIDO2, poste de travail (identité et rôle relus sur le serveur, compteurs des files), déconnexion, verrouillage après 15 min d'inactivité (avertissement à 14). Aucun innerHTML : le contenu de l'API est inséré en texte. - Tests : tests/web.rs (en-têtes et assets, sans navigateur) ; Playwright contre une console réelle (examples/e2e_console.rs, PostgreSQL), clé du SoftToken confiée à l'authentificateur WebAuthn virtuel de Chromium. - CI : job frontend (typage strict, dist/ conforme aux sources, parcours de bout en bout). Dépendances npm de développement seulement (esbuild MIT, TypeScript et Playwright Apache-2.0), jamais dans l'image. Co-authored-by: Claude <noreply@anthropic.com>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objet
docs/WEBUI.md§15 étape 6 (frontend), tranche 6a (socle), selondocs/UI-UX.md. Choix de l'utilisateur : TypeScript + esbuild, Playwright en CI. Empilée sur #67 (feat/ra-console-quorum, tête4525c07), comme #68 (déploiement) et #69 (registre), qui lui sont parallèles.Ce qui est servi
include_bytes!,bin/ra-console/src/web.rs) depuisbin/ra-console/web/dist/, versionné : compilerra-consolen'exige pas Node, et l'image n'embarque ni Node ninode_modules. La CI vérifie quedist/correspond aux sources (build reproductible, vérifié).unsafe-*, rien hors origine,frame-ancestors 'none'),X-Frame-Options: DENY,nosniff,Referrer-Policy: no-referrer,COOP,Permissions-Policy,Cache-Control: no-store.http::appcompose l'API, le frontend et ces en-têtes ;mainet le harnais e2e l'utilisent.OPENEIDAS_RA_ENVIRONMENT,production/staging/demo; « ENVIRONNEMENT NON DÉCLARÉ » à défaut, viaGET /api/v1/consolesans session) ; connexion par nom et clé FIDO2 ; poste de travail (barre de sécurité avec identité et rôle relus sur le serveur, compteurs des files) ; déconnexion ; verrouillage après 15 min d'inactivité (avertissement à 14), session révoquée côté serveur. AucuninnerHTML: tout contenu de l'API est inséré comme texte.docs/mockups/(antigravity) ne sont ni modifiées ni copiées : seules leurs valeurs de tokens sont reprises.Tests
bin/ra-console/tests/web.rs(cargo, sans navigateur) : en-têtes sur toutes les réponses, types et contenu des assets, environnement annoncé.bin/ra-console/web/e2e/) contre une console réelle (examples/e2e_console.rs:http::appsur PostgreSQL). L'attestation de l'authentificateur virtuel serait refusée par la liste blanche : l'opérateur est donc enregistré avec leSoftTokendes tests Rust, et sa clé est confiée à l'authentificateur WebAuthn virtuel de Chromium (CDPWebAuthn.addCredential). Parcours : en-têtes et absence de script/style en ligne ; connexion FIDO2 → poste → déconnexion (session réellement révoquée, aucune erreur ni violation de CSP dans la page) ; verrouillage à 15 min (horloge simulée).every_response_carries_the_security_headerséchoue (et le test Playwright des en-têtes aussi).frontend:npm ci, typage strict (navigateur et Node séparés),dist/conforme, Chromium de Playwright, parcours e2e ; rapport en artefact en cas d'échec.Limites et suites
raConsole.environment→OPENEIDAS_RA_ENVIRONMENTau chart (non connu de feat(deploy): image, chart Helm et surcouche compose de ra-console #68, écrite en parallèle).@types/nodeMIT), 10 paquets au total ;cargo denyne les couvre pas.Vérifications
npm run typecheck,npm run build(reproductible), Playwright 3/3 en local sur trois passes consécutives (Chrome installé,PW_CHANNEL=chrome).cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(1.97 et 1.98.1),cargo test --workspaceavec PostgreSQL,cargo audit --ignore RUSTSEC-2023-0071,cargo deny check licenses: verts.frontend(installation de Chromium par Playwright sur le runner).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.
make licenses)Assistance par IA
Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, etscripts/provenance.py archivea été lancé