new configuration version

This commit is contained in:
haburger 2024-10-21 08:20:15 +00:00
parent 2559aa6569
commit 5f6704135d
115 changed files with 993 additions and 1324 deletions

View File

@ -45,7 +45,7 @@ spec:
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-a5b664b2c1f534aab19c8301f3618a8c5096d222"
tag: "r-7bd8f34aeeebe1debccb6e4932b092cf2b2c4c88"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/auth"
credentials: "git-credentials"
keystores:

View File

@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
recovery_fidokey_auth.keyRegistered=Sicherheitsschl&uuml;ssel schon registriert
recovery_intro_email.banner.error=Der von Ihnen verwendete Link ist abgelaufen. Bitte geben Sie Ihre E-Mail-Adresse ein, um einen neuen Link zu erhalten.
recovery_intro_email.banner.info=Bitte geben Sie Ihre E-Mail-Adresse ein, damit wir Ihnen einen Link schicken k&ouml;nnen, mit dem Sie den Wiederherstellungsprozess starten.
recovery_intro_email.captchaUnchecked=Bitte kreuzen Sie das Captcha-Feld an
recovery_intro_email.important=Wichtig:
recovery_intro_email.process=Der Wiederherstellungsprozess sollte nur verwendet werden, wenn Sie den Zugriff auf Ihre Login-Faktoren verloren haben (gel&ouml;schte AGOV access App, verlorener Sicherheitsschl&uuml;ssel, verlorenes Telefon usw.).
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA gesch&uuml;tzt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerkl&auml;rung</a> sowie die <a class='link' href='https://policies.google.com/terms' target='_blank'>Nutzungsbedingungen</a> von Google.
recovery_intro_email_sent.banner.button=Keine E-Mail erhalten?
recovery_intro_email_sent.banner.success=Vielen Dank! Sie werden in K&uuml;rze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
recovery_on_going.finishRecovery=Wiederherstellung abschliessen

View File

@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
recovery_fidokey_auth.keyRegistered=Cl&eacute; de s&eacute;curit&eacute; d&eacute;j&agrave; enregistr&eacute;e
recovery_intro_email.banner.error=Le lien que vous avez utilis&eacute; a expir&eacute;. Veuillez saisir votre adresse e-mail pour recevoir un nouveau lien.
recovery_intro_email.banner.info=Veuillez saisir votre adresse e-mail. Nous vous enverrons un e-mail vous permettant de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
recovery_intro_email.important=Important:
recovery_intro_email.process=Le processus de r&eacute;cup&eacute;ration ne doit &ecirc;tre utilis&eacute; que si vous avez perdu l'acc&egrave;s &agrave; vos facteurs de connexion (application AGOV access supprim&eacute;e, cl&eacute; de s&eacute;curit&eacute; perdue, t&eacute;l&eacute;phone perdu, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est prot&eacute;g&eacute; par reCAPTCHA: les <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/privacy&rsquo; target=&rsquo;_blank&rsquo;>r&egrave;gles de confidentialit&eacute;</a> et <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/terms&rsquo; target=&rsquo;_blank&rsquo;>conditions d&rsquo;utilisation</a> de Google s&rsquo;appliquent.
recovery_intro_email_sent.banner.button=Vous n&rsquo;avez pas re&ccedil;u l'email?
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de r&eacute;cup&eacute;ration et des instructions.
recovery_on_going.finishRecovery=Terminer la r&eacute;cup&eacute;ration

View File

@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza gi&agrave; registrata
recovery_intro_email.banner.error=Il link utilizzato &egrave; scaduto. Per ricevere un nuovo link, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.captchaUnchecked=Per favore selezioni il campo captcha
recovery_intro_email.important=Importante:
recovery_intro_email.process=Il processo di ripristino deve essere utilizzato solo se ha perso l'accesso ai suoi fattori di accesso (app di accesso AGOV eliminata, chiave di sicurezza persa, telefono smarrito, ecc.).
recovery_intro_email.siteProtectedWithRecaptcha=Questo sito &egrave; protetto da reCAPTCHA. Si applicano le <a class='link' href='https://policies.google.com/privacy' target='_blank'>norme sulla privacy</a> e i <a class='link' href='https://policies.google.com/terms' target='_blank'>termini di servizio di Google</a>.
recovery_intro_email_sent.banner.button=Non avete ricevuto l'e-mail?
recovery_intro_email_sent.banner.success=Grazie! &Egrave; stata inviata un&rsquo;e-mail contenente il codice di ripristino e le istruzioni.
recovery_on_going.finishRecovery=Completare il ripristino

View File

@ -46,7 +46,7 @@ spec:
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-a5b664b2c1f534aab19c8301f3618a8c5096d222"
tag: "r-7bd8f34aeeebe1debccb6e4932b092cf2b2c4c88"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/idm-job"
credentials: "git-credentials"
keystores:

View File

@ -1,7 +1,7 @@
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.TemplateAdmin=AccessControl.ApplicationSearch,AccessControl.ApplicationView,AccessControl.AuthorizationApplSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationUnitSearch,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientApplView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CollectionView,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.GenerateReport,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertyAttributeAccessOverride,AccessControl.PropertySearch,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.SearchResultsExport,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView,AccessControl.HistoryView
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.UserAdmin=AccessControl.ApplicationView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState,AccessControl.CredentialCreate,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.ProfileCreate,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserCreate,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.CollectionView,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView
nevisIdm.UserAdmin=AccessControl.ApplicationView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState.14,AccessControl.CredentialCreate.14,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.ProfileCreate,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserCreate,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.CollectionView,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.Root=AccessControl.ApplicationCreate,AccessControl.ApplicationDelete,AccessControl.ApplicationModify,AccessControl.ApplicationSearch,AccessControl.ApplicationView,AccessControl.AuthorizationCreate,AccessControl.AuthorizationDelete,AccessControl.AuthorizationModify,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplCreate,AccessControl.AuthorizationApplDelete,AccessControl.AuthorizationApplSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientCreate,AccessControl.AuthorizationClientDelete,AccessControl.AuthorizationClientSearch,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitCreate,AccessControl.AuthorizationUnitDelete,AccessControl.AuthorizationUnitSearch,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.BatchJobExecute,AccessControl.BatchJobView,AccessControl.ClientCreate,AccessControl.ClientDelete,AccessControl.ClientModify,AccessControl.ClientApplAssign,AccessControl.ClientApplDelete,AccessControl.ClientApplView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState,AccessControl.CredentialCreate,AccessControl.CredentialDelete,AccessControl.CredentialModify,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.PersistentQueueRetry,AccessControl.PersistentQueueDelete,AccessControl.PersistentQueueView,AccessControl.PolicyConfigurationCreate,AccessControl.PolicyConfigurationDelete,AccessControl.PolicyConfigurationModify,AccessControl.PolicyConfigurationSearch,AccessControl.PolicyConfigurationView,AccessControl.ProfileArchive,AccessControl.ProfileCreate,AccessControl.ProfileDelete,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueCreate,AccessControl.PropertyAllowedValueDelete,AccessControl.PropertyAllowedValueModify,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertyCreate,AccessControl.PropertyDelete,AccessControl.PropertyModify,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleCreate,AccessControl.RoleDelete,AccessControl.RoleModify,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.SelfAdmin,AccessControl.UnitCreate,AccessControl.UnitCreateTopUnit,AccessControl.UnitDelete,AccessControl.UnitModify,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserArchive,AccessControl.UserCreate,AccessControl.UserDelete,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.HistoryView,AccessControl.LoginIdOverride,AccessControl.TemplateStore,AccessControl.CollectionView,AccessControl.CollectionCreate,AccessControl.CollectionModify,AccessControl.CollectionDelete,AccessControl.TemplateView,AccessControl.TemplateCreate,AccessControl.TemplateModify,AccessControl.TemplateDelete,AccessControl.TemplateTextView,AccessControl.TemplateTextCreate,AccessControl.TemplateTextModify,AccessControl.TemplateTextDelete,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.CredentialViewPlainValue,AccessControl.DeputyCreate,AccessControl.DeputyDelete,AccessControl.UnitCredPolicyView,AccessControl.UnitCredPolicyCreate,AccessControl.UnitCredPolicyDelete,AccessControl.UserCreateTechUser,AccessControl.UserModifyTechUser,AccessControl.UserDeleteTechUser,AccessControl.UserArchiveTechUser,AccessControl.CredentialPdfView,AccessControl.EnterpriseAuthorizationCreate,AccessControl.EnterpriseAuthorizationDelete,AccessControl.EnterpriseAuthorizationModify,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.AuthorizationEnterpriseRoleCreate,AccessControl.AuthorizationEnterpriseRoleDelete,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView,AccessControl.EnterpriseRoleCreate,AccessControl.EnterpriseRoleModify,AccessControl.EnterpriseRoleDelete,AccessControl.EnterpriseRoleSearch,AccessControl.EnterpriseRoleView,AccessControl.EnterpriseRoleMemberCreate,AccessControl.EnterpriseRoleMemberDelete,AccessControl.EnterpriseRoleMemberSearch,AccessControl.PersonalQuestionSearch,AccessControl.PersonalQuestionView,AccessControl.PersonalQuestionCreate,AccessControl.PersonalQuestionModify,AccessControl.PersonalQuestionDelete,AccessControl.LoginIdModify,AccessControl.TermsView,AccessControl.TermsCreate,AccessControl.TermsModify,AccessControl.TermsDelete,AccessControl.ConsentCreate,AccessControl.ConsentView
# source: pattern://50d6c91ace65f52fa56d7113

