diff --git a/public/assets/images/bouton_eidas.png b/public/assets/images/bouton_eidas.png new file mode 100644 index 0000000..59afe95 Binary files /dev/null and b/public/assets/images/bouton_eidas.png differ diff --git a/public/assets/styles/pageAccueil.css b/public/assets/styles/pageAccueil.css index 927c9b7..8d8bcf1 100644 --- a/public/assets/styles/pageAccueil.css +++ b/public/assets/styles/pageAccueil.css @@ -12,6 +12,17 @@ background-image: url(/statique/assets/images/bouton_survol_france_connect_plus.svg); } +.bouton-eidas { + display: block; + cursor: pointer; + + width: 256px; + height: 60px; + margin-top: 12px; + background: url(/statique/assets/images/bouton_eidas.png) no-repeat; + background-size: contain; +} + .nouvel-onglet::after{ content: ''; display: inline-block; diff --git a/src/api/creationSessionFCPlus.js b/src/api/creationSessionFCPlus.js index a9b523a..2bec2bf 100644 --- a/src/api/creationSessionFCPlus.js +++ b/src/api/creationSessionFCPlus.js @@ -12,8 +12,12 @@ const creationSessionFCPlus = (config, requete, reponse) => { ? `&contexte_mock=${contexteMock}` : ''; + const fournisseurIdentiteSuggere = typeof requete.query.eidas !== 'undefined' + ? adaptateurEnvironnement.fournisseurIdentiteSuggere() + : ''; + const construisURL = () => adaptateurFranceConnectPlus.urlCreationSession() - .then((url) => `${url}?scope=profile%20openid%20birthcountry%20birthplace&acr_values=eidas2&claims={%22id_token%22:{%22amr%22:{%22essential%22:true}}}&prompt=login%20consent&response_type=code&idp_hint=${adaptateurEnvironnement.fournisseurIdentiteSuggere()}&client_id=${identifiantClient}&redirect_uri=${urlRedirectionConnexion}&state=${etat}&nonce=${nonce}${paramContexteMock}`); + .then((url) => `${url}?scope=profile%20openid%20birthcountry%20birthplace&acr_values=eidas2&claims={%22id_token%22:{%22amr%22:{%22essential%22:true}}}&prompt=login%20consent&response_type=code&idp_hint=${fournisseurIdentiteSuggere}&client_id=${identifiantClient}&redirect_uri=${urlRedirectionConnexion}&state=${etat}&nonce=${nonce}${paramContexteMock}`); return stockeDansCookieSession({ etat, nonce }, adaptateurChiffrement, requete) .then(construisURL) diff --git a/src/routes/routesBase.js b/src/routes/routesBase.js index 5e5a3fe..919f218 100644 --- a/src/routes/routesBase.js +++ b/src/routes/routesBase.js @@ -12,11 +12,13 @@ const routesBase = (config) => { '/', (...args) => middleware.renseigneUtilisateurCourant(...args), (requete, reponse) => { + const avecConnexionEIDAS = process.env.AVEC_AUTHENTIFICATION_EIDAS === 'true'; const infosUtilisateur = requete.utilisateurCourant; const avecConnexionFCPlus = adaptateurEnvironnement.avecConnexionFCPlus(); reponse.render('pageAccueil', { infosUtilisateur, avecConnexionFCPlus, + avecConnexionEIDAS, }); }, ); diff --git a/src/vues/pageAccueil.mustache b/src/vues/pageAccueil.mustache index 4507988..5be33cd 100644 --- a/src/vues/pageAccueil.mustache +++ b/src/vues/pageAccueil.mustache @@ -15,6 +15,9 @@
Qu'est-ce que FranceConnect+ ? + {{#avecConnexionEIDAS}} + + {{/avecConnexionEIDAS}} {{/infosUtilisateur}} {{/avecConnexionFCPlus}} diff --git a/test/api/creationSessionFCPlus.spec.js b/test/api/creationSessionFCPlus.spec.js index fb937c9..5d90f13 100644 --- a/test/api/creationSessionFCPlus.spec.js +++ b/test/api/creationSessionFCPlus.spec.js @@ -117,6 +117,7 @@ describe('Le requêteur de création de session FC+', () => { describe('Si utilisation bridge eIDAS', () => { it('renseigne le paramètre `idp_hint` avec la valeur `eidas-bridge`', () => { expect.assertions(1); + requete.query.eidas = ''; adaptateurEnvironnement.fournisseurIdentiteSuggere = () => 'eidas-bridge'; prepareVerificationPresenceElement('idp_hint=eidas-bridge', reponse);