diff options
author | Christian Kollmann <christian.kollmann@a-sit.at> | 2021-12-07 07:51:10 +0100 |
---|---|---|
committer | Christian Kollmann <christian.kollmann@a-sit.at> | 2021-12-07 11:01:13 +0100 |
commit | 8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6 (patch) | |
tree | 2b379387a1ac8c046b98860dd114abcd64227afb | |
parent | ac56869c2a981e40d6cf4637fb8fd46c06207c9d (diff) | |
download | National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.tar.gz National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.tar.bz2 National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.zip |
Unify HTML templates across test, main, basicConfig
25 files changed, 1684 insertions, 1543 deletions
diff --git a/basicConfig/properties/messages.properties b/basicConfig/properties/messages.properties index ab7988c9..5f24f0da 100644 --- a/basicConfig/properties/messages.properties +++ b/basicConfig/properties/messages.properties @@ -97,8 +97,8 @@ gui.countryselection.country.ro=Romania gui.countryselection.country.ro.logo.alt=Romania-eID gui.countryselection.country.sk=Slovakia gui.countryselection.country.sk.logo.alt=Slovakia-eID -gui.countryselection.country.sw=Sweden -gui.countryselection.country.sw.logo.alt=Sweden-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID gui.countryselection.country.uk=United Kingdom gui.countryselection.country.uk.logo.alt=United Kingdom-eID @@ -110,17 +110,20 @@ gui.countryselection.mode.qs=QS gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel + ##Austrian Residency page gui.residency.title=Austrian Residency -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Mainpage BMI -gui.residency.header1=Federal Ministry of Internal Affairs -gui.residency.header2=Austrian Central eIDAS Node -gui.residency.header3=Operated by Federal Ministry of Internal Affairs gui.residency.header.selection=Search for your Austrian Residency gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ - Municipality or Village first to start the search. + postcode, municipality or village first to start the search. gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village gui.residency.cancel=Cancel gui.residency.search=Search diff --git a/basicConfig/properties/messages_de.properties b/basicConfig/properties/messages_de.properties index e539c2d9..95489b32 100644 --- a/basicConfig/properties/messages_de.properties +++ b/basicConfig/properties/messages_de.properties @@ -96,8 +96,8 @@ gui.countryselection.country.ro=Romänien gui.countryselection.country.ro.logo.alt=Romänische-eID gui.countryselection.country.sk=Slovakei gui.countryselection.country.sk.logo.alt=Slovakische-eID -gui.countryselection.country.sw=Schweden -gui.countryselection.country.sw.logo.alt=Schwedische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID gui.countryselection.country.uk=Großbritanien gui.countryselection.country.uk.logo.alt=Britische-eID @@ -109,17 +109,19 @@ gui.countryselection.mode.qs=Qualitätsicherung gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen ##Austrian Residency page gui.residency.title=Österreichischer Wohnsitz -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Startseite BMI -gui.residency.header1=Bundesministerium für Inneres -gui.residency.header2=Zentraler eIDAS Knoten der Republik Österreich -gui.residency.header3=Betrieben durch das Bundesministerium für Inneres gui.residency.header.selection=Suche nach Österreichischem Wohnsitz gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ - Gemeinde oder Ortschaft ein um die Suche zu starten. + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein gui.residency.cancel=Abbrechen gui.residency.search=Suche diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index fffe3930..c233c5c4 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -4,224 +4,74 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> <head> - <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> -<script type="text/javascript"> -</script> -<style> -body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; -} -div.titlebar { - padding: 0px; -} -div.titlebar div { -} -.hidden { - display: none; -} -ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; -} -li { - display: inline-block; -} -div.header a { - text-decoration: none; - color: black; -} -a { - text-decoration: none; - color: #a22c1c; -} -.block { - /* override country.css */ - padding-bottom: 20px; -} -@media only screen and (min-width: 1000px) { - div.header { - padding-left: 137px; - padding-right: 137px; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - footer { - padding-left: 137px; - padding-right: 137px; - } -} -@media only screen and (max-width: 999px) { - div.header { - padding-left: 1em; - padding-right: 1em; - } - .content { - padding-left: 1em; - padding-right: 1em; - } - footer { - padding-left: 1em; - padding-right: 1em; - } -} - -div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; -} -div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; -} -footer { - left: 0; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; -} -.float { - float: left; -} -.floatright { - float: right; -} -.copyright { - width: 66%; - font-size: 80%; -} -#countries { - padding-bottom: 40px; -} -#country { - padding-bottom: 20px; -} -input[type=submit] { - width: inherit; -/* text-align: left; */ -} -form { - justify-content: center; -} -</style> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> + <title th:text="#{gui.otherlogin.title}">eIDAS-Login Other Login Methods</title> </head> <body> - <div class="header container"> +<div class="header container"> <div class="titlebar"> - <div> - <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> - <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" - th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> - <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> - </a> - </div> - <ul class="nav_oben"> - <li> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock - </div> - </li> - - <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}" > Startseite BMI </a></li> - </ul> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> </div> - </div> - <div class="content"> +</div> +<div class="content"> <div class="subtitle"> - <h1 th:text="#{gui.countryselection.header2}" > Zentraler eIDAS Knoten der Republik Österreich </h1> - <h2 th:text="#{gui.countryselection.header3}" > Betrieben durch das Bundesministerium für Inneres </h2> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h1 th:text="#{gui.matching.otherloginmethod.header}"> Zuordnung Ihrer Anmeldeinformationen </h1> - - <p th:text="#{gui.matching.otherloginmethod.info.text}" >Ihre Anmeldeinformationen konnten nicht eindeutig in das österreichische eID System integriert werden. - Für eine eindeutig Integration sind weitere Informationen erforderlich. </p> - - - <div th:if="${advancedMatchingFailed != null} and ${advancedMatchingFailed}"> - <b th:text="#{gui.matching.otherloginmethod.error.title}">Info</b> <span th:text="#{gui.matching.otherloginmethod.error.msg}"></span></p> + <h1 th:text="#{gui.otherlogin.header.selection}"> Select an alternative login method </h1> + + <div id="otherlogin"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Handy-Signatur / Mobile Signature" + th:attr="value=#{gui.otherlogin.hs}"/> + <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Andere eIDAS ID" th:attr="value=#{gui.otherlogin.eidas}"/> + <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Keine weitere HS / eIDAS" th:attr="value=#{gui.otherlogin.none}"/> + <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> </div> - <div id="country"> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie verfügen über einen ID Austria" th:attr="value=#{gui.matching.otherloginmethod.ida}" /> - <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie können zusätzliche Informationen via eIDAS bereitstellen" th:attr="value=#{gui.matching.otherloginmethod.eidas}" /> - <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie waren bereits einmal in Österreich wohnhaft" th:attr="value=#{gui.matching.otherloginmethod.residence}" /> - <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Neuregistrierung im österreichischen eID System" th:attr="value=#{gui.matching.otherloginmethod.addmeasnew}" /> - <input type="hidden" name="loginSelection" value="ADD_ME_AS_NEW"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - </div> - - <!-- Abbrechen Button --> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}"> - <input type="hidden" name="stopAuthProcess" value="true" > - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" + th:attr="value=#{gui.otherlogin.cancel}"> + <input type="hidden" name="stopAuthProcess" value="true"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> </form> - -<h2 th:text="#{gui.countryselection.infos.general.header}" > Information zur Anmeldung über Europäische eIDs </h2> -<p> - <span th:text="#{gui.countryselection.infos.general.part.1}"> first part </span> - <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.header1}" > Bundesministerium für Inneres </a> - <span th:text="#{gui.countryselection.infos.general.part.2}"> second part </span> -</p> - -<p> - <span th:text="#{gui.countryselection.infos.general.part.3}"> third part </span> - <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014R0910&from=DE" target="_blank" th:text="#{gui.countryselection.infos.general.link.1}"> eIDAS-Verordnung der Europäischen Union </a> - <span th:text="#{gui.countryselection.infos.general.part.4}"> fourth part </span> -</p> - -<p - <span th:text="#{gui.countryselection.infos.general.part.5}"> fived part </span> - <a href="https://www.dsb.gv.at/-/das-erganzungsregister-fur-naturliche-personen-ernp-" target="_blank" th:text="#{gui.countryselection.infos.general.link.2}" ></a> - <span th:text="#{gui.countryselection.infos.general.part.6}"> sixed part </span> -</p> - - </div> - <footer> - <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> - <div></div> - </footer> +</div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/basicConfig/templates/residency.html b/basicConfig/templates/residency.html index b434b9f9..8192a068 100644 --- a/basicConfig/templates/residency.html +++ b/basicConfig/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -102,17 +101,41 @@ </head> <body> -<div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h2 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h2> + <h1 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h1> <div id="residency"> <form id="inputForm" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <div th:text="#{gui.residency.header.help}">Please enter a Municipality or Village first</div> + <div th:text="#{gui.residency.header.help}">Please enter a postcode, municipality or village first</div> <div> <label for="inputPostleitzahl" th:text="#{gui.residency.input.postleitzahl}">Postleitzahl</label> <input type="text" id="inputPostleitzahl" name="postleitzahl" value=""/> @@ -181,5 +204,9 @@ </form> </div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/basicConfig/webcontent/css/css_country.css b/basicConfig/webcontent/css/css_country.css index 4091955f..bc575c90 100644 --- a/basicConfig/webcontent/css/css_country.css +++ b/basicConfig/webcontent/css/css_country.css @@ -1,137 +1,158 @@ @charset "utf-8"; - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - #page { - padding-top: 2%; - padding-left: 10%; - } - - #country { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; - } - - .block { - display: flex; - flex-direction: row; - flex-wrap: wrap; - cursor: pointer; - text-decoration: none; - padding-right:2%; - width: 250px; - } - - .countryimage { - width:50px; - height:50px; - padding-right: 2%; - padding-bottom: 4%; - } - - input[type=button], input[type=submit], input[type=reset] { - display:flex; - background-color:transparent; - border:none; - color: black; - text-decoration: none; - cursor: pointer; - } - #testEnvironment { - border: none; - color: black; - padding: 10px 20px; - text-decoration: none; - margin: 4px 2px; - height: 3%; - display: inline-block; - vertical-align: middle; - width: 40%; - } - #button{ - background-color: transparent; - border:none; - } - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - div.titlebar { - padding: 0px; - } - div.titlebar div { - } - .hidden { - display: none; - } - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - li { - display: inline-block; - } - div.header a { - text-decoration: none; - color: black; - } - a { - text-decoration: none; - color: #a22c1c; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - footer { - position: fixed; - left: 0; - padding-left: 137px; - padding-right: 137px; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; - } - .float { - float: left; - } - .floatright { - float: right; - } - .copyright { - width: 66%; - font-size: 80%; - } - #countries,#country { - padding-bottom: 40px; - } - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - form { - justify-content: center; - }
\ No newline at end of file +body { + background-image: none; + margin: 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#page { + padding-top: 2%; + padding-left: 10%; +} + +#country { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.block { + display: flex; + flex-direction: row; + flex-wrap: wrap; + cursor: pointer; + text-decoration: none; + padding-right: 2%; + width: 250px; +} + +.countryimage { + width: 50px; + height: 50px; + padding-right: 2%; + padding-bottom: 4%; +} + +input[type=button], input[type=submit], input[type=reset] { + display: flex; + background-color: transparent; + border: none; + color: black; + text-decoration: none; + cursor: pointer; +} + +#testEnvironment { + border: none; + color: black; + padding: 10px 20px; + text-decoration: none; + margin: 4px 2px; + height: 3%; + display: inline-block; + vertical-align: middle; + width: 40%; +} + +#button { + background-color: transparent; + border: none; +} + +div.header { + background-color: #e9ecef; + padding-top: 28px; + padding-left: 137px; + padding-right: 137px; + padding-bottom: 12px; +} + +div.titlebar { + padding: 0px; +} + +div.titlebar div { +} + +.hidden { + display: none; +} + +ul.nav_oben { + padding: 0px; + margin: 0px; + text-align: right; + text-transform: uppercase; +} + +li { + display: inline-block; +} + +div.header a { + text-decoration: none; + color: black; +} + +a { + text-decoration: none; + color: #a22c1c; +} + +.content { + padding-left: 137px; + padding-right: 137px; +} + +div.subtitle h1 { + padding: 0px; + margin: 0px; + font-size: 130%; + align: right; +} + +div.subtitle h2 { + padding: 0px; + margin: 0px; + font-size: 115%; +} + +footer { + position: fixed; + left: 0; + padding-left: 137px; + padding-right: 137px; + padding-top: 1em; + bottom: 0; + width: 100%; + height: 2em; + background-color: rgb(162, 44, 28); + color: white; +} + +.float { + float: left; +} + +.floatright { + float: right; +} + +.copyright { + width: 66%; + font-size: 80%; +} + +#countries, #country { + padding-bottom: 40px; +} + +input[type=submit] { + width: inherit; + /* text-align: left; */ +} + +form { + justify-content: center; +}
\ No newline at end of file diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java index f71917c3..b044e95e 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java @@ -101,6 +101,44 @@ public class AdresssucheController { } /** + * Show the "other_login_method.html" directly. + * TODO Remove this after testing. + */ + @RequestMapping(value = {"/olm"}, method = {RequestMethod.GET}) + public void otherloginmethod(HttpServletRequest request, HttpServletResponse response) throws GuiBuildException, + EaafException { + final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( + basicConfig, + "http://localhost:8080/ms_connector/", + basicConfig.getBasicConfiguration(//TODO + MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_OTHER_LOGIN_METHOD_SELECTION, + MsEidasNodeConstants.TEMPLATE_HTML_OTHERLOGINMETHODS), + MsEidasNodeConstants.ENDPOINT_OTHER_LOGIN_METHOD_SELECTION, + resourceLoader); + config.putCustomParameter(null, "pendingid", pendingReqGeneration.generateExternalPendingRequestId()); + guiBuilder.build(request, response, config, "Other Login Method"); + } + + /** + * Show the "country_selection.html" directly. + * TODO Remove this after testing. + */ + @RequestMapping(value = {"/country"}, method = {RequestMethod.GET}) + public void countryselection(HttpServletRequest request, HttpServletResponse response) throws GuiBuildException, + EaafException { + final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( + basicConfig, + "http://localhost:8080/ms_connector/", + basicConfig.getBasicConfiguration(//TODO + MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_CCSELECTION, + MsEidasNodeConstants.TEMPLATE_HTML_COUNTRYSELECTION), + MsEidasNodeConstants.ENDPOINT_COUNTRYSELECTION, + resourceLoader); + config.putCustomParameter(null, "pendingid", pendingReqGeneration.generateExternalPendingRequestId()); + guiBuilder.build(request, response, config, "Country Selection"); + } + + /** * Performs search for addresses in ZMR. */ @RequestMapping(value = {"/residency/search"}, method = {RequestMethod.POST}) diff --git a/connector/src/main/resources/properties/messages.properties b/connector/src/main/resources/properties/messages.properties new file mode 100644 index 00000000..3f662ef9 --- /dev/null +++ b/connector/src/main/resources/properties/messages.properties @@ -0,0 +1,127 @@ +####### GUI elements #### +gui.general.language.selection.title=Language selection +gui.general.language.selection.de=Deutsch +gui.general.language.selection.en=English + +##Errorpage template +gui.errorpage.msg.title=Authentication error arise +gui.errorpage.msg.information=The authentication stops on account of a process error: +gui.errorpage.msg.errorcode=Error Code: +gui.errorpage.msg.errormsg=Error Message: +gui.errorpage.msg.stacktrace=Stacktrace: + +##Country-Selection page +gui.countryselection.title=eIDAS-Login Countryselection +gui.countryselection.logo.bmi.alt=Logo BMI +gui.countryselection.link.bmi=Mainpage BMI +gui.countryselection.header1=Federal Ministry of Internal Affairs +gui.countryselection.header2=Austrian Central eIDAS Node +gui.countryselection.header3=Operated by Federal Ministry of Internal Affairs +gui.countryselection.header.selection=Select your country +gui.countryselection.cancel=Cancel +gui.countryselection.notsupportedinfo=If you cannot find your country in this list then your electronic identity (eID) is not yet supported. + +gui.countryselection.infos.general.header=Information on Logins with European eIDs +gui.countryselection.infos.general.link.1=eIDAS regulation of the European Union +gui.countryselection.infos.general.link.2=Austrian Supplementary Register for Natural Persons (ERnP) +gui.countryselection.infos.general.part.1=This is the central eIDAS node of the Republic of Austria, operated by the +gui.countryselection.infos.general.part.2=It enables logins at Austrian online services using an electronic identity (eID) of another EU member state. You have been redirected to this page, as you have initiated a login to an online service using the option "EU Login". +gui.countryselection.infos.general.part.3=The central eIDAS node of the Republic of Austria allows you to login to Austrian online services using the eID of your home country. This way, compliance with the +gui.countryselection.infos.general.part.4=, which regulates the mutual cross-border acceptance of national eIDs, is achieved. The mutual cross-border acceptance of national eIDs is implemented successively within the EU. Currently, the central eIDAS node of the Republic of Austria supports logins using the eID systems of the Member States mentioned above. More Member States will be added according to availability of their respective eID solutions. +gui.countryselection.infos.general.part.5=After selecting your home country on this page, you are forwarded to the familiar login environment of the selected member state. There, you can login with your eID as usual. After successful completion of the login process, you are automatically forwarded and logged in to the online service, from which you have been redirected to this page. During your first login, your eID data is also registered in the +gui.countryselection.infos.general.part.6=This ensures that you will also be successfully and uniquely identified in subsequent logins at Austrian online services. + +gui.countryselection.country.be=Belgium +gui.countryselection.country.be.logo.alt=Belgium-eID +gui.countryselection.country.hr=Croatia +gui.countryselection.country.hr.logo.alt=Croatia-eID +gui.countryselection.country.cy=Cyprus +gui.countryselection.country.cy.logo.alt=Cyprus-eID +gui.countryselection.country.cz=Czech Republic +gui.countryselection.country.cz.logo.alt=Czech Republic-eID +gui.countryselection.country.ee=Estonia +gui.countryselection.country.ee.logo.alt=Estonia-eID +gui.countryselection.country.de=Germany +gui.countryselection.country.de.logo.alt=German-eID +gui.countryselection.country.is=Iceland +gui.countryselection.country.is.logo.alt=Iceland-eID +gui.countryselection.country.it=Italy +gui.countryselection.country.it.logo.alt=Italy-eID +gui.countryselection.country.lt=Lithuania +gui.countryselection.country.lt.logo.alt=Lithuania-eID +gui.countryselection.country.lv=Latvia +gui.countryselection.country.lv.logo.alt=Latvia-eID +gui.countryselection.country.nl=Netherlands +gui.countryselection.country.nl.logo.alt=Netherlands-eID +gui.countryselection.country.pl=Poland +gui.countryselection.country.pl.logo.alt=Poland-eID +gui.countryselection.country.pt=Portugal +gui.countryselection.country.pt.logo.alt=Portugal-eID +gui.countryselection.country.si=Slovenia +gui.countryselection.country.si.logo.alt=Slovenia-eID +gui.countryselection.country.es=SSpain +gui.countryselection.country.es.logo.alt=Spain-eID + +gui.countryselection.country.bg=Bulgaria +gui.countryselection.country.bg.logo.alt=Bulgaria-eID +gui.countryselection.country.dk=Denmark +gui.countryselection.country.dk.logo.alt=Denmark-eID +gui.countryselection.country.fi=Finland +gui.countryselection.country.fi.logo.alt=Finland-eID +gui.countryselection.country.fr=France +gui.countryselection.country.fr.logo.alt=France-eID +gui.countryselection.country.gr=Greece +gui.countryselection.country.gr.logo.alt=Greece-eID +gui.countryselection.country.hu=Hungary +gui.countryselection.country.hu.logo.alt=Hungary-eID +gui.countryselection.country.ir=Ireland +gui.countryselection.country.ir.logo.alt=Ireland-eID +gui.countryselection.country.lu=Luxembourg +gui.countryselection.country.lu.logo.alt=Luxembourg-eID +gui.countryselection.country.mt=Malta +gui.countryselection.country.mt.logo.alt=Malta-eID +gui.countryselection.country.ro=Romania +gui.countryselection.country.ro.logo.alt=Romania-eID +gui.countryselection.country.sk=Slovakia +gui.countryselection.country.sk.logo.alt=Slovakia-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID +gui.countryselection.country.uk=United Kingdom +gui.countryselection.country.uk.logo.alt=United Kingdom-eID + +gui.countryselection.country.testcountry=TestCountry +gui.countryselection.country.testcountry.logo.alt=Testcountry-eID + +gui.countryselection.mode.prod=Production +gui.countryselection.mode.qs=QS +gui.countryselection.mode.test=Test +gui.countryselection.mode.dev=Development + +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel + +##Austrian Residency page +gui.residency.title=Austrian Residency +gui.residency.header.selection=Search for your Austrian Residency +gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ + postcode, municipality or village first to start the search. +gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village +gui.residency.cancel=Cancel +gui.residency.search=Search +gui.residency.clear=Clear +gui.residency.proceed=Proceed +gui.residency.updated=Updated your input +gui.residency.found=Found {0} results +gui.residency.unique=Unique result found, please proceed +gui.residency.error=Error on Backend Call +gui.residency.apply=Apply +gui.residency.input.postleitzahl=Postcode +gui.residency.input.municipality=Municipality +gui.residency.input.village=Village +gui.residency.input.street=Street +gui.residency.input.number=Number
\ No newline at end of file diff --git a/connector/src/main/resources/properties/messages_de.properties b/connector/src/main/resources/properties/messages_de.properties new file mode 100644 index 00000000..c0f3c9a5 --- /dev/null +++ b/connector/src/main/resources/properties/messages_de.properties @@ -0,0 +1,128 @@ +####### GUI elements #### +gui.general.language.selection.title=Sprachauswahl +gui.general.language.selection.de=Deutsch +gui.general.language.selection.en=English + +##Errorpage template +gui.errorpage.msg.title=Es ist ein Fehler aufgetreten +gui.errorpage.msg.information=Der Anmeldevorgang wurde aufgrund eines Fehlers beendet: +gui.errorpage.msg.errorcode=Fehlercode : +gui.errorpage.msg.errormsg=Fehlermeldung: +gui.errorpage.msg.stacktrace=Stacktrace: + +##Country-Selection page +gui.countryselection.title=eIDAS-Login Länderauswahl +gui.countryselection.logo.bmi.alt=Logo BMI +gui.countryselection.link.bmi=Startseite BMI +gui.countryselection.header1=Bundesministerium für Inneres +gui.countryselection.header2=Zentraler eIDAS Knoten der Republik Österreich +gui.countryselection.header3=Betrieben durch das Bundesministerium für Inneres +gui.countryselection.header.selection=Wählen Sie Ihr Land +gui.countryselection.cancel=Abbrechen +gui.countryselection.notsupportedinfo=Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken, dann wird Ihre elektronische Identität (eID) leider noch nicht unterstützt. + +gui.countryselection.infos.general.header=Information zur Anmeldung über Europäische eIDs +gui.countryselection.infos.general.link.1=eIDAS-Verordnung der Europäischen Union +gui.countryselection.infos.general.link.2=Ergänzungsregister für natürliche Personen (ERnP) +gui.countryselection.infos.general.part.1=Sie befinden sich am zentralen eIDAS-Knoten der Republik Österreich. Dieser wird vom Österreichischen +gui.countryselection.infos.general.part.2=betrieben und ermöglicht eine Anmeldungen zu österreichischen Online-Anwendungen unter Verwendung einer elektronischen Identität (eID) anderer EU-Mitgliedstaaten. Sie wurden hierher weitergeleitet, da Sie in einer Online-Anwendung eine Anmeldung via EU-Login initiiert haben. +gui.countryselection.infos.general.part.3=Der zentrale eIDAS-Knoten der Republik Österreich ermöglicht Ihnen eine Anmeldung zu österreichischen Online-Anwendungen mit der eID Ihres Herkunftsstaates. Damit werden die Vorgaben der +gui.countryselection.infos.general.part.4=erfüllt, die eine staatenübergreifende Akzeptanz nationaler eIDs vorsieht. Die wechselseitige Anerkennung nationaler eIDs erfolgt in der EU schrittweise. Aktuell unterstützt der zentrale eIDAS-Knoten der Republik Österreich Anmeldungen mit den eID-Systemen der oben angeführten Mitgliedstaaten. Diese Liste wird laufend erweitert. +gui.countryselection.infos.general.part.5=Nachdem Sie auf dieser Seite einen Mitgliedsstaat ausgewählt haben, werden Sie an die gewohnte Anmeldeumgebung des jeweiligen Mitgliedsstaats weitergeleitet. Dort können Sie sich mit Ihrer eID wie gewohnt anmelden. Haben Sie den Anmeldeprozess erfolgreich abgeschlossen, werden Sie automatisch an die Online-Anwendung, von der aus Sie auf diese Auswahlseite gelangt sind, weitergeleitet und dort mit den Identitätsdaten Ihrer eID angemeldet. Gleichzeitig werden Sie bei Ihrer ersten Anmeldung auf diesem Weg mit Ihren eID-Daten in das österreichische +gui.countryselection.infos.general.part.6=eingetragen. Damit wird sichergestellt, dass Sie auch im Rahmen zukünftiger Anmeldeprozesse zu österreichischen Online-Anwendungen erfolgreich und eindeutig identifiziert werden können. + + +gui.countryselection.country.be=Belgien +gui.countryselection.country.be.logo.alt=Belgische-eID +gui.countryselection.country.hr=Kroatien +gui.countryselection.country.hr.logo.alt=Kroatische-eID +gui.countryselection.country.cy=Zypern +gui.countryselection.country.cy.logo.alt=Zypriotische-eID +gui.countryselection.country.cz=Tschechische Republik +gui.countryselection.country.cz.logo.alt=Tschechische Republik-eID +gui.countryselection.country.ee=Estland +gui.countryselection.country.ee.logo.alt=Estländische-eID +gui.countryselection.country.de=Deutschland +gui.countryselection.country.de.logo.alt=Deutsche-eID +gui.countryselection.country.is=Island +gui.countryselection.country.is.logo.alt=Isländische-eID +gui.countryselection.country.it=Italien +gui.countryselection.country.it.logo.alt=Italienische-eID +gui.countryselection.country.lt=Litauen +gui.countryselection.country.lt.logo.alt=Litauische-eID +gui.countryselection.country.lv=Lettland +gui.countryselection.country.lv.logo.alt=Lettländische-eID +gui.countryselection.country.nl=Niederlande +gui.countryselection.country.nl.logo.alt=Niederländische-eID +gui.countryselection.country.pl=Polen +gui.countryselection.country.pl.logo.alt=Polnische-eID +gui.countryselection.country.pt=Portugal +gui.countryselection.country.pt.logo.alt=Portugisische-eID +gui.countryselection.country.si=Slovenien +gui.countryselection.country.si.logo.alt=Slovenische-eID +gui.countryselection.country.es=Spanien +gui.countryselection.country.es.logo.alt=Spanische-eID + +gui.countryselection.country.bg=Bulgarien +gui.countryselection.country.bg.logo.alt=Bulgarische-eID +gui.countryselection.country.dk=Dänemark +gui.countryselection.country.dk.logo.alt=Dänische-eID +gui.countryselection.country.fi=Finnland +gui.countryselection.country.fi.logo.alt=Finische-eID +gui.countryselection.country.fr=Frankreich +gui.countryselection.country.fr.logo.alt=Französiche-eID +gui.countryselection.country.gr=Grichenland +gui.countryselection.country.gr.logo.alt=Grichische-eID +gui.countryselection.country.hu=Ungarn +gui.countryselection.country.hu.logo.alt=Ungarische-eID +gui.countryselection.country.ir=Irland +gui.countryselection.country.ir.logo.alt=Irische-eID +gui.countryselection.country.lu=Luxenburg +gui.countryselection.country.lu.logo.alt=Luxenburgische-eID +gui.countryselection.country.mt=Malta +gui.countryselection.country.mt.logo.alt=Malta-eID +gui.countryselection.country.ro=Romänien +gui.countryselection.country.ro.logo.alt=Romänische-eID +gui.countryselection.country.sk=Slovakei +gui.countryselection.country.sk.logo.alt=Slovakische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID +gui.countryselection.country.uk=Großbritanien +gui.countryselection.country.uk.logo.alt=Britische-eID + +gui.countryselection.country.testcountry=Testland +gui.countryselection.country.testcountry.logo.alt=Testland-eID + +gui.countryselection.mode.prod=Produktion +gui.countryselection.mode.qs=Qualitätsicherung +gui.countryselection.mode.test=Test +gui.countryselection.mode.dev=Development + +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen + +##Austrian Residency page +gui.residency.title=Österreichischer Wohnsitz +gui.residency.header.selection=Suche nach Österreichischem Wohnsitz +gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. +gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein +gui.residency.cancel=Abbrechen +gui.residency.search=Suche +gui.residency.clear=Löschen +gui.residency.proceed=Fortfahren +gui.residency.updated=Eingabe aktualisiert +gui.residency.found={0} Ergebnisse gefunden +gui.residency.unique=Eindeutiges Ergebnis gefunden, bitte fortfahren +gui.residency.error=Fehler bei Addresssuche +gui.residency.apply=Übernehmen +gui.residency.input.postleitzahl=PLZ +gui.residency.input.municipality=Gemeinde +gui.residency.input.village=Ortschaft +gui.residency.input.street=Straße +gui.residency.input.number=Nummer
\ No newline at end of file diff --git a/connector/src/main/resources/templates/countrySelection.html b/connector/src/main/resources/templates/countrySelection.html index b15234eb..e196cd31 100644 --- a/connector/src/main/resources/templates/countrySelection.html +++ b/connector/src/main/resources/templates/countrySelection.html @@ -3,254 +3,267 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - <head> - <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <script type="text/javascript" src="$contextPath/static/js/js_country.js" th:attr="src=@{/static/static/js/js_country.js}"></script> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> + <script type="text/javascript" src="$contextPath/static/js/js_country.js" + th:attr="src=@{/static/js/js_country.js}"></script> + <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> </head> - <body> - <div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock - </div> - - <h2 th:text="#{gui.countryselection.header.selection}"> Select your country </h2> - <div id="country"> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU.png" alt="Belgium-eID" - th:attr="src=@{img/countries/Belgium-EU.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a> - <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}"> - <input type="hidden" name="selectedCountry" value="BE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Bulgaria-EU.png" alt="Bulgaria-eID" - th:attr="src=@{img/countries/Bulgaria-EU.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a> - <input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" > - <input type="hidden" name="selectedCountry" value="BG"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU.png" alt="Croatia-eID" - th:attr="src=@{img/countries/Croatia-EU.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a> - <input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}"> - <input type="hidden" name="selectedCountry" value="HR"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Cyprus-EU.png" alt="Cyprus-eID" - th:attr="src=@{img/countries/Cyprus-EU.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a> - <input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}"> - <input type="hidden" name="selectedCountry" value="CY"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU.png" alt="CzechRepublic-eID" - th:attr="src=@{img/countries/CzechRepublic-EU.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a> - <input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}"> - <input type="hidden" name="selectedCountry" value="CZ"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Denmark-EU.png" alt="Denmark-eID" - th:attr="src=@{img/countries/Denmark-EU.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a> - <input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}"> - <input type="hidden" name="selectedCountry" value="DK"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" - th:attr="src=@{img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> - <input type="submit" role="button" value="Deutschland / Germany" th:attr="value=#{gui.countryselection.country.de}" /> - <input type="hidden" name="selectedCountry" value="DE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU.png" alt="Estonia-eID" - th:attr="src=@{img/countries/Estonia-EU.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a> - <input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}"> - <input type="hidden" name="selectedCountry" value="EE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Finland-EU.png" alt="Finland-eID" - th:attr="src=@{img/countries/Finland-EU.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a> - <input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}"> - <input type="hidden" name="selectedCountry" value="FI"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/France-EU.png" alt="France-eID" - th:attr="src=@{img/countries/France-EU.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a> - <input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}"> - <input type="hidden" name="selectedCountry" value="FR"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Greece-EU.png" alt="Greece-eID" - th:attr="src=@{img/countries/Greece-EU.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a> - <input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}"> - <input type="hidden" name="selectedCountry" value="GR"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Hungary-EU.png" alt="Hungary-eID" - th:attr="src=@{img/countries/Hungary-EU.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a> - <input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}"> - <input type="hidden" name="selectedCountry" value="HU"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID" - th:attr="src=@{img/countries/Iceland.png},alt=#{gui.countryselection.country.is.logo.alt}"/></a> - <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.is}"/> - <input type="hidden" name="selectedCountry" value="IS"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID" - th:attr="src=@{img/countries/Ireland-EU.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a> - <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}"> - <input type="hidden" name="selectedCountry" value="IE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Italy-EU.png" alt="Italy-eID" - th:attr="src=@{img/countries/Italy-EU.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a> - <input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}"> - <input type="hidden" name="selectedCountry" value="IT"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Latvia-EU.png" alt="Latvia-eID" - th:attr="src=@{img/countries/Latvia-EU.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a> - <input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}"> - <input type="hidden" name="selectedCountry" value="LV"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID" - th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> - <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}"> - <input type="hidden" name="selectedCountry" value="LT"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID" - th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> - <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}"> - <input type="hidden" name="selectedCountry" value="LU"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Malta-EU.png" alt="Malta-eID" - th:attr="src=@{img/countries/Malta-EU.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a> - <input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}"> - <input type="hidden" name="selectedCountry" value="MT"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_.png" alt="Netherlands-eID" - th:attr="src=@{img/countries/TheNetherlands-EU_.png},alt=#{gui.countryselection.country.nl.logo.alt}"/></a> - <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}"> - <input type="hidden" name="selectedCountry" value="NL"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Poland-EU.png" alt="Poland-eID" - th:attr="src=@{img/countries/Poland-EU.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a> - <input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}"> - <input type="hidden" name="selectedCountry" value="PL"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU.png" alt="Portugal-eID" - th:attr="src=@{img/countries/Portugal-EU.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a> - <input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}"> - <input type="hidden" name="selectedCountry" value="PT"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Romania-EU.png" alt="Romania-eID" - th:attr="src=@{img/countries/Romania-EU.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a> - <input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}"> - <input type="hidden" name="selectedCountry" value="RO"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Slovakia-EU.png" alt="Slovakia-eID" - th:attr="src=@{img/countries/Slovakia-EU.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a> - <input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}"> - <input type="hidden" name="selectedCountry" value="SK"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU.png" alt="Slovenia-eID" - th:attr="src=@{img/countries/Slovenia-EU.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a> - <input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}"> - <input type="hidden" name="selectedCountry" value="SI"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Spain-EU.png" alt="Spain-eID" - th:attr="src=@{img/countries/Spain-EU.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a> - <input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}"> - <input type="hidden" name="selectedCountry" value="ES"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/Sweden-EU.png" alt="Sweden-eID" - th:attr="src=@{img/countries/Sweden-EU.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a> - <input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}"> - <input type="hidden" name="selectedCountry" value="SE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint"> - <a><img class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU.png" alt="UnitedKingdom-eID" - th:attr="src=@{img/countries/UnitedKingdom-EU.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a> - <input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}"> - <input type="hidden" name="selectedCountry" value="UK"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}"> - <input type="hidden" name="stopAuthProcess" value="true" > - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> - </form> +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}"> Startseite + BMI </a></li> + </ul> </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> + </div> + + <h1 th:text="#{gui.countryselection.header.selection}"> Wählen Sie Ihr Land / Select your country </h1> + + <div id="country"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" + th:attr="src=@{/img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> + <input type="submit" role="button" value="Deutschland / Germany" + th:attr="value=#{gui.countryselection.country.de}"/> + <input type="hidden" name="selectedCountry" value="DE"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU_gray.png" alt="Belgium-eID" + th:attr="src=@{img/countries/Belgium-EU_gray.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a> + <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Bulgaria-EU_gray.png" + alt="Bulgaria-eID" + th:attr="src=@{/img/countries/Bulgaria-EU_gray.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a> + <input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU_gray.png" alt="Croatia-eID" + th:attr="src=@{/img/countries/Croatia-EU_gray.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a> + <input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Cyprus-EU_gray.png" alt="Cyprus-eID" + th:attr="src=@{/img/countries/Cyprus-EU_gray.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a> + <input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU_gray.png" + alt="CzechRepublic-eID" + th:attr="src=@{/img/countries/CzechRepublic-EU_gray.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a> + <input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Denmark-EU_gray.png" alt="Denmark-eID" + th:attr="src=@{/img/countries/Denmark-EU_gray.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a> + <input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU_gray.png" alt="Estonia-eID" + th:attr="src=@{/img/countries/Estonia-EU_gray.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a> + <input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Finland-EU_gray.png" alt="Finland-eID" + th:attr="src=@{/img/countries/Finland-EU_gray.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a> + <input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/France-EU_gray.png" alt="France-eID" + th:attr="src=@{/img/countries/France-EU_gray.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a> + <input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Greece-EU_gray.png" alt="Greece-eID" + th:attr="src=@{/img/countries/Greece-EU_gray.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a> + <input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Hungary-EU_gray.png" alt="Hungary-eID" + th:attr="src=@{/img/countries/Hungary-EU_gray.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a> + <input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Ireland-EU_gray.png" alt="Ireland-eID" + th:attr="src=@{/img/countries/Ireland-EU_gray.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a> + <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Italy-EU_gray.png" alt="Italy-eID" + th:attr="src=@{/img/countries/Italy-EU_gray.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a> + <input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}"> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Latvia-EU_gray.png" alt="Latvia-eID" + th:attr="src=@{/img/countries/Latvia-EU_gray.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a> + <input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Luxembourg-EU_gray.png" + alt="Luxembourg-eID" + th:attr="src=@{/img/countries/Luxembourg-EU_gray.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> + <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Malta-EU_gray.png" alt="Malta-eID" + th:attr="src=@{/img/countries/Malta-EU_gray.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a> + <input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Poland-EU_gray.png" alt="Poland-eID" + th:attr="src=@{/img/countries/Poland-EU_gray.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a> + <input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU_gray.png" alt="Portugal-eID" + th:attr="src=@{/img/countries/Portugal-EU_gray.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a> + <input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Romania-EU_gray.png" alt="Romania-eID" + th:attr="src=@{/img/countries/Romania-EU_gray.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a> + <input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Slovakia-EU_gray.png" + alt="Slovakia-eID" + th:attr="src=@{/img/countries/Slovakia-EU_gray.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a> + <input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU_gray.png" alt="Slovenia-eID" + th:attr="src=@{/img/countries/Slovenia-EU_gray.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a> + <input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Spain-EU_gray.png" alt="Spain-eID" + th:attr="src=@{/img/countries/Spain-EU_gray.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a> + <input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}"> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Sweden-EU_gray.png" alt="Sweden-eID" + th:attr="src=@{/img/countries/Sweden-EU_gray.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a> + <input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_gray.jpg" + alt="TheNetherlands-eID" + th:attr="src=@{/img/countries/TheNetherlands-EU_gray.jpg},alt=#{gui.countryselection.country.nl.logo.alt}"/></a> + <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU_gray.png" + alt="UnitedKingdom-eID" + th:attr="src=@{/img/countries/UnitedKingdom-EU_gray.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a> + <input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}" disabled> + </form> + + </div> + + <!-- Abbrechen Button --> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" + th:attr="value=#{gui.countryselection.cancel}"> + <input type="hidden" name="stopAuthProcess" value="true"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> + </form> + + <p th:text="#{gui.countryselection.notsupportedinfo}">Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken + ... </p> + + <h2 th:text="#{gui.countryselection.infos.general.header}"> Information zur Anmeldung über Europäische eIDs </h2> + <p> + <span th:text="#{gui.countryselection.infos.general.part.1}"> first part </span> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.header1}"> Bundesministerium + für Inneres </a> + <span th:text="#{gui.countryselection.infos.general.part.2}"> second part </span> + </p> + + <p> + <span th:text="#{gui.countryselection.infos.general.part.3}"> third part </span> + <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014R0910&from=DE" target="_blank" + th:text="#{gui.countryselection.infos.general.link.1}"> eIDAS-Verordnung der Europäischen Union </a> + <span th:text="#{gui.countryselection.infos.general.part.4}"> fourth part </span> + </p> + + <p + <span th:text="#{gui.countryselection.infos.general.part.5}"> fived part </span> + <a href="https://www.dsb.gv.at/-/das-erganzungsregister-fur-naturliche-personen-ernp-" target="_blank" + th:text="#{gui.countryselection.infos.general.link.2}"></a> + <span th:text="#{gui.countryselection.infos.general.part.6}"> sixed part </span> + </p> + +</div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/connector/src/main/resources/templates/eidas_node_forward.html b/connector/src/main/resources/templates/eidas_node_forward.html new file mode 100644 index 00000000..186937d7 --- /dev/null +++ b/connector/src/main/resources/templates/eidas_node_forward.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org" + xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" + layout:decorator="fragments/base" + th:with="lang=${#locale.language}" th:lang="${lang}"> +<head> + <script src="$contextPath/autocommit.js" + th:attr="src=@{/autocommit.js}"></script> +</head> +<body> + <noscript> + <p> + <strong>Note:</strong> Since your browser does not support + JavaScript, you must press the Continue button once to proceed. + </p> + </noscript> + + <div id="alert">Your login is being processed. Thank you for + waiting.</div> + + <form action="${endPoint}" method="post" target="_parent" + th:attr="action=@{${endPoint}}"> + <div> + <input type="hidden" name="${tokenName}" value="${tokenValue}" + th:attr="value=${tokenValue},name=${tokenName}" /> + </div> + <noscript> + <div> + <p>Your browser does not support JavaScript. Click the button to continuing the process .</p> + <input type="submit" value="Continue" /> + </div> + </noscript> + </form> + +</body> +</html>
\ No newline at end of file diff --git a/connector/src/main/resources/templates/other_login_method.html b/connector/src/main/resources/templates/other_login_method.html new file mode 100644 index 00000000..c233c5c4 --- /dev/null +++ b/connector/src/main/resources/templates/other_login_method.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org" + xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" + layout:decorator="fragments/base" + th:with="lang=${#locale.language}" th:lang="${lang}"> +<head> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> + <title th:text="#{gui.otherlogin.title}">eIDAS-Login Other Login Methods</title> +</head> +<body> +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> + </div> + + <h1 th:text="#{gui.otherlogin.header.selection}"> Select an alternative login method </h1> + + <div id="otherlogin"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Handy-Signatur / Mobile Signature" + th:attr="value=#{gui.otherlogin.hs}"/> + <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Andere eIDAS ID" th:attr="value=#{gui.otherlogin.eidas}"/> + <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Keine weitere HS / eIDAS" th:attr="value=#{gui.otherlogin.none}"/> + <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + </div> + + <!-- Abbrechen Button --> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" + th:attr="value=#{gui.otherlogin.cancel}"> + <input type="hidden" name="stopAuthProcess" value="true"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> + </form> + +</div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> +</body> +</html> diff --git a/connector/src/main/resources/templates/residency.html b/connector/src/main/resources/templates/residency.html index b434b9f9..8192a068 100644 --- a/connector/src/main/resources/templates/residency.html +++ b/connector/src/main/resources/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -102,17 +101,41 @@ </head> <body> -<div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h2 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h2> + <h1 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h1> <div id="residency"> <form id="inputForm" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <div th:text="#{gui.residency.header.help}">Please enter a Municipality or Village first</div> + <div th:text="#{gui.residency.header.help}">Please enter a postcode, municipality or village first</div> <div> <label for="inputPostleitzahl" th:text="#{gui.residency.input.postleitzahl}">Postleitzahl</label> <input type="text" id="inputPostleitzahl" name="postleitzahl" value=""/> @@ -181,5 +204,9 @@ </form> </div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/connector/src/main/webapp/css/basic.css b/connector/src/main/webapp/css/basic.css deleted file mode 100644 index 4bec163a..00000000 --- a/connector/src/main/webapp/css/basic.css +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - .bgTrans { - background-color:transparent - }
\ No newline at end of file diff --git a/connector/src/main/webapp/js/js_country.js b/connector/src/main/webapp/js/js_country.js new file mode 100644 index 00000000..5dcea90e --- /dev/null +++ b/connector/src/main/webapp/js/js_country.js @@ -0,0 +1,42 @@ +function clickCountryFlag(element) { + if (!element) return false; + + var form = element.target.closest("form"); + + if (!form) return false; + + form.submit(); + return false; +} + + +/* Set JS events by EventListener to prevent problems with CSP*/ +document.addEventListener("DOMContentLoaded", function(event) { + + /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ + if (!Element.prototype.matches) + Element.prototype.matches = Element.prototype.msMatchesSelector || + Element.prototype.webkitMatchesSelector; + + if (!Element.prototype.closest) + Element.prototype.closest = function(s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; + + /* set Click events by EventListener to prevent JavaScript in HTML which can be a problem with CSP*/ + var allFlags = document.getElementsByClassName("countryimage"); + for (i=0;i<allFlags.length;i++) { + if(allFlags[i].getAttribute("disabled") == null) { + allFlags[i].closest("a").addEventListener('click', clickCountryFlag, false); + } + } +}); + + + diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java index 4e66d324..fd22cea4 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java @@ -115,7 +115,7 @@ import szrservices.SignContentResponseType; public class FullStartUpAndProcessTest { private static final String FINAL_REDIRECT = "http://localhost/public/secure/finalizeAuthProtocol?pendingid="; - + @Autowired private WebApplicationContext wac; @Autowired private PvpEndPointCredentialProvider credentialProvider; @Autowired private PvpMetadataProvider metadataProvider; @@ -128,7 +128,7 @@ public class FullStartUpAndProcessTest { @Autowired private ProtocolFinalizationController finalize; @Autowired private IStatusMessenger messager; - + @Rule public final SoapServiceRule soap = SoapServiceRule.newInstance(); @@ -203,7 +203,7 @@ public class FullStartUpAndProcessTest { } LogMessageProviderFactory.setStatusMessager(messager); - + szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr"); zmrClient = soap.mock(ServicePort.class, "http://localhost:1234/demozmr"); @@ -240,7 +240,7 @@ public class FullStartUpAndProcessTest { Assert.assertFalse("selectionPage is empty", selectionPage.isEmpty()); String pendingReqId = extractRequestToken(selectionPage, - "<input type=\"hidden\" name=\"pendingid\" value=\""); + "<input type=\"hidden\" name=\"pendingid\" value=\""); Assert.assertFalse("PendingReqId", pendingReqId.isEmpty()); @@ -316,7 +316,7 @@ public class FullStartUpAndProcessTest { Assert.assertFalse("selectionPage is empty", selectionPage.isEmpty()); String pendingReqId = extractRequestToken(selectionPage, - "<input type=\"hidden\" name=\"pendingid\" value=\""); + "<input type=\"hidden\" name=\"pendingid\" value=\""); Assert.assertFalse("PendingReqId", pendingReqId.isEmpty()); @@ -357,8 +357,8 @@ public class FullStartUpAndProcessTest { RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(eidasNodeRespReq, finalizeResp)); injectZmrResponse(); - injectSzrResponse(); - + injectSzrResponse(); + //excute eIDAS node response eidasSignal.restoreEidasAuthProcess(eidasNodeRespReq, finalizeResp); @@ -415,7 +415,7 @@ public class FullStartUpAndProcessTest { extractor.getSingleAttributeValue("urn:eidgvat:attributes.piiTransactionId")); Assert.assertEquals("Wrong attr:EID_STATUS_LEVEL ", "http://eid.gv.at/eID/status/identity", extractor.getSingleAttributeValue(PvpAttributeDefinitions.EID_IDENTITY_STATUS_LEVEL_NAME)); - + } private void injectSzrResponse() throws Exception { @@ -428,52 +428,52 @@ public class FullStartUpAndProcessTest { when(szrMock.signContent(any(), any(), any())).thenReturn(signContentResp); } - + private void injectZmrResponse() throws Exception { ResponseType resp = new ResponseType(); - + WorkflowInfoServer workflow = new WorkflowInfoServer(); - workflow.setProzessInstanzID(new BigInteger(RandomStringUtils.randomNumeric(10))); + workflow.setProzessInstanzID(new BigInteger(RandomStringUtils.randomNumeric(10))); resp.setWorkflowInfoServer(workflow); PersonSuchenResponse persRespObj = new PersonSuchenResponse(); PersonensuchergebnisType searchResult = new PersonensuchergebnisType(); PersonErgebnisSatzType personInfoObj = new PersonErgebnisSatzType(); - resp.setPersonSuchenResponse(persRespObj); - persRespObj.setPersonensuchergebnis(searchResult); - + resp.setPersonSuchenResponse(persRespObj); + persRespObj.setPersonensuchergebnis(searchResult); + searchResult.setGefundeneSaetzeERnP(0); - searchResult.setGefundeneSaetze(1); + searchResult.setGefundeneSaetze(1); searchResult.getPersonErgebnisSatz().add(personInfoObj); - + PersonErgebnisType personInfo = new PersonErgebnisType(); Personendaten personDataObj = new Personendaten(); personInfoObj.setPersonendaten(personDataObj); personDataObj.getPersonErgebnis().add(personInfo); - + EidasIdentitaetErgebnisType eidasPersonalIdentifier = new EidasIdentitaetErgebnisType(); personInfo.getEidasIdentitaet().add(eidasPersonalIdentifier); eidasPersonalIdentifier.setEidasWert(personalId); eidasPersonalIdentifier.setEidasArt(Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER); - eidasPersonalIdentifier.setStaatscode2(cc); - + eidasPersonalIdentifier.setStaatscode2(cc); + NatuerlichePersonErgebnisType natInfo = new NatuerlichePersonErgebnisType(); IdentificationType bpk = new IdentificationType(); PersonenName natName = new PersonenName(); natInfo.getIdentification().add(bpk); - natInfo.setPersonenName(natName); + natInfo.setPersonenName(natName); personInfo.setNatuerlichePerson(natInfo); - + bpk.setType(EaafConstants.URN_PREFIX_CDID + "ZP"); - bpk.setValue(RandomStringUtils.randomAlphabetic(10)); + bpk.setValue(RandomStringUtils.randomAlphabetic(10)); natInfo.setGeburtsdatum(dateOfBirth); natName.setFamilienname(familyName); - natName.setVorname(givenName); - + natName.setVorname(givenName); + when(zmrClient.service(any(), any())).thenReturn(resp); - + } - + private String validateEidasNodeRequestAndBuildResponse(String eidasNodeReqToken) throws SpecificCommunicationException, URISyntaxException { diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java index bcba3e11..1a2bba13 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java @@ -80,37 +80,37 @@ public class Pvp2SProfileEndPointTest { @Autowired private PvpMetadataProvider metadataProvider; @Autowired private ResourceLoader resourceLoader; @Autowired private IRequestStorage storage; - + private static CertificateFactory fact; - - + + private MockHttpServletRequest httpReq; private MockHttpServletResponse httpResp; - + /** * jUnit class initializer. * @throws ComponentInitializationException In case of an error * @throws InitializationException In case of an error - * @throws CertificateException - * + * @throws CertificateException + * */ @BeforeClass - public static void classInitializer() throws InitializationException, + public static void classInitializer() throws InitializationException, ComponentInitializationException, CertificateException { final String current = new java.io.File(".").toURI().toString(); System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); - + EaafOpenSaml3xInitializer.eaafInitialize(); - + fact = CertificateFactory.getInstance("X.509"); - + } - + /** * jUnit test set-up. - * @throws EaafException - * + * @throws EaafException + * */ @Before public void initialize() throws EaafException { @@ -118,193 +118,193 @@ public class Pvp2SProfileEndPointTest { httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - + } - + @Test - public void authnReqWrongEndpoint() throws EaafException, XMLParserException, UnmarshallingException, - UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + public void authnReqWrongEndpoint() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, ComponentInitializationException { //initialize test final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( XMLObjectProviderRegistrySupport.getParserPool(), Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_3.xml")); - authnReq.setIssueInstant(DateTime.now()); - RequestAbstractType signedAuthnReq = - Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( - XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); httpReq.setParameter("SAMLRequest", b64); - + final org.springframework.core.io.Resource resource = resourceLoader.getResource( "classpath:/data/metadata_valid.xml"); Timer timer = new Timer("PVP metadata-resolver refresh"); - ResourceBackedMetadataResolver fileSystemResolver = + ResourceBackedMetadataResolver fileSystemResolver = new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); fileSystemResolver.setId("test"); fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); - fileSystemResolver.initialize(); + fileSystemResolver.initialize(); metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); - - + + //request SAML2 authentication try { controller.pvpIdpPostRequest(httpReq, httpResp); Assert.fail("wrong AuthnRequest not detected"); - + }catch (EaafException e) { - Assert.assertEquals("wrong errorId", "pvp2.22", e.getErrorId()); - - } + Assert.assertEquals("wrong errorId", "pvp2.22", e.getErrorId()); + + } } - + @Test - public void authnReqWrongSigned() throws EaafException, XMLParserException, UnmarshallingException, - UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + public void authnReqWrongSigned() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, ComponentInitializationException { //initialize test final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( XMLObjectProviderRegistrySupport.getParserPool(), Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); - authnReq.setIssueInstant(DateTime.now()); - RequestAbstractType signedAuthnReq = - Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( - XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); httpReq.setParameter("SAMLRequest", b64); - + final org.springframework.core.io.Resource resource = resourceLoader.getResource( "classpath:/data/metadata_valid.xml"); Timer timer = new Timer("PVP metadata-resolver refresh"); - ResourceBackedMetadataResolver fileSystemResolver = + ResourceBackedMetadataResolver fileSystemResolver = new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); fileSystemResolver.setId("test"); fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); - fileSystemResolver.initialize(); + fileSystemResolver.initialize(); metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); - - + + //request SAML2 authentication try { controller.pvpIdpPostRequest(httpReq, httpResp); Assert.fail("wrong AuthnRequest not detected"); - + }catch (EaafException e) { - Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); - - } + Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); + + } } - + @Test - public void authnReqMetadataExpired() throws EaafException, XMLParserException, UnmarshallingException, - UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + public void authnReqMetadataExpired() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, ComponentInitializationException { //initialize test final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( XMLObjectProviderRegistrySupport.getParserPool(), Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); - authnReq.setIssueInstant(DateTime.now()); - RequestAbstractType signedAuthnReq = - Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( - XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); httpReq.setParameter("SAMLRequest", b64); - + final org.springframework.core.io.Resource resource = resourceLoader.getResource( "classpath:/data/metadata_expired.xml"); Timer timer = new Timer("PVP metadata-resolver refresh"); - ResourceBackedMetadataResolver fileSystemResolver = + ResourceBackedMetadataResolver fileSystemResolver = new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); fileSystemResolver.setId("test"); fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); - fileSystemResolver.initialize(); + fileSystemResolver.initialize(); metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); - - + + //request SAML2 authentication try { controller.pvpIdpPostRequest(httpReq, httpResp); Assert.fail("wrong AuthnRequest not detected"); - + }catch (EaafException e) { - Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); - - } + Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); + + } } - + @Test - public void authnReqValid() throws EaafException, XMLParserException, UnmarshallingException, - UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + public void authnReqValid() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, ComponentInitializationException { //initialize test final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( XMLObjectProviderRegistrySupport.getParserPool(), Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); - authnReq.setIssueInstant(DateTime.now()); - RequestAbstractType signedAuthnReq = - Saml2Utils.signSamlObject(authnReq, credentialProvider.getMessageSigningCredential(), true); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMessageSigningCredential(), true); String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( - XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); httpReq.setParameter("SAMLRequest", b64); - + final org.springframework.core.io.Resource resource = resourceLoader.getResource( "classpath:/data/metadata_valid.xml"); Timer timer = new Timer("PVP metadata-resolver refresh"); - ResourceBackedMetadataResolver fileSystemResolver = + ResourceBackedMetadataResolver fileSystemResolver = new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); fileSystemResolver.setId("test"); fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); - fileSystemResolver.initialize(); + fileSystemResolver.initialize(); metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); - - + + //request SAML2 authentication controller.pvpIdpPostRequest(httpReq, httpResp); - - + + //validate state Assert.assertEquals("http statuscode", 200, httpResp.getStatus()); Assert.assertEquals("Wrong http ContentType", "text/html;charset=UTF-8", httpResp.getContentType()); - + String html = httpResp.getContentAsString(); Assert.assertNotNull("html result is null", html); - Assert.assertFalse("html result is empty", html.isEmpty()); + Assert.assertFalse("html result is empty", html.isEmpty()); Assert.assertTrue("Wrong page", html.contains("action=\"/myHomeCountry\"")); - - String pattern = "<input type=\"hidden\" name=\"pendingid\" value=\""; + + String pattern = "<input type=\"hidden\" name=\"pendingid\" value=\""; int pendingIdStart = html.indexOf(pattern) + pattern.length(); - int pendingIdEnd = html.indexOf("\"", pendingIdStart); - String pendingReqId = html.substring(pendingIdStart, pendingIdEnd); + int pendingIdEnd = html.indexOf("\"", pendingIdStart); + String pendingReqId = html.substring(pendingIdStart, pendingIdEnd); Assert.assertFalse("pendingReqId is empty", pendingReqId.isEmpty()); - + IRequest pendingReq = storage.getPendingRequest(pendingReqId); - Assert.assertNotNull("pendingReq", pendingReq); + Assert.assertNotNull("pendingReq", pendingReq); Assert.assertNotNull("piiTransId", pendingReq.getUniquePiiTransactionIdentifier()); Assert.assertNotNull("piiTransId", pendingReq.getUniqueTransactionIdentifier()); - - Assert.assertEquals("wrong OA Id", "https://demo.egiz.gv.at/demoportal-openID_demo", + + Assert.assertEquals("wrong OA Id", "https://demo.egiz.gv.at/demoportal-openID_demo", pendingReq.getRawData(MsEidasNodeConstants.DATA_REQUESTERID, String.class)); - Assert.assertEquals("wrong bPK Target", "urn:publicid:gv.at:cdid+BF", + Assert.assertEquals("wrong bPK Target", "urn:publicid:gv.at:cdid+BF", pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier()); - - + + } - + @Test - public void checkSaml2Metadata() throws EaafException, UnsupportedEncodingException, XMLParserException, + public void checkSaml2Metadata() throws EaafException, UnsupportedEncodingException, XMLParserException, UnmarshallingException, CertificateException, SignatureException { - + //request SAML2 Metadata controller.pvpMetadataRequest(httpReq, httpResp); - + //validate state Assert.assertEquals("http statuscode", 200, httpResp.getStatus()); Assert.assertEquals("Wrong http ContentType", "application/xml", httpResp.getContentType()); - + String html = httpResp.getContentAsString(); Assert.assertNotNull("html result is null", html); - Assert.assertFalse("html result is empty", html.isEmpty()); - + Assert.assertFalse("html result is empty", html.isEmpty()); + final EntityDescriptor entity = (EntityDescriptor) XMLObjectSupport.unmarshallFromInputStream( XMLObjectProviderRegistrySupport.getParserPool(), @@ -320,18 +320,18 @@ public class Pvp2SProfileEndPointTest { final Credential cred = new BasicX509Credential((X509Certificate) fact.generateCertificate( Pvp2SProfileEndPointTest.class.getResourceAsStream("/config/keys/Metadata.pem"))); SignatureValidator.validate(entity.getSignature(), cred); - + Assert.assertEquals("wrong entityId", "http://localhost/pvp/metadata", entity.getEntityID()); Assert.assertNotNull("IDPSSODescr", entity.getRoleDescriptors(IDPSSODescriptor.DEFAULT_ELEMENT_NAME)); Assert.assertNotNull("SPSSODescr", entity.getRoleDescriptors(SPSSODescriptor.DEFAULT_ELEMENT_NAME)); - Assert.assertEquals("SPSSODescr. size", 0, + Assert.assertEquals("SPSSODescr. size", 0, entity.getRoleDescriptors(SPSSODescriptor.DEFAULT_ELEMENT_NAME).size()); - + List<RoleDescriptor> idp = entity.getRoleDescriptors(IDPSSODescriptor.DEFAULT_ELEMENT_NAME); Assert.assertEquals("IDP descr. size", 1, idp.size()); Assert.assertEquals("IDP descr. endpoints", 2, idp.get(0).getEndpoints().size()); Assert.assertEquals("IDP descr. keyDescr", 1, idp.get(0).getKeyDescriptors().size()); - + } - + } diff --git a/connector/src/test/resources/config/properties/messages.properties b/connector/src/test/resources/config/properties/messages.properties index 2f99d892..3f662ef9 100644 --- a/connector/src/test/resources/config/properties/messages.properties +++ b/connector/src/test/resources/config/properties/messages.properties @@ -84,8 +84,8 @@ gui.countryselection.country.ro=Romania gui.countryselection.country.ro.logo.alt=Romania-eID gui.countryselection.country.sk=Slovakia gui.countryselection.country.sk.logo.alt=Slovakia-eID -gui.countryselection.country.sw=Sweden -gui.countryselection.country.sw.logo.alt=Sweden-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID gui.countryselection.country.uk=United Kingdom gui.countryselection.country.uk.logo.alt=United Kingdom-eID @@ -97,17 +97,19 @@ gui.countryselection.mode.qs=QS gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel ##Austrian Residency page gui.residency.title=Austrian Residency -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Mainpage BMI -gui.residency.header1=Federal Ministry of Internal Affairs -gui.residency.header2=Austrian Central eIDAS Node -gui.residency.header3=Operated by Federal Ministry of Internal Affairs gui.residency.header.selection=Search for your Austrian Residency gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ - Municipality or Village first to start the search. + postcode, municipality or village first to start the search. gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village gui.residency.cancel=Cancel gui.residency.search=Search diff --git a/connector/src/test/resources/config/properties/messages_de.properties b/connector/src/test/resources/config/properties/messages_de.properties index ead751d0..c0f3c9a5 100644 --- a/connector/src/test/resources/config/properties/messages_de.properties +++ b/connector/src/test/resources/config/properties/messages_de.properties @@ -85,8 +85,8 @@ gui.countryselection.country.ro=Romänien gui.countryselection.country.ro.logo.alt=Romänische-eID gui.countryselection.country.sk=Slovakei gui.countryselection.country.sk.logo.alt=Slovakische-eID -gui.countryselection.country.sw=Schweden -gui.countryselection.country.sw.logo.alt=Schwedische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID gui.countryselection.country.uk=Großbritanien gui.countryselection.country.uk.logo.alt=Britische-eID @@ -98,17 +98,19 @@ gui.countryselection.mode.qs=Qualitätsicherung gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen ##Austrian Residency page gui.residency.title=Österreichischer Wohnsitz -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Startseite BMI -gui.residency.header1=Bundesministerium für Inneres -gui.residency.header2=Zentraler eIDAS Knoten der Republik Österreich -gui.residency.header3=Betrieben durch das Bundesministerium für Inneres gui.residency.header.selection=Suche nach Österreichischem Wohnsitz gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ - Gemeinde oder Ortschaft ein um die Suche zu starten. + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein gui.residency.cancel=Abbrechen gui.residency.search=Suche diff --git a/connector/src/test/resources/config/templates/countrySelection.html b/connector/src/test/resources/config/templates/countrySelection.html index 2483030b..e196cd31 100644 --- a/connector/src/test/resources/config/templates/countrySelection.html +++ b/connector/src/test/resources/config/templates/countrySelection.html @@ -4,233 +4,266 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> <head> - <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> -<script type="text/javascript"> -</script> -<style> -body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; -} -div.titlebar { - padding: 0px; -} -div.titlebar div { -} -.hidden { - display: none; -} -ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; -} -li { - display: inline-block; -} -div.header a { - text-decoration: none; - color: black; -} -a { - text-decoration: none; - color: #a22c1c; -} -.block { - /* override country.css */ - width: 200px; - padding-bottom: 20px; -} -@media only screen and (min-width: 1000px) { - div.header { - padding-left: 137px; - padding-right: 137px; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - footer { - padding-left: 137px; - padding-right: 137px; - } -} -@media only screen and (max-width: 999px) { - div.header { - padding-left: 1em; - padding-right: 1em; - } - .content { - padding-left: 1em; - padding-right: 1em; - } - footer { - padding-left: 1em; - padding-right: 1em; - } -} - -div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; -} -div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; -} -footer { - left: 0; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; -} -.float { - float: left; -} -.floatright { - float: right; -} -.copyright { - width: 66%; - font-size: 80%; -} -#countries { - padding-bottom: 40px; -} -#country { - padding-bottom: 20px; -} -input[type=submit] { - width: inherit; -/* text-align: left; */ -} -form { - justify-content: center; -} -</style> -<script type="text/javascript"> - -/* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ -if (!Element.prototype.matches) - Element.prototype.matches = Element.prototype.msMatchesSelector || - Element.prototype.webkitMatchesSelector; - -if (!Element.prototype.closest) - Element.prototype.closest = function(s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; - - -function clickCountryFlag(element) { - if (!element) return false; - - var form = element.closest("form"); - - if (!form) return false; - - form.submit(); - return false; -} -</script> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> + <script type="text/javascript" src="$contextPath/static/js/js_country.js" + th:attr="src=@{/static/js/js_country.js}"></script> + <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> </head> <body> - <div class="header container"> +<div class="header container"> <div class="titlebar"> - <div> - <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> - <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" - th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> - <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> - </a> - </div> - <ul class="nav_oben"> - <li> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock - </div> - </li> - - <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}" > Startseite BMI </a></li> - </ul> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}"> Startseite + BMI </a></li> + </ul> </div> - </div> - <div class="content"> +</div> +<div class="content"> <div class="subtitle"> - <h1 th:text="#{gui.countryselection.header2}" > Zentraler eIDAS Knoten der Republik Österreich </h1> - <h2 th:text="#{gui.countryselection.header3}" > Betrieben durch das Bundesministerium für Inneres </h2> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> <h1 th:text="#{gui.countryselection.header.selection}"> Wählen Sie Ihr Land / Select your country </h1> <div id="country"> - <!-- Active countries --> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" - th:attr="src=@{/img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> - <input type="submit" role="button" value="Deutschland / Germany" th:attr="value=#{gui.countryselection.country.de}" /> - <input type="hidden" name="selectedCountry" value="XX"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" + th:attr="src=@{/img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> + <input type="submit" role="button" value="Deutschland / Germany" + th:attr="value=#{gui.countryselection.country.de}"/> + <input type="hidden" name="selectedCountry" value="DE"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU_gray.png" alt="Belgium-eID" + th:attr="src=@{img/countries/Belgium-EU_gray.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a> + <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Bulgaria-EU_gray.png" + alt="Bulgaria-eID" + th:attr="src=@{/img/countries/Bulgaria-EU_gray.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a> + <input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU_gray.png" alt="Croatia-eID" + th:attr="src=@{/img/countries/Croatia-EU_gray.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a> + <input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Cyprus-EU_gray.png" alt="Cyprus-eID" + th:attr="src=@{/img/countries/Cyprus-EU_gray.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a> + <input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU_gray.png" + alt="CzechRepublic-eID" + th:attr="src=@{/img/countries/CzechRepublic-EU_gray.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a> + <input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Denmark-EU_gray.png" alt="Denmark-eID" + th:attr="src=@{/img/countries/Denmark-EU_gray.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a> + <input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU_gray.png" alt="Estonia-eID" + th:attr="src=@{/img/countries/Estonia-EU_gray.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a> + <input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Finland-EU_gray.png" alt="Finland-eID" + th:attr="src=@{/img/countries/Finland-EU_gray.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a> + <input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/France-EU_gray.png" alt="France-eID" + th:attr="src=@{/img/countries/France-EU_gray.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a> + <input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Greece-EU_gray.png" alt="Greece-eID" + th:attr="src=@{/img/countries/Greece-EU_gray.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a> + <input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Hungary-EU_gray.png" alt="Hungary-eID" + th:attr="src=@{/img/countries/Hungary-EU_gray.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a> + <input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Ireland-EU_gray.png" alt="Ireland-eID" + th:attr="src=@{/img/countries/Ireland-EU_gray.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a> + <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Italy-EU_gray.png" alt="Italy-eID" + th:attr="src=@{/img/countries/Italy-EU_gray.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a> + <input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}"> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Latvia-EU_gray.png" alt="Latvia-eID" + th:attr="src=@{/img/countries/Latvia-EU_gray.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a> + <input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Luxembourg-EU_gray.png" + alt="Luxembourg-eID" + th:attr="src=@{/img/countries/Luxembourg-EU_gray.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> + <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Malta-EU_gray.png" alt="Malta-eID" + th:attr="src=@{/img/countries/Malta-EU_gray.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a> + <input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Poland-EU_gray.png" alt="Poland-eID" + th:attr="src=@{/img/countries/Poland-EU_gray.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a> + <input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU_gray.png" alt="Portugal-eID" + th:attr="src=@{/img/countries/Portugal-EU_gray.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a> + <input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Romania-EU_gray.png" alt="Romania-eID" + th:attr="src=@{/img/countries/Romania-EU_gray.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a> + <input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Slovakia-EU_gray.png" + alt="Slovakia-eID" + th:attr="src=@{/img/countries/Slovakia-EU_gray.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a> + <input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU_gray.png" alt="Slovenia-eID" + th:attr="src=@{/img/countries/Slovenia-EU_gray.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a> + <input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/Spain-EU_gray.png" alt="Spain-eID" + th:attr="src=@{/img/countries/Spain-EU_gray.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a> + <input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}"> + <select id="testEnvironment" name="selectedEnvironment"> + <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> + <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> + <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> + <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> + </select> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/Sweden-EU_gray.png" alt="Sweden-eID" + th:attr="src=@{/img/countries/Sweden-EU_gray.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a> + <input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}" disabled> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_gray.jpg" + alt="TheNetherlands-eID" + th:attr="src=@{/img/countries/TheNetherlands-EU_gray.jpg},alt=#{gui.countryselection.country.nl.logo.alt}"/></a> + <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}"> + </form> + + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <a><img disabled class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU_gray.png" + alt="UnitedKingdom-eID" + th:attr="src=@{/img/countries/UnitedKingdom-EU_gray.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a> + <input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}" disabled> + </form> </div> <!-- Abbrechen Button --> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}"> - <input type="hidden" name="stopAuthProcess" value="true" > - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" + th:attr="value=#{gui.countryselection.cancel}"> + <input type="hidden" name="stopAuthProcess" value="true"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> </form> - <p th:text="#{gui.countryselection.notsupportedinfo}" >Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken ... </p> - -<h2 th:text="#{gui.countryselection.infos.general.header}" > Information zur Anmeldung über Europäische eIDs </h2> -<p> - <span th:text="#{gui.countryselection.infos.general.part.1}"> first part </span> - <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.header1}" > Bundesministerium für Inneres </a> - <span th:text="#{gui.countryselection.infos.general.part.2}"> second part </span> -</p> - -<p> - <span th:text="#{gui.countryselection.infos.general.part.3}"> third part </span> - <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014R0910&from=DE" target="_blank" th:text="#{gui.countryselection.infos.general.link.1}"> eIDAS-Verordnung der Europäischen Union </a> - <span th:text="#{gui.countryselection.infos.general.part.4}"> fourth part </span> -</p> - -<p - <span th:text="#{gui.countryselection.infos.general.part.5}"> fived part </span> - <a href="https://www.dsb.gv.at/-/das-erganzungsregister-fur-naturliche-personen-ernp-" target="_blank" th:text="#{gui.countryselection.infos.general.link.2}" ></a> - <span th:text="#{gui.countryselection.infos.general.part.6}"> sixed part </span> -</p> - - </div> - <footer> - <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> - <div></div> - </footer> + <p th:text="#{gui.countryselection.notsupportedinfo}">Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken + ... </p> + + <h2 th:text="#{gui.countryselection.infos.general.header}"> Information zur Anmeldung über Europäische eIDs </h2> + <p> + <span th:text="#{gui.countryselection.infos.general.part.1}"> first part </span> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.header1}"> Bundesministerium + für Inneres </a> + <span th:text="#{gui.countryselection.infos.general.part.2}"> second part </span> + </p> + + <p> + <span th:text="#{gui.countryselection.infos.general.part.3}"> third part </span> + <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014R0910&from=DE" target="_blank" + th:text="#{gui.countryselection.infos.general.link.1}"> eIDAS-Verordnung der Europäischen Union </a> + <span th:text="#{gui.countryselection.infos.general.part.4}"> fourth part </span> + </p> + + <p + <span th:text="#{gui.countryselection.infos.general.part.5}"> fived part </span> + <a href="https://www.dsb.gv.at/-/das-erganzungsregister-fur-naturliche-personen-ernp-" target="_blank" + th:text="#{gui.countryselection.infos.general.link.2}"></a> + <span th:text="#{gui.countryselection.infos.general.part.6}"> sixed part </span> + </p> + +</div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/connector/src/test/resources/config/templates/countrySelection_example.html b/connector/src/test/resources/config/templates/countrySelection_example.html deleted file mode 100644 index 2128f14d..00000000 --- a/connector/src/test/resources/config/templates/countrySelection_example.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE html> -<html xmlns:th="http://www.thymeleaf.org" - xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" - layout:decorator="fragments/base" - th:with="lang=${#locale.language}" th:lang="${lang}"> - -<head> - <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <script type="text/javascript" src="$contextPath/static/js/js_country.js" th:attr="src=@{/static/js/js_country.js}"></script> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> -</head> - -<body> - <div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock - </div> - - <h2 th:text="#{gui.countryselection.header.selection}"> Select your country </h2> - <div id="country"> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" - th:attr="src=@{/img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> - <input type="submit" role="button" value="Deutschland / Germany" th:attr="value=#{gui.countryselection.country.de}" /> - <input type="hidden" name="selectedCountry" value="DE"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - <select id="testEnvironment" name="selectedEnvironment"> - <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> - <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> - <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> - <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> - </select> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU_gray.png" alt="Belgium-eID" - th:attr="src=@{img/countries/Belgium-EU_gray.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a> - <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Bulgaria-EU_gray.png" alt="Bulgaria-eID" - th:attr="src=@{/img/countries/Bulgaria-EU_gray.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a> - <input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU_gray.png" alt="Croatia-eID" - th:attr="src=@{/img/countries/Croatia-EU_gray.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a> - <input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Cyprus-EU_gray.png" alt="Cyprus-eID" - th:attr="src=@{/img/countries/Cyprus-EU_gray.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a> - <input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU_gray.png" alt="CzechRepublic-eID" - th:attr="src=@{/img/countries/CzechRepublic-EU_gray.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a> - <input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Denmark-EU_gray.png" alt="Denmark-eID" - th:attr="src=@{/img/countries/Denmark-EU_gray.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a> - <input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU_gray.png" alt="Estonia-eID" - th:attr="src=@{/img/countries/Estonia-EU_gray.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a> - <input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Finland-EU_gray.png" alt="Finland-eID" - th:attr="src=@{/img/countries/Finland-EU_gray.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a> - <input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/France-EU_gray.png" alt="France-eID" - th:attr="src=@{/img/countries/France-EU_gray.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a> - <input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Greece-EU_gray.png" alt="Greece-eID" - th:attr="src=@{/img/countries/Greece-EU_gray.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a> - <input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Hungary-EU_gray.png" alt="Hungary-eID" - th:attr="src=@{/img/countries/Hungary-EU_gray.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a> - <input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Ireland-EU_gray.png" alt="Ireland-eID" - th:attr="src=@{/img/countries/Ireland-EU_gray.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a> - <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Italy-EU_gray.png" alt="Italy-eID" - th:attr="src=@{/img/countries/Italy-EU_gray.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a> - <input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}"> - <select id="testEnvironment" name="selectedEnvironment"> - <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> - <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> - <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> - <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> - </select> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Latvia-EU_gray.png" alt="Latvia-eID" - th:attr="src=@{/img/countries/Latvia-EU_gray.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a> - <input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Luxembourg-EU_gray.png" alt="Luxembourg-eID" - th:attr="src=@{/img/countries/Luxembourg-EU_gray.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> - <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Malta-EU_gray.png" alt="Malta-eID" - th:attr="src=@{/img/countries/Malta-EU_gray.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a> - <input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Poland-EU_gray.png" alt="Poland-eID" - th:attr="src=@{/img/countries/Poland-EU_gray.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a> - <input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU_gray.png" alt="Portugal-eID" - th:attr="src=@{/img/countries/Portugal-EU_gray.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a> - <input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Romania-EU_gray.png" alt="Romania-eID" - th:attr="src=@{/img/countries/Romania-EU_gray.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a> - <input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Slovakia-EU_gray.png" alt="Slovakia-eID" - th:attr="src=@{/img/countries/Slovakia-EU_gray.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a> - <input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU_gray.png" alt="Slovenia-eID" - th:attr="src=@{/img/countries/Slovenia-EU_gray.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a> - <input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/Spain-EU_gray.png" alt="Spain-eID" - th:attr="src=@{/img/countries/Spain-EU_gray.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a> - <input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}"> - <select id="testEnvironment" name="selectedEnvironment"> - <option value="prod" th:text="#{gui.countryselection.mode.prod}">Production</option> - <option value="qs" th:text="#{gui.countryselection.mode.qs}">QS</option> - <option value="test" th:text="#{gui.countryselection.mode.test}">Testing</option> - <option value="dev" th:text="#{gui.countryselection.mode.dev}">Development</option> - </select> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/Sweden-EU_gray.png" alt="Sweden-eID" - th:attr="src=@{/img/countries/Sweden-EU_gray.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a> - <input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}" disabled> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_gray.jpg" alt="TheNetherlands-eID" - th:attr="src=@{/img/countries/TheNetherlands-EU_gray.jpg},alt=#{gui.countryselection.country.nl.logo.alt}"/></a> - <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}"> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <a><img disabled class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU_gray.png" alt="UnitedKingdom-eID" - th:attr="src=@{/img/countries/UnitedKingdom-EU_gray.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a> - <input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}" disabled> - </form> - - </div> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}"> - <input type="hidden" name="stopAuthProcess" value="true" > - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> - </form> - - </div> -</body> -</html> diff --git a/connector/src/test/resources/config/templates/error.html b/connector/src/test/resources/config/templates/error.html new file mode 100644 index 00000000..e2c605c7 --- /dev/null +++ b/connector/src/test/resources/config/templates/error.html @@ -0,0 +1,53 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" + xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" + layout:decorator="fragments/base" + th:with="lang=${#locale.language}" th:lang="${lang}"> + +<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> +<link rel="stylesheet" href="$contextPath/css/css_error.css" th:href="@{/css/css_error.css}"/> + +<title th:text="#{gui.errorpage.msg.title}">An error arise ... </title> +</head> + +<body> +<div id="page"> + <div id="page1" class="case selected-case" role="main"> + <div class="hell" role="application"> + <h2 class="OA_header" role="heading" th:text="#{gui.errorpage.msg.title}">Error Header</h2> + + <div id="alert_area" class="hell" role="application"> + <p th:text="#{gui.errorpage.msg.information}">Error Information</p> + <br/> + <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${errorCode}"></span></p> + <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg :</b> <span + th:text="${#messages.msgWithParams('__${errorCode}__', '__${errorParams}__')}"></span></p> + </div> + </div> + + <div th:if="${timestamp}"> + <p><b>Timestamp:</b> <span th:text="${timestamp}"></span></p> + </div> + <div th:if="${error}"> + <p><b>Error:</b> <span th:text="${error}"></span></p> + </div> + <div th:if="${status}"> + <p><b>Status:</b> <span th:text="${status}"></span></p> + </div> + <div th:if="${message}"> + <p><b>Message:</b> <span th:text="${message}"></span></p> + </div> + <div th:if="${exception}"> + <p><b>Exception:</b> <span th:text="${exception}"></span></p> + </div> + <div th:if="${trace}"> + <p><b>Trace:</b> <span th:text="${trace}"></span></p> + </div> + <div th:if="${Stacktrace}"> + <p><b>Stacktrace:</b> <span th:text="${stacktrace}"></span></p> + </div> + + </div> +</div> +</body> +</html>
\ No newline at end of file diff --git a/connector/src/test/resources/config/templates/other_login_method.html b/connector/src/test/resources/config/templates/other_login_method.html index 56c368c6..c233c5c4 100644 --- a/connector/src/test/resources/config/templates/other_login_method.html +++ b/connector/src/test/resources/config/templates/other_login_method.html @@ -7,179 +7,7 @@ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Login-Auswahl</title> - <script type="text/javascript"> - </script> - <style> - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - - div.titlebar { - padding: 0px; - } - - div.titlebar div { - } - - .hidden { - display: none; - } - - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - - li { - display: inline-block; - } - - div.header a { - text-decoration: none; - color: black; - } - - a { - text-decoration: none; - color: #a22c1c; - } - - .block { - /* override country.css */ - width: 200px; - padding-bottom: 20px; - } - - @media only screen and (min-width: 1000px) { - div.header { - padding-left: 137px; - padding-right: 137px; - } - - .content { - padding-left: 137px; - padding-right: 137px; - } - - footer { - padding-left: 137px; - padding-right: 137px; - } - } - - @media only screen and (max-width: 999px) { - div.header { - padding-left: 1em; - padding-right: 1em; - } - - .content { - padding-left: 1em; - padding-right: 1em; - } - - footer { - padding-left: 1em; - padding-right: 1em; - } - } - - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - - footer { - left: 0; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162, 44, 28); - color: white; - } - - .float { - float: left; - } - - .floatright { - float: right; - } - - .copyright { - width: 66%; - font-size: 80%; - } - - #countries { - padding-bottom: 40px; - } - - #country { - padding-bottom: 20px; - } - - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - - form { - justify-content: center; - } - </style> - <script type="text/javascript"> - - /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ - if (!Element.prototype.matches) - Element.prototype.matches = Element.prototype.msMatchesSelector || - Element.prototype.webkitMatchesSelector; - - if (!Element.prototype.closest) - Element.prototype.closest = function (s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; - - - function clickCountryFlag(element) { - if (!element) return false; - - var form = element.closest("form"); - - if (!form) return false; - - form.submit(); - return false; - } - </script> + <title th:text="#{gui.otherlogin.title}">eIDAS-Login Other Login Methods</title> </head> <body> <div class="header container"> @@ -198,8 +26,10 @@ </div> </li> - <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}"> Startseite - BMI </a></li> + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> </ul> </div> </div> @@ -209,35 +39,31 @@ <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h1 th:text="#{gui.countryselection.header.selection}"> Wählen Sie Ihr Land / Select your country </h1> + <h1 th:text="#{gui.otherlogin.header.selection}"> Select an alternative login method </h1> - <div id="country"> - <!-- Active countries --> + <div id="otherlogin"> <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> <input type="submit" role="button" value="Handy-Signatur / Mobile Signature" - th:attr="value=#{gui.countryselection.country.de}"/> - <input type="hidden" name="selectedCountry" value="HS"> + th:attr="value=#{gui.otherlogin.hs}"/> + <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> </form> <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Andere eIDAS ID" - th:attr="value=#{gui.countryselection.country.de}"/> - <input type="hidden" name="selectedCountry" value="EIDAS"> + <input type="submit" role="button" value="Andere eIDAS ID" th:attr="value=#{gui.otherlogin.eidas}"/> + <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> </form> <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Keine weitere HS / eIDAS" - th:attr="value=#{gui.countryselection.country.de}"/> - <input type="hidden" name="selectedCountry" value="NONE"> + <input type="submit" role="button" value="Keine weitere HS / eIDAS" th:attr="value=#{gui.otherlogin.none}"/> + <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> </form> - <!-- todo wohnsitz --> </div> <!-- Abbrechen Button --> <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" - th:attr="value=#{gui.countryselection.cancel}"> + th:attr="value=#{gui.otherlogin.cancel}"> <input type="hidden" name="stopAuthProcess" value="true"> <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> </form> diff --git a/connector/src/test/resources/config/templates/residency.html b/connector/src/test/resources/config/templates/residency.html index 99de851a..44cf17a4 100644 --- a/connector/src/test/resources/config/templates/residency.html +++ b/connector/src/test/resources/config/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -102,17 +101,41 @@ </head> <body> -<div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h2 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h2> + <h1 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h1> <div id="residency"> <form id="inputForm" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <div th:text="#{gui.residency.header.help}">Please enter a Municipality or Village first</div> + <div th:text="#{gui.residency.header.help}">Please enter a postcode, municipality or village first</div> <div> <label for="inputPostleitzahl" th:text="#{gui.residency.input.postleitzahl}">Postleitzahl</label> <input type="text" id="inputPostleitzahl" name="postleitzahl" value=""/> @@ -181,5 +204,9 @@ </form> </div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/connector/src/test/resources/config/webcontent/css/css_country.css b/connector/src/test/resources/config/webcontent/css/css_country.css index 4091955f..bc575c90 100644 --- a/connector/src/test/resources/config/webcontent/css/css_country.css +++ b/connector/src/test/resources/config/webcontent/css/css_country.css @@ -1,137 +1,158 @@ @charset "utf-8"; - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - #page { - padding-top: 2%; - padding-left: 10%; - } - - #country { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; - } - - .block { - display: flex; - flex-direction: row; - flex-wrap: wrap; - cursor: pointer; - text-decoration: none; - padding-right:2%; - width: 250px; - } - - .countryimage { - width:50px; - height:50px; - padding-right: 2%; - padding-bottom: 4%; - } - - input[type=button], input[type=submit], input[type=reset] { - display:flex; - background-color:transparent; - border:none; - color: black; - text-decoration: none; - cursor: pointer; - } - #testEnvironment { - border: none; - color: black; - padding: 10px 20px; - text-decoration: none; - margin: 4px 2px; - height: 3%; - display: inline-block; - vertical-align: middle; - width: 40%; - } - #button{ - background-color: transparent; - border:none; - } - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - div.titlebar { - padding: 0px; - } - div.titlebar div { - } - .hidden { - display: none; - } - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - li { - display: inline-block; - } - div.header a { - text-decoration: none; - color: black; - } - a { - text-decoration: none; - color: #a22c1c; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - footer { - position: fixed; - left: 0; - padding-left: 137px; - padding-right: 137px; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; - } - .float { - float: left; - } - .floatright { - float: right; - } - .copyright { - width: 66%; - font-size: 80%; - } - #countries,#country { - padding-bottom: 40px; - } - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - form { - justify-content: center; - }
\ No newline at end of file +body { + background-image: none; + margin: 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#page { + padding-top: 2%; + padding-left: 10%; +} + +#country { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.block { + display: flex; + flex-direction: row; + flex-wrap: wrap; + cursor: pointer; + text-decoration: none; + padding-right: 2%; + width: 250px; +} + +.countryimage { + width: 50px; + height: 50px; + padding-right: 2%; + padding-bottom: 4%; +} + +input[type=button], input[type=submit], input[type=reset] { + display: flex; + background-color: transparent; + border: none; + color: black; + text-decoration: none; + cursor: pointer; +} + +#testEnvironment { + border: none; + color: black; + padding: 10px 20px; + text-decoration: none; + margin: 4px 2px; + height: 3%; + display: inline-block; + vertical-align: middle; + width: 40%; +} + +#button { + background-color: transparent; + border: none; +} + +div.header { + background-color: #e9ecef; + padding-top: 28px; + padding-left: 137px; + padding-right: 137px; + padding-bottom: 12px; +} + +div.titlebar { + padding: 0px; +} + +div.titlebar div { +} + +.hidden { + display: none; +} + +ul.nav_oben { + padding: 0px; + margin: 0px; + text-align: right; + text-transform: uppercase; +} + +li { + display: inline-block; +} + +div.header a { + text-decoration: none; + color: black; +} + +a { + text-decoration: none; + color: #a22c1c; +} + +.content { + padding-left: 137px; + padding-right: 137px; +} + +div.subtitle h1 { + padding: 0px; + margin: 0px; + font-size: 130%; + align: right; +} + +div.subtitle h2 { + padding: 0px; + margin: 0px; + font-size: 115%; +} + +footer { + position: fixed; + left: 0; + padding-left: 137px; + padding-right: 137px; + padding-top: 1em; + bottom: 0; + width: 100%; + height: 2em; + background-color: rgb(162, 44, 28); + color: white; +} + +.float { + float: left; +} + +.floatright { + float: right; +} + +.copyright { + width: 66%; + font-size: 80%; +} + +#countries, #country { + padding-bottom: 40px; +} + +input[type=submit] { + width: inherit; + /* text-align: left; */ +} + +form { + justify-content: center; +}
\ No newline at end of file diff --git a/connector/src/test/resources/config/webcontent/js/js_country.js b/connector/src/test/resources/config/webcontent/js/js_country.js index 5dcea90e..9baa0d0a 100644 --- a/connector/src/test/resources/config/webcontent/js/js_country.js +++ b/connector/src/test/resources/config/webcontent/js/js_country.js @@ -1,41 +1,41 @@ function clickCountryFlag(element) { - if (!element) return false; + if (!element) return false; - var form = element.target.closest("form"); + var form = element.target.closest("form"); - if (!form) return false; + if (!form) return false; - form.submit(); - return false; + form.submit(); + return false; } /* Set JS events by EventListener to prevent problems with CSP*/ -document.addEventListener("DOMContentLoaded", function(event) { - - /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ - if (!Element.prototype.matches) - Element.prototype.matches = Element.prototype.msMatchesSelector || - Element.prototype.webkitMatchesSelector; - - if (!Element.prototype.closest) - Element.prototype.closest = function(s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; - - /* set Click events by EventListener to prevent JavaScript in HTML which can be a problem with CSP*/ - var allFlags = document.getElementsByClassName("countryimage"); - for (i=0;i<allFlags.length;i++) { - if(allFlags[i].getAttribute("disabled") == null) { - allFlags[i].closest("a").addEventListener('click', clickCountryFlag, false); +document.addEventListener("DOMContentLoaded", function (event) { + + /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ + if (!Element.prototype.matches) + Element.prototype.matches = Element.prototype.msMatchesSelector || + Element.prototype.webkitMatchesSelector; + + if (!Element.prototype.closest) + Element.prototype.closest = function (s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; + + /* set Click events by EventListener to prevent JavaScript in HTML which can be a problem with CSP*/ + var allFlags = document.getElementsByClassName("countryimage"); + for (i = 0; i < allFlags.length; i++) { + if (allFlags[i].getAttribute("disabled") == null) { + allFlags[i].closest("a").addEventListener('click', clickCountryFlag, false); + } } - } }); |