View File

@ -46,7 +46,7 @@ spec:
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-62cde4d69ffb364927e8f40db105fc6d83470228"
tag: "r-7bd8f34aeeebe1debccb6e4932b092cf2b2c4c88"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/idm"
credentials: "git-credentials"
keystores:

View File

@ -1,7 +1,7 @@
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.TemplateAdmin=AccessControl.ApplicationSearch,AccessControl.ApplicationView,AccessControl.AuthorizationApplSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationUnitSearch,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientApplView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CollectionView,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.GenerateReport,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertyAttributeAccessOverride,AccessControl.PropertySearch,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.SearchResultsExport,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView,AccessControl.HistoryView
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.UserAdmin=AccessControl.ApplicationView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState,AccessControl.CredentialCreate,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.ProfileCreate,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserCreate,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.CollectionView,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView
nevisIdm.UserAdmin=AccessControl.ApplicationView,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState.14,AccessControl.CredentialCreate.14,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.ProfileCreate,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserCreate,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.CollectionView,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.EnterpriseRoleMemberSearch,AccessControl.EnterpriseRoleView,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView
# source: pattern://50d6c91ace65f52fa56d7113
nevisIdm.Root=AccessControl.ApplicationCreate,AccessControl.ApplicationDelete,AccessControl.ApplicationModify,AccessControl.ApplicationSearch,AccessControl.ApplicationView,AccessControl.AuthorizationCreate,AccessControl.AuthorizationDelete,AccessControl.AuthorizationModify,AccessControl.AuthorizationSearch,AccessControl.AuthorizationApplCreate,AccessControl.AuthorizationApplDelete,AccessControl.AuthorizationApplSearch,AccessControl.AuthorizationApplView,AccessControl.AuthorizationClientCreate,AccessControl.AuthorizationClientDelete,AccessControl.AuthorizationClientSearch,AccessControl.AuthorizationClientView,AccessControl.AuthorizationUnitCreate,AccessControl.AuthorizationUnitDelete,AccessControl.AuthorizationUnitSearch,AccessControl.AuthorizationUnitView,AccessControl.AuthorizationView,AccessControl.BatchJobExecute,AccessControl.BatchJobView,AccessControl.ClientCreate,AccessControl.ClientDelete,AccessControl.ClientModify,AccessControl.ClientApplAssign,AccessControl.ClientApplDelete,AccessControl.ClientApplView,AccessControl.ClientSearch,AccessControl.ClientView,AccessControl.CredentialChangeState,AccessControl.CredentialCreate,AccessControl.CredentialDelete,AccessControl.CredentialModify,AccessControl.CredentialSearch,AccessControl.CredentialView,AccessControl.EntityAttributeAccessOverride,AccessControl.PersistentQueueRetry,AccessControl.PersistentQueueDelete,AccessControl.PersistentQueueView,AccessControl.PolicyConfigurationCreate,AccessControl.PolicyConfigurationDelete,AccessControl.PolicyConfigurationModify,AccessControl.PolicyConfigurationSearch,AccessControl.PolicyConfigurationView,AccessControl.ProfileArchive,AccessControl.ProfileCreate,AccessControl.ProfileDelete,AccessControl.ProfileModify,AccessControl.ProfileSearch,AccessControl.ProfileView,AccessControl.PropertyAllowedValueCreate,AccessControl.PropertyAllowedValueDelete,AccessControl.PropertyAllowedValueModify,AccessControl.PropertyAllowedValueSearch,AccessControl.PropertyAllowedValueView,AccessControl.PropertyCreate,AccessControl.PropertyDelete,AccessControl.PropertyModify,AccessControl.PropertySearch,AccessControl.PropertyValueCreate,AccessControl.PropertyValueDelete,AccessControl.PropertyValueModify,AccessControl.PropertyValueSearch,AccessControl.PropertyValueView,AccessControl.PropertyView,AccessControl.RoleCreate,AccessControl.RoleDelete,AccessControl.RoleModify,AccessControl.RoleSearch,AccessControl.RoleView,AccessControl.SelfAdmin,AccessControl.UnitCreate,AccessControl.UnitCreateTopUnit,AccessControl.UnitDelete,AccessControl.UnitModify,AccessControl.UnitSearch,AccessControl.UnitView,AccessControl.UserArchive,AccessControl.UserCreate,AccessControl.UserDelete,AccessControl.UserModify,AccessControl.UserSearch,AccessControl.UserView,AccessControl.PropertyAttributeAccessOverride,AccessControl.HistoryView,AccessControl.LoginIdOverride,AccessControl.TemplateStore,AccessControl.CollectionView,AccessControl.CollectionCreate,AccessControl.CollectionModify,AccessControl.CollectionDelete,AccessControl.TemplateView,AccessControl.TemplateCreate,AccessControl.TemplateModify,AccessControl.TemplateDelete,AccessControl.TemplateTextView,AccessControl.TemplateTextCreate,AccessControl.TemplateTextModify,AccessControl.TemplateTextDelete,AccessControl.GenerateReport,AccessControl.SearchResultsExport,AccessControl.CredentialViewPlainValue,AccessControl.DeputyCreate,AccessControl.DeputyDelete,AccessControl.UnitCredPolicyView,AccessControl.UnitCredPolicyCreate,AccessControl.UnitCredPolicyDelete,AccessControl.UserCreateTechUser,AccessControl.UserModifyTechUser,AccessControl.UserDeleteTechUser,AccessControl.UserArchiveTechUser,AccessControl.CredentialPdfView,AccessControl.EnterpriseAuthorizationCreate,AccessControl.EnterpriseAuthorizationDelete,AccessControl.EnterpriseAuthorizationModify,AccessControl.EnterpriseAuthorizationSearch,AccessControl.EnterpriseAuthorizationView,AccessControl.AuthorizationEnterpriseRoleCreate,AccessControl.AuthorizationEnterpriseRoleDelete,AccessControl.AuthorizationEnterpriseRoleSearch,AccessControl.AuthorizationEnterpriseRoleView,AccessControl.EnterpriseRoleCreate,AccessControl.EnterpriseRoleModify,AccessControl.EnterpriseRoleDelete,AccessControl.EnterpriseRoleSearch,AccessControl.EnterpriseRoleView,AccessControl.EnterpriseRoleMemberCreate,AccessControl.EnterpriseRoleMemberDelete,AccessControl.EnterpriseRoleMemberSearch,AccessControl.PersonalQuestionSearch,AccessControl.PersonalQuestionView,AccessControl.PersonalQuestionCreate,AccessControl.PersonalQuestionModify,AccessControl.PersonalQuestionDelete,AccessControl.LoginIdModify,AccessControl.TermsView,AccessControl.TermsCreate,AccessControl.TermsModify,AccessControl.TermsDelete,AccessControl.ConsentCreate,AccessControl.ConsentView
# source: pattern://50d6c91ace65f52fa56d7113

View File

@ -44,7 +44,7 @@ spec:
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-e55486a997fb8f6cdab5eac835e6374e73b3824f"
tag: "r-7bd8f34aeeebe1debccb6e4932b092cf2b2c4c88"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/logrend"
credentials: "git-credentials"
podSecurity:

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
recovery_fidokey_auth.keyRegistered=Sicherheitsschl&uuml;ssel schon registriert
recovery_intro_email.banner.error=Der von Ihnen verwendete Link ist abgelaufen. Bitte geben Sie Ihre E-Mail-Adresse ein, um einen neuen Link zu erhalten.
recovery_intro_email.banner.info=Bitte geben Sie Ihre E-Mail-Adresse ein, damit wir Ihnen einen Link schicken k&ouml;nnen, mit dem Sie den Wiederherstellungsprozess starten.
recovery_intro_email.captchaUnchecked=Bitte kreuzen Sie das Captcha-Feld an
recovery_intro_email.important=Wichtig:
recovery_intro_email.process=Der Wiederherstellungsprozess sollte nur verwendet werden, wenn Sie den Zugriff auf Ihre Login-Faktoren verloren haben (gel&ouml;schte AGOV access App, verlorener Sicherheitsschl&uuml;ssel, verlorenes Telefon usw.).
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA gesch&uuml;tzt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerkl&auml;rung</a> sowie die <a class='link' href='https://policies.google.com/terms' target='_blank'>Nutzungsbedingungen</a> von Google.
recovery_intro_email_sent.banner.button=Keine E-Mail erhalten?
recovery_intro_email_sent.banner.success=Vielen Dank! Sie werden in K&uuml;rze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
recovery_on_going.finishRecovery=Wiederherstellung abschliessen

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
recovery_fidokey_auth.keyRegistered=Cl&eacute; de s&eacute;curit&eacute; d&eacute;j&agrave; enregistr&eacute;e
recovery_intro_email.banner.error=Le lien que vous avez utilis&eacute; a expir&eacute;. Veuillez saisir votre adresse e-mail pour recevoir un nouveau lien.
recovery_intro_email.banner.info=Veuillez saisir votre adresse e-mail. Nous vous enverrons un e-mail vous permettant de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
recovery_intro_email.important=Important:
recovery_intro_email.process=Le processus de r&eacute;cup&eacute;ration ne doit &ecirc;tre utilis&eacute; que si vous avez perdu l'acc&egrave;s &agrave; vos facteurs de connexion (application AGOV access supprim&eacute;e, cl&eacute; de s&eacute;curit&eacute; perdue, t&eacute;l&eacute;phone perdu, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est prot&eacute;g&eacute; par reCAPTCHA: les <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/privacy&rsquo; target=&rsquo;_blank&rsquo;>r&egrave;gles de confidentialit&eacute;</a> et <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/terms&rsquo; target=&rsquo;_blank&rsquo;>conditions d&rsquo;utilisation</a> de Google s&rsquo;appliquent.
recovery_intro_email_sent.banner.button=Vous n&rsquo;avez pas re&ccedil;u l'email?
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de r&eacute;cup&eacute;ration et des instructions.
recovery_on_going.finishRecovery=Terminer la r&eacute;cup&eacute;ration

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza gi&agrave; registrata
recovery_intro_email.banner.error=Il link utilizzato &egrave; scaduto. Per ricevere un nuovo link, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.captchaUnchecked=Per favore selezioni il campo captcha
recovery_intro_email.important=Importante:
recovery_intro_email.process=Il processo di ripristino deve essere utilizzato solo se ha perso l'accesso ai suoi fattori di accesso (app di accesso AGOV eliminata, chiave di sicurezza persa, telefono smarrito, ecc.).
recovery_intro_email.siteProtectedWithRecaptcha=Questo sito &egrave; protetto da reCAPTCHA. Si applicano le <a class='link' href='https://policies.google.com/privacy' target='_blank'>norme sulla privacy</a> e i <a class='link' href='https://policies.google.com/terms' target='_blank'>termini di servizio di Google</a>.
recovery_intro_email_sent.banner.button=Non avete ricevuto l'e-mail?
recovery_intro_email_sent.banner.success=Grazie! &Egrave; stata inviata un&rsquo;e-mail contenente il codice di ripristino e le istruzioni.
recovery_on_going.finishRecovery=Completare il ripristino

View File

@ -0,0 +1,5 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
});

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
document.getElementById('buttons').style.marginTop = value ? '16px' : '8px';
}

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
console.log(document.getElementById('errorBanner').style.display);
}

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -40,8 +40,7 @@
</form>
<div class="mt-3 mb-6 w-full h-px bg-platinum rounded-full"></div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -84,7 +83,7 @@
</div>
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="fido_authenticate"
data-type="button"
data-label="$text.get("general.continue")"
data-fullwidth="true"

View File

@ -3,7 +3,7 @@
$text.get("footer.text")
<a target="_blank" class='text-hyperlink dark:text-dark-hyperlink underline' href='$text.get("footer.link")'>$text.get("footer.link.label")</a>
</div>
<p>1.5.7.77-20240809T142941Z</p>
<p>1.6.8.13-20240919T195132Z</p>
</footer>
<script src="${login.appDataPath}/static/bundle.js"></script>
</body>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV</title>
<meta charset="UTF-8">

View File

@ -49,6 +49,8 @@
<div id="agovLoginImage"
class="relative md:max-w-[520px] max-w-[350px] sm:max-w-[300px] mb-10 w-full mx-auto hidden md:block">
<div class="hidden flex items-center p-2 bg-white dark:bg-black rounded-xl w-16 h-16 absolute left-[calc(39%-32px)] top-8"
id="logoDoor"></div>
<img alt="" src="${login.appDataPath}/static/images/login.svg"
class="hidden md:block dark:hidden w-full">
<img alt="" src="${login.appDataPath}/static/images/login-dark.svg"
@ -93,16 +95,16 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -111,8 +113,8 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center
p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -121,19 +123,19 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4
z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center
p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -142,16 +144,16 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background
items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full mx-auto mb-6">
<div id="agovLoginImageMobile" class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full
mx-auto mb-6">
<img alt=""
src="${login.appDataPath}/static/images/login.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -165,8 +167,8 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-6 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2
z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -197,7 +199,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full sm:static mt-auto mb-20 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full">
<div id="mobileButtons" class="hidden w-full">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -224,9 +226,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"
@ -300,7 +301,7 @@
</div>
</div>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" style="display: none" class="sm:hidden formDrawer">
accept-charset="UTF-8" class="hidden sm:hidden formDrawer">
<div class="w-full z-30 fixed left-0 pointer-events-none" id="drawerContainer">
<div class="w-full bg-white dark:bg-surface-black px-4 pb-[130px] rounded-t-2xl pointer-events-auto" id="drawer">
<div class="pt-2 pb-4 cursor-pointer">
@ -363,13 +364,10 @@
</form>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
cantonalBranding.getLogo("$gui.getGuiElem('agov.appSamlRpEntityId').value", "$login.language");
});
<script src="${login.appDataPath}/static/js-code/mauth_usernameless.js" defer>
</script>
<div id="appSamlRpEntityId" class="hidden" data-value="$gui.getGuiElem('agov.appSamlRpEntityId').value"
data-language="$login.language">
</div>
#parse("${templatePath}/footer.vm")

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">
@ -44,7 +44,8 @@
class="flex items-center px-8 sm:px-4 justify-between w-full py-3 bg-indigo-light dark:bg-purple-black"
aria-current="true"
href="'+$langTarget+'"><span class="font-body-semi"
>'+$langLabel+' - '+$locale.toUpperCase()+'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
>'+$langLabel+' - '+$locale.toUpperCase()+
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
#end
#end ## end foreach
@ -58,7 +59,8 @@
<a href="$text.get("general.help.link")" target="_blank" class="cursor-pointer hidden sm:inline-block">
<div class="mx-6 flex items-center">
<i class="text-xl pr-2 fa-regular fa-circle-question ml-auto text-space-blue dark:text-white transition-all"></i>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get("general.help")</span>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get(
"general.help")</span>
</div>
</a>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -30,16 +30,15 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -48,8 +47,7 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -58,19 +56,16 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -79,16 +74,15 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<div id="agovLoginImageMobile"
class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<img alt=""
src="${login.appDataPath}/static/images/recovery.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -102,8 +96,7 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-4 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -134,7 +127,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full bottom-8 sm:static mt-auto mb-6 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div id="mobileButtons" class="hidden w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -161,9 +154,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"

View File

@ -2,8 +2,8 @@
<agov-backdrop></agov-backdrop>
<div id="modal" class="fixed top-0 bottom-0 left-0 right-0 pb-20 z-50 hidden">
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" id="modal_light"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" id="modal_dark"></div>
<div id="drawer"
class="fixed bg-white dark:bg-surface-black rounded-[20px] p-10 w-11/12 sm:max-w-[660px] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
@ -26,12 +26,12 @@
<div class="w-full sm:static mt-auto">
<div class="flex justify-end flex-col-reverse sm:flex-row gap-4">
<agov-button
id="recovery_check_code"
class="block"
data-style="secondary"
data-label="$text.get("general.cancel")"
data-type="button"
data-fullwidth="true"
onclick="modal.setInvisible()">
data-fullwidth="true">
</agov-button>
<a href="$text.get("general.help.link")" target="_blank" rel="noopener noreferrer">
<agov-button
@ -51,7 +51,11 @@
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.recovery")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.entryCode")</h4>
@ -76,6 +80,7 @@
accept-charset="UTF-8"
class="flex flex-col flex-auto block ">
<agov-input
id="recovery_code_input"
class="mb-4 py-16"
data-label="$text.get("recovery_check_code.enterRecoveryCode")"
data-isLabelHidden="true"
@ -85,10 +90,6 @@
data-value=""
data-type="text"
data-autofocus="true"
oninput="validateCode.onInputCodeAndroid(event)"
onkeyup="validateCode.onKeyUp(event)"
onkeydown="validateCode.onInputCode(event)"
onpaste="validateCode.paste(event)"
data-email_invalid="$text.get("recovery_check_code.invalid.code")"
data-email_too_long="$text.get("recovery_check_code.invalid.code.tooLong")"
data-email_required="$text.get("recovery_check_code.invalid.code.required")">
@ -97,17 +98,18 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_btn"
class="block basis-full"
data-name="confirm"
data-value="confirm"
data-id="confirm"
data-label="$text.get("general.confirm")"
data-type="submit"
data-fullwidth="true"
onclick="validateCode.validateForm(event)">
data-fullwidth="true">
</agov-button>
<agov-button
id="recovery_code_btn_cancel"
class="block basis-full"
data-style="frameless"
data-name="cancelFido2"
@ -116,8 +118,7 @@
data-label="$text.get("recovery_check_code.noAccess")"
data-type="button"
data-fullwidth="true"
data-validate="false"
onclick="modal.setVisible()">
data-validate="false">
</agov-button>
</div>
</div>

View File

@ -56,8 +56,7 @@
data-style="secondary"
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>Reveal code"
data-type="button"
data-fullwidth="true"
onclick="blurCode.unBlurCode()">
data-fullwidth="true">
</agov-button>
<a class="mb-20" target="_blank" href="$PDFLink">
<agov-button
@ -77,14 +76,14 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_continue"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="blurCode.continue(event)">
data-fullwidth="true">
</agov-button>
</div>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -29,8 +29,7 @@
</p>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -62,7 +61,7 @@
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="recovery_fido"
data-type="button"
data-label="$text.get("recovery_fidokey_auth.button")"
data-fullwidth="true"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
@ -27,11 +32,11 @@
</div>
#end
<div id="captchaNotFilled" style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("recovery_intro_email.captchaUnchecked")
$text.get("error_9909")
</p>
</div>
@ -62,106 +67,53 @@
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
$text.get("recovery_intro_email.process")
</p>
#if ($utils.escapeHtmlAttribute($gui.getGuiElem("X-ReCAPTCHA-Integration").value) == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "continue";
btn.value = "continue";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="font-body w-full text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event, true)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">

View File

@ -42,11 +42,11 @@
<div id="buttons" class="w-full sm:static mt-auto mb-6 sm:mb-0 mt-24 sm:mt-24">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateFormYesOrNo(event))">
data-fullwidth="true">
</agov-button>
<agov-button
class="block basis-full"

View File

@ -60,11 +60,11 @@
<div class="w-full sm:static mt-8 mb-6 sm:mb-0 ">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn_reason"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateForm(event))">
data-fullwidth="true">
</agov-button>
<agov-button

View File

@ -2,15 +2,27 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.login")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
</div>
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("error_9909")
</p>
</div>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8"
@ -35,106 +47,51 @@
data-email_required="$text.get("user_input.invalid.email.required")">
</agov-input>
#if ($gui.getGuiElem("X-ReCAPTCHA-Integration").value == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "submit";
btn.value = "submit";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="w-full font-body text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
recovery_fidokey_auth.keyRegistered=Sicherheitsschl&uuml;ssel schon registriert
recovery_intro_email.banner.error=Der von Ihnen verwendete Link ist abgelaufen. Bitte geben Sie Ihre E-Mail-Adresse ein, um einen neuen Link zu erhalten.
recovery_intro_email.banner.info=Bitte geben Sie Ihre E-Mail-Adresse ein, damit wir Ihnen einen Link schicken k&ouml;nnen, mit dem Sie den Wiederherstellungsprozess starten.
recovery_intro_email.captchaUnchecked=Bitte kreuzen Sie das Captcha-Feld an
recovery_intro_email.important=Wichtig:
recovery_intro_email.process=Der Wiederherstellungsprozess sollte nur verwendet werden, wenn Sie den Zugriff auf Ihre Login-Faktoren verloren haben (gel&ouml;schte AGOV access App, verlorener Sicherheitsschl&uuml;ssel, verlorenes Telefon usw.).
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA gesch&uuml;tzt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerkl&auml;rung</a> sowie die <a class='link' href='https://policies.google.com/terms' target='_blank'>Nutzungsbedingungen</a> von Google.
recovery_intro_email_sent.banner.button=Keine E-Mail erhalten?
recovery_intro_email_sent.banner.success=Vielen Dank! Sie werden in K&uuml;rze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
recovery_on_going.finishRecovery=Wiederherstellung abschliessen

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
recovery_fidokey_auth.keyRegistered=Cl&eacute; de s&eacute;curit&eacute; d&eacute;j&agrave; enregistr&eacute;e
recovery_intro_email.banner.error=Le lien que vous avez utilis&eacute; a expir&eacute;. Veuillez saisir votre adresse e-mail pour recevoir un nouveau lien.
recovery_intro_email.banner.info=Veuillez saisir votre adresse e-mail. Nous vous enverrons un e-mail vous permettant de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
recovery_intro_email.important=Important:
recovery_intro_email.process=Le processus de r&eacute;cup&eacute;ration ne doit &ecirc;tre utilis&eacute; que si vous avez perdu l'acc&egrave;s &agrave; vos facteurs de connexion (application AGOV access supprim&eacute;e, cl&eacute; de s&eacute;curit&eacute; perdue, t&eacute;l&eacute;phone perdu, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est prot&eacute;g&eacute; par reCAPTCHA: les <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/privacy&rsquo; target=&rsquo;_blank&rsquo;>r&egrave;gles de confidentialit&eacute;</a> et <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/terms&rsquo; target=&rsquo;_blank&rsquo;>conditions d&rsquo;utilisation</a> de Google s&rsquo;appliquent.
recovery_intro_email_sent.banner.button=Vous n&rsquo;avez pas re&ccedil;u l'email?
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de r&eacute;cup&eacute;ration et des instructions.
recovery_on_going.finishRecovery=Terminer la r&eacute;cup&eacute;ration

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza gi&agrave; registrata
recovery_intro_email.banner.error=Il link utilizzato &egrave; scaduto. Per ricevere un nuovo link, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.captchaUnchecked=Per favore selezioni il campo captcha
recovery_intro_email.important=Importante:
recovery_intro_email.process=Il processo di ripristino deve essere utilizzato solo se ha perso l'accesso ai suoi fattori di accesso (app di accesso AGOV eliminata, chiave di sicurezza persa, telefono smarrito, ecc.).
recovery_intro_email.siteProtectedWithRecaptcha=Questo sito &egrave; protetto da reCAPTCHA. Si applicano le <a class='link' href='https://policies.google.com/privacy' target='_blank'>norme sulla privacy</a> e i <a class='link' href='https://policies.google.com/terms' target='_blank'>termini di servizio di Google</a>.
recovery_intro_email_sent.banner.button=Non avete ricevuto l'e-mail?
recovery_intro_email_sent.banner.success=Grazie! &Egrave; stata inviata un&rsquo;e-mail contenente il codice di ripristino e le istruzioni.
recovery_on_going.finishRecovery=Completare il ripristino

View File

@ -0,0 +1,5 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
});

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
document.getElementById('buttons').style.marginTop = value ? '16px' : '8px';
}

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
console.log(document.getElementById('errorBanner').style.display);
}

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -40,8 +40,7 @@
</form>
<div class="mt-3 mb-6 w-full h-px bg-platinum rounded-full"></div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -84,7 +83,7 @@
</div>
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="fido_authenticate"
data-type="button"
data-label="$text.get("general.continue")"
data-fullwidth="true"

View File

@ -3,7 +3,7 @@
$text.get("footer.text")
<a target="_blank" class='text-hyperlink dark:text-dark-hyperlink underline' href='$text.get("footer.link")'>$text.get("footer.link.label")</a>
</div>
<p>1.5.7.77-20240809T142941Z</p>
<p>1.6.8.13-20240919T195132Z</p>
</footer>
<script src="${login.appDataPath}/static/bundle.js"></script>
</body>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV</title>
<meta charset="UTF-8">

View File

@ -49,6 +49,8 @@
<div id="agovLoginImage"
class="relative md:max-w-[520px] max-w-[350px] sm:max-w-[300px] mb-10 w-full mx-auto hidden md:block">
<div class="hidden flex items-center p-2 bg-white dark:bg-black rounded-xl w-16 h-16 absolute left-[calc(39%-32px)] top-8"
id="logoDoor"></div>
<img alt="" src="${login.appDataPath}/static/images/login.svg"
class="hidden md:block dark:hidden w-full">
<img alt="" src="${login.appDataPath}/static/images/login-dark.svg"
@ -93,16 +95,16 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -111,8 +113,8 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center
p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -121,19 +123,19 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4
z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center
p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -142,16 +144,16 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background
items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full mx-auto mb-6">
<div id="agovLoginImageMobile" class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full
mx-auto mb-6">
<img alt=""
src="${login.appDataPath}/static/images/login.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -165,8 +167,8 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-6 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2
z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -197,7 +199,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full sm:static mt-auto mb-20 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full">
<div id="mobileButtons" class="hidden w-full">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -224,9 +226,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"
@ -300,7 +301,7 @@
</div>
</div>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" style="display: none" class="sm:hidden formDrawer">
accept-charset="UTF-8" class="hidden sm:hidden formDrawer">
<div class="w-full z-30 fixed left-0 pointer-events-none" id="drawerContainer">
<div class="w-full bg-white dark:bg-surface-black px-4 pb-[130px] rounded-t-2xl pointer-events-auto" id="drawer">
<div class="pt-2 pb-4 cursor-pointer">
@ -363,13 +364,10 @@
</form>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
cantonalBranding.getLogo("$gui.getGuiElem('agov.appSamlRpEntityId').value", "$login.language");
});
<script src="${login.appDataPath}/static/js-code/mauth_usernameless.js" defer>
</script>
<div id="appSamlRpEntityId" class="hidden" data-value="$gui.getGuiElem('agov.appSamlRpEntityId').value"
data-language="$login.language">
</div>
#parse("${templatePath}/footer.vm")

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">
@ -44,7 +44,8 @@
class="flex items-center px-8 sm:px-4 justify-between w-full py-3 bg-indigo-light dark:bg-purple-black"
aria-current="true"
href="'+$langTarget+'"><span class="font-body-semi"
>'+$langLabel+' - '+$locale.toUpperCase()+'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
>'+$langLabel+' - '+$locale.toUpperCase()+
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
#end
#end ## end foreach
@ -58,7 +59,8 @@
<a href="$text.get("general.help.link")" target="_blank" class="cursor-pointer hidden sm:inline-block">
<div class="mx-6 flex items-center">
<i class="text-xl pr-2 fa-regular fa-circle-question ml-auto text-space-blue dark:text-white transition-all"></i>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get("general.help")</span>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get(
"general.help")</span>
</div>
</a>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -30,16 +30,15 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -48,8 +47,7 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -58,19 +56,16 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -79,16 +74,15 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<div id="agovLoginImageMobile"
class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<img alt=""
src="${login.appDataPath}/static/images/recovery.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -102,8 +96,7 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-4 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -134,7 +127,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full bottom-8 sm:static mt-auto mb-6 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div id="mobileButtons" class="hidden w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -161,9 +154,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"

View File

@ -2,8 +2,8 @@
<agov-backdrop></agov-backdrop>
<div id="modal" class="fixed top-0 bottom-0 left-0 right-0 pb-20 z-50 hidden">
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" id="modal_light"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" id="modal_dark"></div>
<div id="drawer"
class="fixed bg-white dark:bg-surface-black rounded-[20px] p-10 w-11/12 sm:max-w-[660px] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
@ -26,12 +26,12 @@
<div class="w-full sm:static mt-auto">
<div class="flex justify-end flex-col-reverse sm:flex-row gap-4">
<agov-button
id="recovery_check_code"
class="block"
data-style="secondary"
data-label="$text.get("general.cancel")"
data-type="button"
data-fullwidth="true"
onclick="modal.setInvisible()">
data-fullwidth="true">
</agov-button>
<a href="$text.get("general.help.link")" target="_blank" rel="noopener noreferrer">
<agov-button
@ -51,7 +51,11 @@
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.recovery")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.entryCode")</h4>
@ -76,6 +80,7 @@
accept-charset="UTF-8"
class="flex flex-col flex-auto block ">
<agov-input
id="recovery_code_input"
class="mb-4 py-16"
data-label="$text.get("recovery_check_code.enterRecoveryCode")"
data-isLabelHidden="true"
@ -85,10 +90,6 @@
data-value=""
data-type="text"
data-autofocus="true"
oninput="validateCode.onInputCodeAndroid(event)"
onkeyup="validateCode.onKeyUp(event)"
onkeydown="validateCode.onInputCode(event)"
onpaste="validateCode.paste(event)"
data-email_invalid="$text.get("recovery_check_code.invalid.code")"
data-email_too_long="$text.get("recovery_check_code.invalid.code.tooLong")"
data-email_required="$text.get("recovery_check_code.invalid.code.required")">
@ -97,17 +98,18 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_btn"
class="block basis-full"
data-name="confirm"
data-value="confirm"
data-id="confirm"
data-label="$text.get("general.confirm")"
data-type="submit"
data-fullwidth="true"
onclick="validateCode.validateForm(event)">
data-fullwidth="true">
</agov-button>
<agov-button
id="recovery_code_btn_cancel"
class="block basis-full"
data-style="frameless"
data-name="cancelFido2"
@ -116,8 +118,7 @@
data-label="$text.get("recovery_check_code.noAccess")"
data-type="button"
data-fullwidth="true"
data-validate="false"
onclick="modal.setVisible()">
data-validate="false">
</agov-button>
</div>
</div>

View File

@ -56,8 +56,7 @@
data-style="secondary"
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>Reveal code"
data-type="button"
data-fullwidth="true"
onclick="blurCode.unBlurCode()">
data-fullwidth="true">
</agov-button>
<a class="mb-20" target="_blank" href="$PDFLink">
<agov-button
@ -77,14 +76,14 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_continue"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="blurCode.continue(event)">
data-fullwidth="true">
</agov-button>
</div>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -29,8 +29,7 @@
</p>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -62,7 +61,7 @@
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="recovery_fido"
data-type="button"
data-label="$text.get("recovery_fidokey_auth.button")"
data-fullwidth="true"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
@ -27,11 +32,11 @@
</div>
#end
<div id="captchaNotFilled" style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("recovery_intro_email.captchaUnchecked")
$text.get("error_9909")
</p>
</div>
@ -62,106 +67,53 @@
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
$text.get("recovery_intro_email.process")
</p>
#if ($utils.escapeHtmlAttribute($gui.getGuiElem("X-ReCAPTCHA-Integration").value) == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "continue";
btn.value = "continue";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="font-body w-full text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event, true)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">

View File

@ -42,11 +42,11 @@
<div id="buttons" class="w-full sm:static mt-auto mb-6 sm:mb-0 mt-24 sm:mt-24">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateFormYesOrNo(event))">
data-fullwidth="true">
</agov-button>
<agov-button
class="block basis-full"

View File

@ -60,11 +60,11 @@
<div class="w-full sm:static mt-8 mb-6 sm:mb-0 ">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn_reason"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateForm(event))">
data-fullwidth="true">
</agov-button>
<agov-button

View File

@ -2,15 +2,27 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.login")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
</div>
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("error_9909")
</p>
</div>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8"
@ -35,106 +47,51 @@
data-email_required="$text.get("user_input.invalid.email.required")">
</agov-input>
#if ($gui.getGuiElem("X-ReCAPTCHA-Integration").value == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "submit";
btn.value = "submit";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="w-full font-body text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
recovery_fidokey_auth.keyRegistered=Sicherheitsschl&uuml;ssel schon registriert
recovery_intro_email.banner.error=Der von Ihnen verwendete Link ist abgelaufen. Bitte geben Sie Ihre E-Mail-Adresse ein, um einen neuen Link zu erhalten.
recovery_intro_email.banner.info=Bitte geben Sie Ihre E-Mail-Adresse ein, damit wir Ihnen einen Link schicken k&ouml;nnen, mit dem Sie den Wiederherstellungsprozess starten.
recovery_intro_email.captchaUnchecked=Bitte kreuzen Sie das Captcha-Feld an
recovery_intro_email.important=Wichtig:
recovery_intro_email.process=Der Wiederherstellungsprozess sollte nur verwendet werden, wenn Sie den Zugriff auf Ihre Login-Faktoren verloren haben (gel&ouml;schte AGOV access App, verlorener Sicherheitsschl&uuml;ssel, verlorenes Telefon usw.).
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA gesch&uuml;tzt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerkl&auml;rung</a> sowie die <a class='link' href='https://policies.google.com/terms' target='_blank'>Nutzungsbedingungen</a> von Google.
recovery_intro_email_sent.banner.button=Keine E-Mail erhalten?
recovery_intro_email_sent.banner.success=Vielen Dank! Sie werden in K&uuml;rze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
recovery_on_going.finishRecovery=Wiederherstellung abschliessen

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Please use !!!SECURITY_KEY_NAME!!! to follow
recovery_fidokey_auth.keyRegistered=Security key already registered
recovery_intro_email.banner.error=The link you used has expired. Please enter your email address to receive a new link.
recovery_intro_email.banner.info=Please enter your email address, so we can send you a link to start the recovery process.
recovery_intro_email.captchaUnchecked=Please tick the captcha field
recovery_intro_email.important=Important:
recovery_intro_email.process=The recovery process should only be used if you have lost access to your login factors (deleted AGOV access app, lost security key, lost phone, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=This site is protected by reCAPTCHA and the <a class='link' href='https://policies.google.com/privacy' target='_blank'>Google Privacy Policy</a> and <a class='link' href='https://policies.google.com/terms' target='_blank'>Terms of Service</a> apply.
recovery_intro_email_sent.banner.button=Didn't receive the email?
recovery_intro_email_sent.banner.success=Thank you! You will receive an email with a recovery link and instructions shortly.
recovery_on_going.finishRecovery=Finish recovery

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
recovery_fidokey_auth.keyRegistered=Cl&eacute; de s&eacute;curit&eacute; d&eacute;j&agrave; enregistr&eacute;e
recovery_intro_email.banner.error=Le lien que vous avez utilis&eacute; a expir&eacute;. Veuillez saisir votre adresse e-mail pour recevoir un nouveau lien.
recovery_intro_email.banner.info=Veuillez saisir votre adresse e-mail. Nous vous enverrons un e-mail vous permettant de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
recovery_intro_email.important=Important:
recovery_intro_email.process=Le processus de r&eacute;cup&eacute;ration ne doit &ecirc;tre utilis&eacute; que si vous avez perdu l'acc&egrave;s &agrave; vos facteurs de connexion (application AGOV access supprim&eacute;e, cl&eacute; de s&eacute;curit&eacute; perdue, t&eacute;l&eacute;phone perdu, etc.).
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est prot&eacute;g&eacute; par reCAPTCHA: les <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/privacy&rsquo; target=&rsquo;_blank&rsquo;>r&egrave;gles de confidentialit&eacute;</a> et <a class=&rsquo;link&rsquo; href=&rsquo;https://policies.google.com/terms&rsquo; target=&rsquo;_blank&rsquo;>conditions d&rsquo;utilisation</a> de Google s&rsquo;appliquent.
recovery_intro_email_sent.banner.button=Vous n&rsquo;avez pas re&ccedil;u l'email?
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de r&eacute;cup&eacute;ration et des instructions.
recovery_on_going.finishRecovery=Terminer la r&eacute;cup&eacute;ration

View File

@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza gi&agrave; registrata
recovery_intro_email.banner.error=Il link utilizzato &egrave; scaduto. Per ricevere un nuovo link, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l&rsquo;indirizzo e-mail.
recovery_intro_email.captchaUnchecked=Per favore selezioni il campo captcha
recovery_intro_email.important=Importante:
recovery_intro_email.process=Il processo di ripristino deve essere utilizzato solo se ha perso l'accesso ai suoi fattori di accesso (app di accesso AGOV eliminata, chiave di sicurezza persa, telefono smarrito, ecc.).
recovery_intro_email.siteProtectedWithRecaptcha=Questo sito &egrave; protetto da reCAPTCHA. Si applicano le <a class='link' href='https://policies.google.com/privacy' target='_blank'>norme sulla privacy</a> e i <a class='link' href='https://policies.google.com/terms' target='_blank'>termini di servizio di Google</a>.
recovery_intro_email_sent.banner.button=Non avete ricevuto l'e-mail?
recovery_intro_email_sent.banner.success=Grazie! &Egrave; stata inviata un&rsquo;e-mail contenente il codice di ripristino e le istruzioni.
recovery_on_going.finishRecovery=Completare il ripristino

View File

@ -0,0 +1,5 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
});

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
document.getElementById('buttons').style.marginTop = value ? '16px' : '8px';
}

View File

@ -1,9 +1,3 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initAnswer'));
});
// eslint-disable-next-line no-unused-vars
function setErrorBanner(value) {
document.getElementById('errorBanner').style.display = value ? 'none' : 'flex';
console.log(document.getElementById('errorBanner').style.display);
}

View File

@ -1,3 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initEmail'));
document.dispatchEvent(new Event('initCaptcha'));
});

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -40,8 +40,7 @@
</form>
<div class="mt-3 mb-6 w-full h-px bg-platinum rounded-full"></div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -84,7 +83,7 @@
</div>
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="fido_authenticate"
data-type="button"
data-label="$text.get("general.continue")"
data-fullwidth="true"

View File

@ -3,7 +3,7 @@
$text.get("footer.text")
<a target="_blank" class='text-hyperlink dark:text-dark-hyperlink underline' href='$text.get("footer.link")'>$text.get("footer.link.label")</a>
</div>
<p>1.5.7.77-20240809T142941Z</p>
<p>1.6.8.13-20240919T195132Z</p>
</footer>
<script src="${login.appDataPath}/static/bundle.js"></script>
</body>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV</title>
<meta charset="UTF-8">

View File

@ -49,6 +49,8 @@
<div id="agovLoginImage"
class="relative md:max-w-[520px] max-w-[350px] sm:max-w-[300px] mb-10 w-full mx-auto hidden md:block">
<div class="hidden flex items-center p-2 bg-white dark:bg-black rounded-xl w-16 h-16 absolute left-[calc(39%-32px)] top-8"
id="logoDoor"></div>
<img alt="" src="${login.appDataPath}/static/images/login.svg"
class="hidden md:block dark:hidden w-full">
<img alt="" src="${login.appDataPath}/static/images/login-dark.svg"
@ -93,16 +95,16 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -111,8 +113,8 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center
p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -121,19 +123,19 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-8 -left-4 -right-4
z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center
p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background
items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -142,16 +144,16 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background
items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full mx-auto mb-6">
<div id="agovLoginImageMobile" class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full
mx-auto mb-6">
<img alt=""
src="${login.appDataPath}/static/images/login.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -165,8 +167,8 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-6 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2
z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -197,7 +199,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full sm:static mt-auto mb-20 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full">
<div id="mobileButtons" class="hidden w-full">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -224,9 +226,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"
@ -300,7 +301,7 @@
</div>
</div>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" style="display: none" class="sm:hidden formDrawer">
accept-charset="UTF-8" class="hidden sm:hidden formDrawer">
<div class="w-full z-30 fixed left-0 pointer-events-none" id="drawerContainer">
<div class="w-full bg-white dark:bg-surface-black px-4 pb-[130px] rounded-t-2xl pointer-events-auto" id="drawer">
<div class="pt-2 pb-4 cursor-pointer">
@ -363,13 +364,10 @@
</form>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCantonalBranding'));
cantonalBranding.getLogo("$gui.getGuiElem('agov.appSamlRpEntityId').value", "$login.language");
});
<script src="${login.appDataPath}/static/js-code/mauth_usernameless.js" defer>
</script>
<div id="appSamlRpEntityId" class="hidden" data-value="$gui.getGuiElem('agov.appSamlRpEntityId').value"
data-language="$login.language">
</div>
#parse("${templatePath}/footer.vm")

View File

@ -1,6 +1,6 @@
<!DOCTYPE html>
## svh -> Small View Height. It's not taking the height of the search bar on mobile into account
<html lang="$login.language" class="relative min-h-screen h-full mx-4 flex sm:block" style="min-height: 100svh">
<html lang="$login.language" class="relative min-h-100 h-full mx-4 flex sm:block">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">
@ -44,7 +44,8 @@
class="flex items-center px-8 sm:px-4 justify-between w-full py-3 bg-indigo-light dark:bg-purple-black"
aria-current="true"
href="'+$langTarget+'"><span class="font-body-semi"
>'+$langLabel+' - '+$locale.toUpperCase()+'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
>'+$langLabel+' - '+$locale.toUpperCase()+
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
#end
#end ## end foreach
@ -58,7 +59,8 @@
<a href="$text.get("general.help.link")" target="_blank" class="cursor-pointer hidden sm:inline-block">
<div class="mx-6 flex items-center">
<i class="text-xl pr-2 fa-regular fa-circle-question ml-auto text-space-blue dark:text-white transition-all"></i>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get("general.help")</span>
<span class="text-space-blue dark:text-white font-body-semi text-body-l transition-colors">$text.get(
"general.help")</span>
</div>
</a>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -30,16 +30,15 @@
<div id="accessAppModal" class="h-full">
<div class="desktopBanner" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4
mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -48,8 +47,7 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
@ -58,19 +56,16 @@
</div>
<div class="relative flex flex-col h-full">
<div id="blurBackdrop" class="absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"
style="display:none "></div>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm top-0 bottom-0 -left-4 -right-4 z-10"></div>
<div class="mobileBanner relative z-20" aria-live="assertive">
<div style="display: none"
class="info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<div class="hidden info flex rounded-xl bg-info-background dark:bg-dark-info-background items-center p-4 mb-4">
<i class="fa-regular fa-info-circle rounded-full p-3 text-info dark:text-dark-info bg-info/10 dark:bg-dark-info-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.info")
</p>
</div>
<div style="display: none"
class="success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<div class="hidden success flex rounded-xl bg-success-background dark:bg-dark-success-background items-center p-4 mb-4">
<i class="fa-regular fa-check-circle rounded-full p-3 text-success dark:text-dark-success bg-success/10 dark:bg-dark-success-icon mr-4 text-xl leading-none"></i>
<div>
<p class="font-body text-body-l text-space-blue dark:text-white">
@ -79,16 +74,15 @@
</div>
</div>
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("mauth_usernameless.banner.error")
</p>
</div>
</div>
<div id="agovLoginImageMobile" style="display: none"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<div id="agovLoginImageMobile"
class="hidden md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full basis-1/2 mx-auto mb-4">
<img alt=""
src="${login.appDataPath}/static/images/recovery.svg"
class="block sm:hidden md:block dark:hidden w-full">
@ -102,8 +96,7 @@
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode"
class="mb-4 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
<span id="spinner" class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20"
style="display: none">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-20">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg"
class="animate-spin hidden dark:block">
@ -134,7 +127,7 @@
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="w-full bottom-8 sm:static mt-auto mb-6 sm:mb-0">
<div id="mobileButtons" style="display: none" class="w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div id="mobileButtons" class="hidden w-full bottom-8 sm:static mt-auto mb-16 sm:mb-0">
<div class="flex flex-col">
<a id="accessAppLink" href="">
<agov-button
@ -161,9 +154,8 @@
</agov-button>
<agov-button
style="display: none"
id="hideQR"
class="block basis-full"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"

View File

@ -2,8 +2,8 @@
<agov-backdrop></agov-backdrop>
<div id="modal" class="fixed top-0 bottom-0 left-0 right-0 pb-20 z-50 hidden">
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" onclick="modal.setInvisible()"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 backdrop-blur-[10px]" id="modal_light"></div>
<div class="fixed top-0 bottom-0 left-0 right-0 bg-[#E2E2E2E5]/80 dark:bg-[#111111]/90" id="modal_dark"></div>
<div id="drawer"
class="fixed bg-white dark:bg-surface-black rounded-[20px] p-10 w-11/12 sm:max-w-[660px] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
@ -26,12 +26,12 @@
<div class="w-full sm:static mt-auto">
<div class="flex justify-end flex-col-reverse sm:flex-row gap-4">
<agov-button
id="recovery_check_code"
class="block"
data-style="secondary"
data-label="$text.get("general.cancel")"
data-type="button"
data-fullwidth="true"
onclick="modal.setInvisible()">
data-fullwidth="true">
</agov-button>
<a href="$text.get("general.help.link")" target="_blank" rel="noopener noreferrer">
<agov-button
@ -51,7 +51,11 @@
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.recovery")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.entryCode")</h4>
@ -76,6 +80,7 @@
accept-charset="UTF-8"
class="flex flex-col flex-auto block ">
<agov-input
id="recovery_code_input"
class="mb-4 py-16"
data-label="$text.get("recovery_check_code.enterRecoveryCode")"
data-isLabelHidden="true"
@ -85,10 +90,6 @@
data-value=""
data-type="text"
data-autofocus="true"
oninput="validateCode.onInputCodeAndroid(event)"
onkeyup="validateCode.onKeyUp(event)"
onkeydown="validateCode.onInputCode(event)"
onpaste="validateCode.paste(event)"
data-email_invalid="$text.get("recovery_check_code.invalid.code")"
data-email_too_long="$text.get("recovery_check_code.invalid.code.tooLong")"
data-email_required="$text.get("recovery_check_code.invalid.code.required")">
@ -97,17 +98,18 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_btn"
class="block basis-full"
data-name="confirm"
data-value="confirm"
data-id="confirm"
data-label="$text.get("general.confirm")"
data-type="submit"
data-fullwidth="true"
onclick="validateCode.validateForm(event)">
data-fullwidth="true">
</agov-button>
<agov-button
id="recovery_code_btn_cancel"
class="block basis-full"
data-style="frameless"
data-name="cancelFido2"
@ -116,8 +118,7 @@
data-label="$text.get("recovery_check_code.noAccess")"
data-type="button"
data-fullwidth="true"
data-validate="false"
onclick="modal.setVisible()">
data-validate="false">
</agov-button>
</div>
</div>

View File

@ -56,8 +56,7 @@
data-style="secondary"
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>Reveal code"
data-type="button"
data-fullwidth="true"
onclick="blurCode.unBlurCode()">
data-fullwidth="true">
</agov-button>
<a class="mb-20" target="_blank" href="$PDFLink">
<agov-button
@ -77,14 +76,14 @@
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col flex-row-reverse gap-4">
<agov-button
id="recovery_code_continue"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="blurCode.continue(event)">
data-fullwidth="true">
</agov-button>
</div>

View File

@ -1,7 +1,7 @@
#parse("${templatePath}/header.vm")
<agov-backdrop></agov-backdrop>
<div id="fidoBackdrop" style="display: none">
<div id="fidoBackdrop" class="hidden">
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 backdrop-blur-[10px]"></div>
<div class="fixed z-50 top-0 left-0 bottom-0 right-0 bg-zinc-50 opacity-80"></div>
</div>
@ -29,8 +29,7 @@
</p>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<div style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("fido2_auth.cancel.fido")
@ -62,7 +61,7 @@
<div class="mt-auto mb-6 sm:mb-0">
<agov-button
onclick="fido.authenticate()"
id="recovery_fido"
data-type="button"
data-label="$text.get("recovery_fidokey_auth.button")"
data-fullwidth="true"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
@ -27,11 +32,11 @@
</div>
#end
<div id="captchaNotFilled" style="display: none"
class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("recovery_intro_email.captchaUnchecked")
$text.get("error_9909")
</p>
</div>
@ -62,106 +67,53 @@
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
$text.get("recovery_intro_email.process")
</p>
#if ($utils.escapeHtmlAttribute($gui.getGuiElem("X-ReCAPTCHA-Integration").value) == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "continue";
btn.value = "continue";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="font-body w-full text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="continue"
data-value="continue"
data-id="continue"
data-id="submit"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event, true)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -2,6 +2,11 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">

View File

@ -42,11 +42,11 @@
<div id="buttons" class="w-full sm:static mt-auto mb-6 sm:mb-0 mt-24 sm:mt-24">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateFormYesOrNo(event))">
data-fullwidth="true">
</agov-button>
<agov-button
class="block basis-full"

View File

@ -60,11 +60,11 @@
<div class="w-full sm:static mt-8 mb-6 sm:mb-0 ">
<div class="flex sm:flex-row-reverse flex-col gap-2">
<agov-button
id="questionnaire_continue_btn_reason"
class="block basis-full"
data-label="$text.get("general.continue")"
data-type="submit"
data-fullwidth="true"
onclick="setErrorBanner(validateAnswer.validateForm(event))">
data-fullwidth="true">
</agov-button>
<agov-button

View File

@ -2,15 +2,27 @@
<agov-backdrop></agov-backdrop>
<div id="mainContent" class="container mx-auto sm:mt-32 sm:max-w-full flex flex-auto sm:block">
<span id="spinner" class="hidden absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-30">
<img src="${login.appDataPath}/static/images/spinner.svg" class="animate-spin block dark:hidden">
<img src="${login.appDataPath}/static/images/spinner-dark.svg" class="animate-spin hidden dark:block">
</span>
<div id="blurBackdrop" class="hidden absolute backdrop-blur-sm -top-1 -bottom-96 -left-4 -right-4 z-20"></div>
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col sm:bg-white sm:dark:bg-surface-black rounded-[20px] sm:px-10 sm:py-10 max-w-[550px] w-full
basis-full md:basis-1/2">
<div class="flex mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("general.login")</h3>
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
</div>
<div id="captchaNotFilled"
class="hidden error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4">
<i class="fa-regular fa-exclamation-circle rounded-full p-3 text-error dark:text-dark-error bg-error/10 dark:bg-dark-error-icon mr-4 text-xl leading-none"></i>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("error_9909")
</p>
</div>
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8"
@ -35,106 +47,51 @@
data-email_required="$text.get("user_input.invalid.email.required")">
</agov-input>
#if ($gui.getGuiElem("X-ReCAPTCHA-Integration").value == "INVISIBLE")
#set ($isCaptchaVisible = true)
#else
#set ($isCaptchaVisible = false)
#end
#set ($siteKey = $gui.getGuiElem("friendlyCaptchaSettings.siteKey"))
#set ($puzzleUrl = $gui.getGuiElem("friendlyCaptchaSettings.puzzleUrl"))
#set ($captchaEnabled = $gui.getGuiElem("captchaSettings.enabled"))
#if ($isCaptchaVisible)
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaInvisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?render=$captcha.value"></script>
<script>
function emailCaptcha(event) {
event.preventDefault();
if (validateEmail.validateForm(event)) {
grecaptcha.enterprise.ready(async () => {
await grecaptcha.enterprise.execute('$captcha.value', { action: 'LOGIN' })
.then((token) => {
document.querySelector('input[name="recaptcha_response"]').value = token;
addButton();
});
});
}
return false;
}
function addButton() {
let btn = document.createElement("button");
btn.type = "submit";
btn.name = "submit";
btn.value = "submit";
btn.style.display = "none";
document.querySelector('#$gui.name').appendChild(btn);
btn.click()
}
</script>
#else
#set ($captcha = $gui.getGuiElem("captchaSettings.reCaptchaVisibleSiteKey"))
<input type="hidden" name="recaptcha_sitekey" value="$captcha.value"/>
<input type="hidden" name="recaptcha_response" value="captcha">
<script src="https://www.google.com/recaptcha/enterprise.js?onload=onloadCallback&render=explicit" async
defer></script>
<script>
var verifyCallback = function (response) {
document.querySelector('input[name="recaptcha_response"]').value = response;
};
var expiredCallback = function () {
document.querySelector('input[name="recaptcha_response"]').value = 'captcha';
};
var onloadCallback = function () {
grecaptcha.enterprise.render(document.getElementById('captchaRender'), {
'sitekey': '$captcha.value',
'action': 'LOGIN',
'callback': verifyCallback,
'expired-callback': expiredCallback
});
};
</script>
#end
<div class="font-body text-body-l mb-4">
#if ($isCaptchaVisible)
<div class="text-disabled-grey dark:text-silver">
$text.get("recovery_intro_email.siteProtectedWithRecaptcha")
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<div class="w-full font-body text-body-l mb-4">
<div class="flex mt-8">
<div class="frc-captcha"
id="frc-captcha"
data-puzzle-endpoint="$puzzleUrl.value"
data-sitekey="$siteKey.value"
data-start="auto"
data-lang="$login.language"
data-solution-field-name="captcha_response">
</div>
#else
<div class="flex mt-8" id="captchaRender"></div>
#end
</div>
</div>
#end ## if
<div class="w-full sm:static mt-auto mb-6 sm:mb-0">
<div class="flex flex-col sm:flex-row-reverse gap-4">
#if ($isCaptchaVisible)
#if ($captchaEnabled.value && $captchaEnabled.value == "true")
<agov-button
id="submit_btn_captcha_enabled"
disabled="true"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="return emailCaptcha(event)">
data-fullwidth="true">
</agov-button>
#else
<agov-button
id="submit_btn_captcha_disabled"
class="block basis-full"
data-name="submit"
data-value="submit"
data-id="submit"
data-label="$text.get("general.login")"
data-type="submit"
data-fullwidth="true"
onclick="validateEmail.validateForm(event)">
data-fullwidth="true">
</agov-button>
#end
#end ## if
<agov-button
class="block basis-full"
data-style="secondary"

View File

@ -46,7 +46,7 @@ spec:
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-a5b664b2c1f534aab19c8301f3618a8c5096d222"
tag: "r-7bd8f34aeeebe1debccb6e4932b092cf2b2c4c88"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/proxy-idm"
credentials: "git-credentials"
keystores:

View File

@ -175,17 +175,23 @@
<param-value>false</param-value>
</init-param>
</filter>
<!-- source: pattern://1200a58c76686d520c21edb0 -->
<!-- source: pattern://9c6ad44795320a7adec1ccde -->
<filter>
<filter-name>ResponseHeader_Default</filter-name>
<filter-name>ResponseHeader_Security_Response_Headers</filter-name>
<filter-class>ch::nevis::isiweb4::filter::delegation::HeaderDelegationFilter</filter-class>
<!-- source: pattern://1200a58c76686d520c21edb0 -->
<!-- source: pattern://9c6ad44795320a7adec1ccde -->
<init-param>
<param-name>DelegateToFrontend</param-name>
<param-value>
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
Content-Security-Policy-Report-Only:default-src 'none'; script-src 'self' 'sha256-4r4l/2aahtvPIxQP0YmmqfftYXNwNqxxqOUaXVE0FjM=' 'sha256-3sconOU5uxdS6tVa5DhEli3N+/aY9IvYh873WqDptD0=' 'sha256-N3+RfLbnlpBc0lUnNy4soyLbX0tNDqQt5LPzkEsYOHo=' 'sha256-uOoE0nq21NJDv37YLUOxV9aCnNstJ0GK7BiXNMXQAcI='; img-src 'self'; style-src 'self' 'sha256-/yxYnm5QjS5hz1/KbfNQ/Deyfb9rK1xZefYJGNT9UmU=' 'sha256-2diQqrANllVP9IWjXj1A6fjjvlPtpN6NXlmTiRJneCU=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-DHdp+1g/LIFDKreGcezYZywjzyvqUEbmjv4fv+nEQeE=' 'sha256-DtJ0G5eArSV7tvvFUUeV7iyiWfBGflIkRW64/tmMWUk=' 'sha256-JhfXJ5URuB/EAqhZ9vqgEO6trOuCE0w2/ChmfrVzxFo=' 'sha256-MdFWcEIx4V82/ap9SUt01BxZMN4eFGEl8hNDFEGIzJU=' 'sha256-dnsMWK7eeuHUJm/wLL2CXCibJJV0lnUxjpqlu5fcUsg=' 'sha256-iKyiqXXi2KXxNcOUCr+VCUo09ipHFWuIkztLNvUXhd0=' 'sha256-ifPclQYYwRDXSPQgB9/6UgAgEICBpwegJBWNhOI8dOA='; form-action 'self' https://trustbroker.agov-d.azure.adnovum.net/adfs/ls; font-src 'self'; connect-src 'self';
Cross-Origin-Embedder-Policy:require-corp
Cross-Origin-Opener-Policy:same-origin
Cross-Origin-Resource-Policy:same-site
Permissions-Policy:geolocation=(), camera=(), microphone=(), interest-cohort=()
Referrer-Policy:strict-origin-when-cross-origin
Strict-Transport-Security:max-age=63072000; includeSubDomains;
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
</param-value>
</init-param>
</filter>
@ -371,9 +377,9 @@
<filter-name>URLHandler_Virtual_Host_idmOperations-Loggedout</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- source: pattern://1200a58c76686d520c21edb0 -->
<!-- source: pattern://9c6ad44795320a7adec1ccde -->
<filter-mapping>
<filter-name>ResponseHeader_Default</filter-name>
<filter-name>ResponseHeader_Security_Response_Headers</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- source: pattern://6f9c9f982dcc7ef59a34f1f7 -->

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<!-- If you change something here, make sure all the pages are modified accordingly -->
<!-- svh -> Small View Height. It's not taking the height of the search bar on mobile into account -->
<html class="relative min-h-screen h-full mx-4 flex sm:block" lang="$login.language" style="min-height: 100svh">
<html class="relative h-full mx-4 flex sm:block min-h-100" lang="$login.language">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<!-- If you change something here, make sure all the pages are modified accordingly -->
<!-- svh -> Small View Height. It's not taking the height of the search bar on mobile into account -->
<html class="relative min-h-screen h-full mx-4 flex sm:block" lang="$login.language" style="min-height: 100svh">
<html class="relative min-h-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<!-- If you change something here, make sure all the pages are modified accordingly -->
<!-- svh -> Small View Height. It's not taking the height of the search bar on mobile into account -->
<html class="relative min-h-screen h-full mx-4 flex sm:block" lang="$login.language" style="min-height: 100svh">
<html class="relative min-h-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<!-- If you change something here, make sure all the pages are modified accordingly -->
<!-- svh -> Small View Height. It's not taking the height of the search bar on mobile into account -->
<html class="relative min-h-screen h-full mx-4 flex sm:block" lang="$login.language" style="min-height: 100svh">
<html class="relative min-h-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<!-- If you change something here, make sure all the pages are modified accordingly -->
<!-- svh -> Small View Height. It's not taking the height of the search bar on mobile into account -->
<html class="relative min-h-screen h-full mx-4 flex sm:block" lang="$login.language" style="min-height: 100svh">
<html class="relative min-h-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
<title>AGOV Operations</title>
<meta charset="UTF-8">

Some files were not shown because too many files have changed in this diff Show More