new configuration version
This commit is contained in:
parent
2559aa6569
commit
5f6704135d
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
|
|||
recovery_fidokey_auth.keyRegistered=Sicherheitsschlü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ö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öschte AGOV access App, verlorener Sicherheitsschlüssel, verlorenes Telefon usw.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA geschützt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerklä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ürze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
|
||||
recovery_on_going.finishRecovery=Wiederherstellung abschliessen
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
|
|||
recovery_fidokey_auth.keyRegistered=Clé de sécurité déjà enregistrée
|
||||
recovery_intro_email.banner.error=Le lien que vous avez utilisé a expiré. 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émarrer le processus de récupération.
|
||||
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
|
||||
recovery_intro_email.important=Important:
|
||||
recovery_intro_email.process=Le processus de récupération ne doit être utilisé que si vous avez perdu l'accès à vos facteurs de connexion (application AGOV access supprimée, clé de sécurité perdue, téléphone perdu, etc.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est protégé par reCAPTCHA: les <a class=’link’ href=’https://policies.google.com/privacy’ target=’_blank’>règles de confidentialité</a> et <a class=’link’ href=’https://policies.google.com/terms’ target=’_blank’>conditions d’utilisation</a> de Google s’appliquent.
|
||||
recovery_intro_email_sent.banner.button=Vous n’avez pas reçu l'email?
|
||||
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de récupération et des instructions.
|
||||
recovery_on_going.finishRecovery=Terminer la récupération
|
||||
|
|
|
@ -203,10 +203,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
|
|||
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza già registrata
|
||||
recovery_intro_email.banner.error=Il link utilizzato è scaduto. Per ricevere un nuovo link, inserire l’indirizzo e-mail.
|
||||
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l’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 è 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! È stata inviata un’e-mail contenente il codice di ripristino e le istruzioni.
|
||||
recovery_on_going.finishRecovery=Completare il ripristino
|
||||
|
|
|
@ -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:
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
|
|||
recovery_fidokey_auth.keyRegistered=Sicherheitsschlü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ö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öschte AGOV access App, verlorener Sicherheitsschlüssel, verlorenes Telefon usw.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA geschützt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerklä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ürze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
|
||||
recovery_on_going.finishRecovery=Wiederherstellung abschliessen
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
|
|||
recovery_fidokey_auth.keyRegistered=Clé de sécurité déjà enregistrée
|
||||
recovery_intro_email.banner.error=Le lien que vous avez utilisé a expiré. 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émarrer le processus de récupération.
|
||||
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
|
||||
recovery_intro_email.important=Important:
|
||||
recovery_intro_email.process=Le processus de récupération ne doit être utilisé que si vous avez perdu l'accès à vos facteurs de connexion (application AGOV access supprimée, clé de sécurité perdue, téléphone perdu, etc.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est protégé par reCAPTCHA: les <a class=’link’ href=’https://policies.google.com/privacy’ target=’_blank’>règles de confidentialité</a> et <a class=’link’ href=’https://policies.google.com/terms’ target=’_blank’>conditions d’utilisation</a> de Google s’appliquent.
|
||||
recovery_intro_email_sent.banner.button=Vous n’avez pas reçu l'email?
|
||||
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de récupération et des instructions.
|
||||
recovery_on_going.finishRecovery=Terminer la récupération
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
|
|||
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza già registrata
|
||||
recovery_intro_email.banner.error=Il link utilizzato è scaduto. Per ricevere un nuovo link, inserire l’indirizzo e-mail.
|
||||
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l’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 è 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! È stata inviata un’e-mail contenente il codice di ripristino e le istruzioni.
|
||||
recovery_on_going.finishRecovery=Completare il ripristino
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initQRCode'));
|
||||
document.dispatchEvent(new Event('initDrawer'));
|
||||
document.dispatchEvent(new Event('initCantonalBranding'));
|
||||
});
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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>
|
||||
|
@ -15,16 +15,16 @@
|
|||
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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">
|
||||
<div class="flex flex-row items-center justify-between">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate">$utils.escapeHtmlAttribute($emailInput.value)</p>
|
||||
#else
|
||||
#else
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate"></p>
|
||||
#end
|
||||
#end
|
||||
<agov-button
|
||||
class="shrink-0"
|
||||
data-style="frameless"
|
||||
|
@ -40,11 +40,10 @@
|
|||
</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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -53,21 +52,21 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction1")</p>
|
||||
"fido2_auth.instruction1")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -79,12 +78,12 @@
|
|||
</agov-checkbox>
|
||||
|
||||
<label for="skip" class="font-body text-body-l text-space-blue dark:text-white cursor-pointer">
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
</label>
|
||||
</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"
|
||||
|
@ -94,7 +93,7 @@
|
|||
<div class="flex items-center mt-6 mb-4">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
class="flex items-center rounded-xl gap-5 p-2 sm:p-0 sm:w-auto w-full hidden bg-pale-blue dark:bg-purple-black sm:bg-transparent">
|
||||
<div class="flex items-center p-2 bg-white rounded sm:rounded-xl w-16 h-16" id="logo"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
<h1 class="font-header text-h4 text-space-blue dark:text-white mb-8">$text.get("general.registration")</h1>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white text-center mb-4">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</h2>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -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"
|
||||
|
@ -69,15 +71,15 @@
|
|||
<div class="flex items-center p-2 bg-white dark:bg-black rounded sm:rounded-xl w-16 h-16"
|
||||
id="logoMobile"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -93,65 +95,65 @@
|
|||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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,12 +167,12 @@
|
|||
<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">
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<a id="accessAppLinkIpad" href="" class="hidden">
|
||||
|
@ -189,7 +191,7 @@
|
|||
dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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
|
||||
|
@ -218,21 +220,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
@ -246,11 +247,11 @@
|
|||
<div id="securityKeyModal" class="hidden mt-16">
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-4 text-center">
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
</h2>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white text-center my-6">
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
</p>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -280,14 +281,14 @@
|
|||
<button class="hidden" id="onReload" name="onReload"></button>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-7 mb-4 text-center">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</h2>
|
||||
<agov-button
|
||||
data-style="secondary"
|
||||
data-name="fallback"
|
||||
data-value="recovery"
|
||||
data-label="<i class='fa-regular fa-suitcase-medical text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.startRecovery")"
|
||||
"mauth_usernameless.startRecovery")"
|
||||
data-type="submit"
|
||||
data-fullwidth="true"
|
||||
class="block">
|
||||
|
@ -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">
|
||||
|
@ -309,12 +310,12 @@
|
|||
|
||||
<div class="flex items-center justify-center mb-6">
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.otherOptions")
|
||||
$text.get("general.otherOptions")
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white text-center mb-2">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</p>
|
||||
|
||||
<agov-button
|
||||
|
@ -330,14 +331,14 @@
|
|||
<div class="flex items-center mt-6 mb-6">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.or")</span>
|
||||
$text.get("general.or")</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col flex-wrap justify-center items-center mb-6 gap-1">
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</p>
|
||||
<agov-button
|
||||
data-style="frameless"
|
||||
|
@ -353,9 +354,9 @@
|
|||
|
||||
|
||||
<div class="font-body text-body-s text-disabled-grey dark:text-silver text-center">
|
||||
$text.get("footer.text")
|
||||
$text.get("footer.text")
|
||||
<a target="_blank" class='text-hyperlink dark:text-info underline' href='$text.get("footer.link")'>$text.get(
|
||||
"footer.link.label")</a>
|
||||
"footer.link.label")</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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")
|
|
@ -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">
|
||||
## 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-100 h-full mx-4 flex sm:block">
|
||||
<head>
|
||||
<title>AGOV Operations</title>
|
||||
<meta charset="UTF-8">
|
||||
|
@ -20,51 +20,53 @@
|
|||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo.svg" class="h-5 sm:h-8 sm:mr-6 dark:hidden">
|
||||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo-dark.svg" class="h-5 sm:h-8 sm:mr-6 hidden dark:block">
|
||||
<div class="flex items-center flex-1 sm:flex-initial justify-end">
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
class="block px-8 sm:px-4 py-3 hover:bg-lavender-blush dark:hover:bg-purple-black"
|
||||
aria-current="false"
|
||||
href="'+$langTarget+'">'+$langLabel+' - '+$locale.toUpperCase()
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
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>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
>'+$langLabel+' - '+$locale.toUpperCase()+
|
||||
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
|
||||
<agov-language
|
||||
class="hidden sm:inline-block"
|
||||
data-lang='$login.localeCode.toUpperCase()'
|
||||
data-links='$langMenu'
|
||||
data-aria_label='$text.get("languageDropdown.aria.label")'
|
||||
>
|
||||
>
|
||||
</agov-language>
|
||||
<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>
|
||||
|
||||
<agov-darkmode
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
</agov-darkmode>
|
||||
|
||||
<agov-mobile-menu
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,79 +16,73 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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">
|
||||
|
@ -125,16 +118,16 @@
|
|||
<div class="accessAppInstructions flex bg-indigo-light rounded-xl p-4 mb-4 items-center dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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" 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
|
||||
|
@ -155,21 +148,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,12 +13,12 @@
|
|||
</div>
|
||||
|
||||
<h4 id="modalTitle" class="font-header text-h4 text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
</h4>
|
||||
|
||||
<div id="modalDescription" class="mb-20">
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white">
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -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,31 +51,36 @@
|
|||
<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>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-6">
|
||||
<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_check_code.codeIncorrect")
|
||||
$text.get("recovery_check_code.codeIncorrect")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#end
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_check_code.instruction")
|
||||
$text.get("recovery_check_code.instruction")
|
||||
</p>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
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>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#parse("${templatePath}/header.vm")
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($PDFRecoveryTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','').replaceAll(
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
#set ($concat = "recovery/pdf?authToken=")
|
||||
#set ($PDFLink = "$PDFRecoveryTarget$concat$gui.getGuiElem('pdfAuthToken').value")
|
||||
|
||||
|
@ -15,19 +15,19 @@
|
|||
<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(
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
</div>
|
||||
|
||||
<div id="codeNotSeen"
|
||||
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("recovery_code.banner.error")
|
||||
$text.get("recovery_code.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_code.instruction")
|
||||
$text.get("recovery_code.instruction")
|
||||
</p>
|
||||
|
||||
<div class="flex justify-between items-center relative mb-4 py-4 pr-4 pl-8 rounded-xl bg-indigo-light dark:bg-purple-black">
|
||||
|
@ -35,7 +35,7 @@
|
|||
<div>
|
||||
<p class="font-header text-h5 text-space-blue dark:text-white">$gui.getGuiElem('isiwebpasswd').value</p>
|
||||
<p class="font-body text-body-m text-space-blue dark:text-white">
|
||||
$text.get("recovery_code.validUntil")
|
||||
$text.get("recovery_code.validUntil")
|
||||
$gui.getGuiElem('validTil').value
|
||||
</p>
|
||||
|
||||
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,24 +16,23 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</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">
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -42,27 +41,27 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,43 +18,43 @@
|
|||
<div class="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("recovery_intro_email.banner.info")
|
||||
$text.get("recovery_intro_email.banner.info")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="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.banner.error")
|
||||
$text.get("recovery_intro_email.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="mt-4 flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -60,108 +65,55 @@
|
|||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2 sm:mb-8">
|
||||
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
|
||||
$text.get("recovery_intro_email.process")
|
||||
$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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -14,12 +19,12 @@
|
|||
<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">
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
|
|
@ -11,18 +11,18 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_loginfactor.banner.error")
|
||||
$text.get("recovery_questionnaire_loginfactor.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
@ -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"
|
||||
|
|
|
@ -11,60 +11,60 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_reason_selection.banner.error")
|
||||
$text.get("recovery_questionnaire_reason_selection.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<form id="answersForm" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
accept-charset="UTF-8"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
<agov-radio-button data-text="$text.get("recovery_questionnaire_reason_selection.$answer")"
|
||||
data-value="$dataValue"
|
||||
data-id="$answer"
|
||||
data-name="continue"
|
||||
data-groupName="button-answers">
|
||||
</agov-radio-button>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
|
||||
<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
|
||||
|
|
|
@ -2,31 +2,43 @@
|
|||
|
||||
<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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
class="mb-4 sm:mb-40"
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="userInputValue_prompt.email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
|
|||
recovery_fidokey_auth.keyRegistered=Sicherheitsschlü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ö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öschte AGOV access App, verlorener Sicherheitsschlüssel, verlorenes Telefon usw.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA geschützt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerklä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ürze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
|
||||
recovery_on_going.finishRecovery=Wiederherstellung abschliessen
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
|
|||
recovery_fidokey_auth.keyRegistered=Clé de sécurité déjà enregistrée
|
||||
recovery_intro_email.banner.error=Le lien que vous avez utilisé a expiré. 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émarrer le processus de récupération.
|
||||
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
|
||||
recovery_intro_email.important=Important:
|
||||
recovery_intro_email.process=Le processus de récupération ne doit être utilisé que si vous avez perdu l'accès à vos facteurs de connexion (application AGOV access supprimée, clé de sécurité perdue, téléphone perdu, etc.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est protégé par reCAPTCHA: les <a class=’link’ href=’https://policies.google.com/privacy’ target=’_blank’>règles de confidentialité</a> et <a class=’link’ href=’https://policies.google.com/terms’ target=’_blank’>conditions d’utilisation</a> de Google s’appliquent.
|
||||
recovery_intro_email_sent.banner.button=Vous n’avez pas reçu l'email?
|
||||
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de récupération et des instructions.
|
||||
recovery_on_going.finishRecovery=Terminer la récupération
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
|
|||
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza già registrata
|
||||
recovery_intro_email.banner.error=Il link utilizzato è scaduto. Per ricevere un nuovo link, inserire l’indirizzo e-mail.
|
||||
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l’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 è 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! È stata inviata un’e-mail contenente il codice di ripristino e le istruzioni.
|
||||
recovery_on_going.finishRecovery=Completare il ripristino
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initQRCode'));
|
||||
document.dispatchEvent(new Event('initDrawer'));
|
||||
document.dispatchEvent(new Event('initCantonalBranding'));
|
||||
});
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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>
|
||||
|
@ -15,16 +15,16 @@
|
|||
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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">
|
||||
<div class="flex flex-row items-center justify-between">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate">$utils.escapeHtmlAttribute($emailInput.value)</p>
|
||||
#else
|
||||
#else
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate"></p>
|
||||
#end
|
||||
#end
|
||||
<agov-button
|
||||
class="shrink-0"
|
||||
data-style="frameless"
|
||||
|
@ -40,11 +40,10 @@
|
|||
</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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -53,21 +52,21 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction1")</p>
|
||||
"fido2_auth.instruction1")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -79,12 +78,12 @@
|
|||
</agov-checkbox>
|
||||
|
||||
<label for="skip" class="font-body text-body-l text-space-blue dark:text-white cursor-pointer">
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
</label>
|
||||
</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"
|
||||
|
@ -94,7 +93,7 @@
|
|||
<div class="flex items-center mt-6 mb-4">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
class="flex items-center rounded-xl gap-5 p-2 sm:p-0 sm:w-auto w-full hidden bg-pale-blue dark:bg-purple-black sm:bg-transparent">
|
||||
<div class="flex items-center p-2 bg-white rounded sm:rounded-xl w-16 h-16" id="logo"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
<h1 class="font-header text-h4 text-space-blue dark:text-white mb-8">$text.get("general.registration")</h1>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white text-center mb-4">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</h2>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -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"
|
||||
|
@ -69,15 +71,15 @@
|
|||
<div class="flex items-center p-2 bg-white dark:bg-black rounded sm:rounded-xl w-16 h-16"
|
||||
id="logoMobile"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -93,65 +95,65 @@
|
|||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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,12 +167,12 @@
|
|||
<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">
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<a id="accessAppLinkIpad" href="" class="hidden">
|
||||
|
@ -189,7 +191,7 @@
|
|||
dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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
|
||||
|
@ -218,21 +220,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
@ -246,11 +247,11 @@
|
|||
<div id="securityKeyModal" class="hidden mt-16">
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-4 text-center">
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
</h2>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white text-center my-6">
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
</p>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -280,14 +281,14 @@
|
|||
<button class="hidden" id="onReload" name="onReload"></button>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-7 mb-4 text-center">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</h2>
|
||||
<agov-button
|
||||
data-style="secondary"
|
||||
data-name="fallback"
|
||||
data-value="recovery"
|
||||
data-label="<i class='fa-regular fa-suitcase-medical text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.startRecovery")"
|
||||
"mauth_usernameless.startRecovery")"
|
||||
data-type="submit"
|
||||
data-fullwidth="true"
|
||||
class="block">
|
||||
|
@ -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">
|
||||
|
@ -309,12 +310,12 @@
|
|||
|
||||
<div class="flex items-center justify-center mb-6">
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.otherOptions")
|
||||
$text.get("general.otherOptions")
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white text-center mb-2">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</p>
|
||||
|
||||
<agov-button
|
||||
|
@ -330,14 +331,14 @@
|
|||
<div class="flex items-center mt-6 mb-6">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.or")</span>
|
||||
$text.get("general.or")</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col flex-wrap justify-center items-center mb-6 gap-1">
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</p>
|
||||
<agov-button
|
||||
data-style="frameless"
|
||||
|
@ -353,9 +354,9 @@
|
|||
|
||||
|
||||
<div class="font-body text-body-s text-disabled-grey dark:text-silver text-center">
|
||||
$text.get("footer.text")
|
||||
$text.get("footer.text")
|
||||
<a target="_blank" class='text-hyperlink dark:text-info underline' href='$text.get("footer.link")'>$text.get(
|
||||
"footer.link.label")</a>
|
||||
"footer.link.label")</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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")
|
|
@ -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">
|
||||
## 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-100 h-full mx-4 flex sm:block">
|
||||
<head>
|
||||
<title>AGOV Operations</title>
|
||||
<meta charset="UTF-8">
|
||||
|
@ -20,51 +20,53 @@
|
|||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo.svg" class="h-5 sm:h-8 sm:mr-6 dark:hidden">
|
||||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo-dark.svg" class="h-5 sm:h-8 sm:mr-6 hidden dark:block">
|
||||
<div class="flex items-center flex-1 sm:flex-initial justify-end">
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
class="block px-8 sm:px-4 py-3 hover:bg-lavender-blush dark:hover:bg-purple-black"
|
||||
aria-current="false"
|
||||
href="'+$langTarget+'">'+$langLabel+' - '+$locale.toUpperCase()
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
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>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
>'+$langLabel+' - '+$locale.toUpperCase()+
|
||||
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
|
||||
<agov-language
|
||||
class="hidden sm:inline-block"
|
||||
data-lang='$login.localeCode.toUpperCase()'
|
||||
data-links='$langMenu'
|
||||
data-aria_label='$text.get("languageDropdown.aria.label")'
|
||||
>
|
||||
>
|
||||
</agov-language>
|
||||
<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>
|
||||
|
||||
<agov-darkmode
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
</agov-darkmode>
|
||||
|
||||
<agov-mobile-menu
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,79 +16,73 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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">
|
||||
|
@ -125,16 +118,16 @@
|
|||
<div class="accessAppInstructions flex bg-indigo-light rounded-xl p-4 mb-4 items-center dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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" 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
|
||||
|
@ -155,21 +148,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,12 +13,12 @@
|
|||
</div>
|
||||
|
||||
<h4 id="modalTitle" class="font-header text-h4 text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
</h4>
|
||||
|
||||
<div id="modalDescription" class="mb-20">
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white">
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -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,31 +51,36 @@
|
|||
<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>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-6">
|
||||
<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_check_code.codeIncorrect")
|
||||
$text.get("recovery_check_code.codeIncorrect")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#end
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_check_code.instruction")
|
||||
$text.get("recovery_check_code.instruction")
|
||||
</p>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
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>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#parse("${templatePath}/header.vm")
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($PDFRecoveryTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','').replaceAll(
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
#set ($concat = "recovery/pdf?authToken=")
|
||||
#set ($PDFLink = "$PDFRecoveryTarget$concat$gui.getGuiElem('pdfAuthToken').value")
|
||||
|
||||
|
@ -15,19 +15,19 @@
|
|||
<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(
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
</div>
|
||||
|
||||
<div id="codeNotSeen"
|
||||
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("recovery_code.banner.error")
|
||||
$text.get("recovery_code.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_code.instruction")
|
||||
$text.get("recovery_code.instruction")
|
||||
</p>
|
||||
|
||||
<div class="flex justify-between items-center relative mb-4 py-4 pr-4 pl-8 rounded-xl bg-indigo-light dark:bg-purple-black">
|
||||
|
@ -35,7 +35,7 @@
|
|||
<div>
|
||||
<p class="font-header text-h5 text-space-blue dark:text-white">$gui.getGuiElem('isiwebpasswd').value</p>
|
||||
<p class="font-body text-body-m text-space-blue dark:text-white">
|
||||
$text.get("recovery_code.validUntil")
|
||||
$text.get("recovery_code.validUntil")
|
||||
$gui.getGuiElem('validTil').value
|
||||
</p>
|
||||
|
||||
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,24 +16,23 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</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">
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -42,27 +41,27 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,43 +18,43 @@
|
|||
<div class="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("recovery_intro_email.banner.info")
|
||||
$text.get("recovery_intro_email.banner.info")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="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.banner.error")
|
||||
$text.get("recovery_intro_email.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="mt-4 flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -60,108 +65,55 @@
|
|||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2 sm:mb-8">
|
||||
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
|
||||
$text.get("recovery_intro_email.process")
|
||||
$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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -14,12 +19,12 @@
|
|||
<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">
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
|
|
@ -11,18 +11,18 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_loginfactor.banner.error")
|
||||
$text.get("recovery_questionnaire_loginfactor.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
@ -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"
|
||||
|
|
|
@ -11,60 +11,60 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_reason_selection.banner.error")
|
||||
$text.get("recovery_questionnaire_reason_selection.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<form id="answersForm" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
accept-charset="UTF-8"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
<agov-radio-button data-text="$text.get("recovery_questionnaire_reason_selection.$answer")"
|
||||
data-value="$dataValue"
|
||||
data-id="$answer"
|
||||
data-name="continue"
|
||||
data-groupName="button-answers">
|
||||
</agov-radio-button>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
|
||||
<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
|
||||
|
|
|
@ -2,31 +2,43 @@
|
|||
|
||||
<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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
class="mb-4 sm:mb-40"
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="userInputValue_prompt.email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Bitte verwenden Sie !!!SECURITY_KEY_NAME!!! u
|
|||
recovery_fidokey_auth.keyRegistered=Sicherheitsschlü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ö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öschte AGOV access App, verlorener Sicherheitsschlüssel, verlorenes Telefon usw.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Diese Seite ist durch reCAPTCHA geschützt, und es gelten die <a class='link' href='https://policies.google.com/privacy' target='_blank'>Datenschutzerklä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ürze eine E-Mail mit einem Wiederherstellungslink und Anweisungen erhalten.
|
||||
recovery_on_going.finishRecovery=Wiederherstellung abschliessen
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Veuillez utiliser !!!SECURITY_KEY_NAME!!! pou
|
|||
recovery_fidokey_auth.keyRegistered=Clé de sécurité déjà enregistrée
|
||||
recovery_intro_email.banner.error=Le lien que vous avez utilisé a expiré. 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émarrer le processus de récupération.
|
||||
recovery_intro_email.captchaUnchecked=Veuillez cocher la case captcha
|
||||
recovery_intro_email.important=Important:
|
||||
recovery_intro_email.process=Le processus de récupération ne doit être utilisé que si vous avez perdu l'accès à vos facteurs de connexion (application AGOV access supprimée, clé de sécurité perdue, téléphone perdu, etc.).
|
||||
recovery_intro_email.siteProtectedWithRecaptcha=Ce site est protégé par reCAPTCHA: les <a class=’link’ href=’https://policies.google.com/privacy’ target=’_blank’>règles de confidentialité</a> et <a class=’link’ href=’https://policies.google.com/terms’ target=’_blank’>conditions d’utilisation</a> de Google s’appliquent.
|
||||
recovery_intro_email_sent.banner.button=Vous n’avez pas reçu l'email?
|
||||
recovery_intro_email_sent.banner.success=Merci! Vous recevrez dans un instant un e-mail contenant un lien de récupération et des instructions.
|
||||
recovery_on_going.finishRecovery=Terminer la récupération
|
||||
|
|
|
@ -153,10 +153,8 @@ recovery_fidokey_auth.instruction2=Si prega di usare !!!SECURITY_KEY_NAME!!! per
|
|||
recovery_fidokey_auth.keyRegistered=Chiave di sicurezza già registrata
|
||||
recovery_intro_email.banner.error=Il link utilizzato è scaduto. Per ricevere un nuovo link, inserire l’indirizzo e-mail.
|
||||
recovery_intro_email.banner.info=Per ricevere il link e avviare il processo di ripristino, inserire l’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 è 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! È stata inviata un’e-mail contenente il codice di ripristino e le istruzioni.
|
||||
recovery_on_going.finishRecovery=Completare il ripristino
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initQRCode'));
|
||||
document.dispatchEvent(new Event('initDrawer'));
|
||||
document.dispatchEvent(new Event('initCantonalBranding'));
|
||||
});
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.dispatchEvent(new Event('initEmail'));
|
||||
document.dispatchEvent(new Event('initCaptcha'));
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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>
|
||||
|
@ -15,16 +15,16 @@
|
|||
<h4 class="font-header text-h4 text-disabled-grey dark:text-silver">$text.get("general.securityKey")</h4>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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">
|
||||
<div class="flex flex-row items-center justify-between">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate">$utils.escapeHtmlAttribute($emailInput.value)</p>
|
||||
#else
|
||||
#else
|
||||
<p class="text-space-blue dark:text-white font-body-semi text-body-l truncate"></p>
|
||||
#end
|
||||
#end
|
||||
<agov-button
|
||||
class="shrink-0"
|
||||
data-style="frameless"
|
||||
|
@ -40,11 +40,10 @@
|
|||
</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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -53,21 +52,21 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction1")</p>
|
||||
"fido2_auth.instruction1")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -79,12 +78,12 @@
|
|||
</agov-checkbox>
|
||||
|
||||
<label for="skip" class="font-body text-body-l text-space-blue dark:text-white cursor-pointer">
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
$text.get("fido2_auth.skipInstructions")
|
||||
</label>
|
||||
</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"
|
||||
|
@ -94,7 +93,7 @@
|
|||
<div class="flex items-center mt-6 mb-4">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
$text.get("fido2_auth.switchLogin")
|
||||
</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
class="flex items-center rounded-xl gap-5 p-2 sm:p-0 sm:w-auto w-full hidden bg-pale-blue dark:bg-purple-black sm:bg-transparent">
|
||||
<div class="flex items-center p-2 bg-white rounded sm:rounded-xl w-16 h-16" id="logo"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
<h1 class="font-header text-h4 text-space-blue dark:text-white mb-8">$text.get("general.registration")</h1>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white text-center mb-4">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</h2>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -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"
|
||||
|
@ -69,15 +71,15 @@
|
|||
<div class="flex items-center p-2 bg-white dark:bg-black rounded sm:rounded-xl w-16 h-16"
|
||||
id="logoMobile"></div>
|
||||
<h1 class="font-header text-h6 sm:text-h4 text-space-blue dark:text-white">
|
||||
#if ($login.language =="en")
|
||||
#if ($login.language =="en")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameEN').value)
|
||||
#elseif ($login.language =="de")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameDE').value)
|
||||
#elseif ($login.language =="fr")
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameFR').value)
|
||||
#else
|
||||
$utils.escapeHtmlAttribute($gui.getGuiElem('agov.appDisplayNameIT').value)
|
||||
#end
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
@ -93,65 +95,65 @@
|
|||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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,12 +167,12 @@
|
|||
<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">
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<a id="accessAppLinkIpad" href="" class="hidden">
|
||||
|
@ -189,7 +191,7 @@
|
|||
dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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
|
||||
|
@ -218,21 +220,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
@ -246,11 +247,11 @@
|
|||
<div id="securityKeyModal" class="hidden mt-16">
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-4 text-center">
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
$text.get("mauth_usernameless.useSecurityKey")
|
||||
</h2>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white text-center my-6">
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
$text.get("mauth_usernameless.useSecurityKeyInfo")
|
||||
</p>
|
||||
|
||||
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
|
@ -280,14 +281,14 @@
|
|||
<button class="hidden" id="onReload" name="onReload"></button>
|
||||
|
||||
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-7 mb-4 text-center">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</h2>
|
||||
<agov-button
|
||||
data-style="secondary"
|
||||
data-name="fallback"
|
||||
data-value="recovery"
|
||||
data-label="<i class='fa-regular fa-suitcase-medical text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.startRecovery")"
|
||||
"mauth_usernameless.startRecovery")"
|
||||
data-type="submit"
|
||||
data-fullwidth="true"
|
||||
class="block">
|
||||
|
@ -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">
|
||||
|
@ -309,12 +310,12 @@
|
|||
|
||||
<div class="flex items-center justify-center mb-6">
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.otherOptions")
|
||||
$text.get("general.otherOptions")
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white text-center mb-2">
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
$text.get("mauth_usernameless.noAccount")
|
||||
</p>
|
||||
|
||||
<agov-button
|
||||
|
@ -330,14 +331,14 @@
|
|||
<div class="flex items-center mt-6 mb-6">
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
<span class="px-2 text-disabled-grey dark:text-white font-body-semi text-body-l whitespace-nowrap">
|
||||
$text.get("general.or")</span>
|
||||
$text.get("general.or")</span>
|
||||
<span class="h-px w-full bg-silver"></span>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col flex-wrap justify-center items-center mb-6 gap-1">
|
||||
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
$text.get("mauth_usernameless.cannotLogin")
|
||||
</p>
|
||||
<agov-button
|
||||
data-style="frameless"
|
||||
|
@ -353,9 +354,9 @@
|
|||
|
||||
|
||||
<div class="font-body text-body-s text-disabled-grey dark:text-silver text-center">
|
||||
$text.get("footer.text")
|
||||
$text.get("footer.text")
|
||||
<a target="_blank" class='text-hyperlink dark:text-info underline' href='$text.get("footer.link")'>$text.get(
|
||||
"footer.link.label")</a>
|
||||
"footer.link.label")</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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")
|
|
@ -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">
|
||||
## 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-100 h-full mx-4 flex sm:block">
|
||||
<head>
|
||||
<title>AGOV Operations</title>
|
||||
<meta charset="UTF-8">
|
||||
|
@ -20,51 +20,53 @@
|
|||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo.svg" class="h-5 sm:h-8 sm:mr-6 dark:hidden">
|
||||
<img alt="agov Logo" src="${login.appDataPath}/static/images/agov-logo-dark.svg" class="h-5 sm:h-8 sm:mr-6 hidden dark:block">
|
||||
<div class="flex items-center flex-1 sm:flex-initial justify-end">
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
#set ($langMenu = '')
|
||||
#foreach ($locale in $login.locales)
|
||||
## find translated label of current locale
|
||||
#if ($text.contains("language.$locale"))
|
||||
#set ($langLabel = $text.get("language.$locale"))
|
||||
#elseif ($locale.length() > 2)
|
||||
#set ($langLabel = $text.get("language.${locale.substring(0,2).toLowerCase()}"))
|
||||
#else
|
||||
#set ($langLabel = $locale)
|
||||
#end
|
||||
## emit link or text for each language
|
||||
#set ($langTarget = $utils.escapeHtmlAttribute($gui.target('language', $locale)))
|
||||
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
#if ($login.localeCode != $locale && $login.language != $locale)
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
class="block px-8 sm:px-4 py-3 hover:bg-lavender-blush dark:hover:bg-purple-black"
|
||||
aria-current="false"
|
||||
href="'+$langTarget+'">'+$langLabel+' - '+$locale.toUpperCase()
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
+'</a></li>')
|
||||
#else
|
||||
#set ($langMenu = $langMenu + '<li><a
|
||||
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>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
>'+$langLabel+' - '+$locale.toUpperCase()+
|
||||
'</span><span class="fa-solid fa-check text-indigo dark:text-white text-body-l"></span></li>')
|
||||
#end
|
||||
#end ## end foreach
|
||||
|
||||
<agov-language
|
||||
class="hidden sm:inline-block"
|
||||
data-lang='$login.localeCode.toUpperCase()'
|
||||
data-links='$langMenu'
|
||||
data-aria_label='$text.get("languageDropdown.aria.label")'
|
||||
>
|
||||
>
|
||||
</agov-language>
|
||||
<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>
|
||||
|
||||
<agov-darkmode
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
class="hidden sm:inline-block"
|
||||
data-aria_label='$text.get("darkModeSwitch.aria.label")'>
|
||||
</agov-darkmode>
|
||||
|
||||
<agov-mobile-menu
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,79 +16,73 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
"recovery_accessapp_auth.accessAppRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction1").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
${text.get("recovery_accessapp_auth.instruction2").replaceAll(
|
||||
"!!!ACCESS_APP_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('accessApp').value)")}
|
||||
</p>
|
||||
|
||||
<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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$text.get("mauth_usernameless.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
</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")
|
||||
$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">
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
$text.get("mauth_usernameless.banner.success")
|
||||
</p>
|
||||
</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")
|
||||
$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">
|
||||
|
@ -125,16 +118,16 @@
|
|||
<div class="accessAppInstructions flex bg-indigo-light rounded-xl p-4 mb-4 items-center dark:bg-purple-black">
|
||||
<img alt="" src="${login.appDataPath}/static/images/access-app.svg" class="h-12 mr-4">
|
||||
<p id="labelQRCodeInstructions" class="font-header text-h5 text-space-blue dark:text-white">
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
$text.get("mauth_usernameless.instructions")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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" 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
|
||||
|
@ -155,21 +148,20 @@
|
|||
data-value="EID"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.showQR")"
|
||||
"mauth_usernameless.showQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</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"
|
||||
data-id="EID"
|
||||
data-label="<i class='fa-regular fa-eye-slash align-middle text-xl text-indigo dark:text-lilac mr-2'></i>$text.get(
|
||||
"mauth_usernameless.hideQR")"
|
||||
"mauth_usernameless.hideQR")"
|
||||
data-type="button"
|
||||
data-fullwidth="true">
|
||||
</agov-button>
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,12 +13,12 @@
|
|||
</div>
|
||||
|
||||
<h4 id="modalTitle" class="font-header text-h4 text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
$text.get("recovery_check_code.noCodeAccess")
|
||||
</h4>
|
||||
|
||||
<div id="modalDescription" class="mb-20">
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white">
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
$text.get("recovery_check_code.noCodeAccessInstructions")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -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,31 +51,36 @@
|
|||
<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>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-6">
|
||||
<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_check_code.codeIncorrect")
|
||||
$text.get("recovery_check_code.codeIncorrect")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#end
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_check_code.instruction")
|
||||
$text.get("recovery_check_code.instruction")
|
||||
</p>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
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>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#parse("${templatePath}/header.vm")
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($PDFRecoveryTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','').replaceAll(
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
'^(https:\/\/[^\/]+\/).*$', '$1')))
|
||||
#set ($concat = "recovery/pdf?authToken=")
|
||||
#set ($PDFLink = "$PDFRecoveryTarget$concat$gui.getGuiElem('pdfAuthToken').value")
|
||||
|
||||
|
@ -15,19 +15,19 @@
|
|||
<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(
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
"recovery_code.newRecoveryCode")</h4>
|
||||
</div>
|
||||
|
||||
<div id="codeNotSeen"
|
||||
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("recovery_code.banner.error")
|
||||
$text.get("recovery_code.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
$text.get("recovery_code.instruction")
|
||||
$text.get("recovery_code.instruction")
|
||||
</p>
|
||||
|
||||
<div class="flex justify-between items-center relative mb-4 py-4 pr-4 pl-8 rounded-xl bg-indigo-light dark:bg-purple-black">
|
||||
|
@ -35,7 +35,7 @@
|
|||
<div>
|
||||
<p class="font-header text-h5 text-space-blue dark:text-white">$gui.getGuiElem('isiwebpasswd').value</p>
|
||||
<p class="font-body text-body-m text-space-blue dark:text-white">
|
||||
$text.get("recovery_code.validUntil")
|
||||
$text.get("recovery_code.validUntil")
|
||||
$gui.getGuiElem('validTil').value
|
||||
</p>
|
||||
|
||||
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
@ -16,24 +16,23 @@
|
|||
</div>
|
||||
|
||||
<h3 class="font-header text-h5 text-space-blue dark:text-white mb-4">$text.get(
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
"recovery_fidokey_auth.keyRegistered")</h3>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2">
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction1").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</p>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
${text.get("recovery_fidokey_auth.instruction2").replaceAll(
|
||||
"!!!SECURITY_KEY_NAME!!!", "$utils.escapeHtmlAttribute($gui.getGuiElem('securityKey').value)")}
|
||||
</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">
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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")
|
||||
$text.get("fido2_auth.cancel.fido")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -42,27 +41,27 @@
|
|||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">1</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
"recovery_fidokey_auth.fidoInstruction")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">2</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction2")</p>
|
||||
"fido2_auth.instruction2")</p>
|
||||
</div>
|
||||
|
||||
<div class="flex mb-2 items-center">
|
||||
<span class="font-header text-h6 bg-royal-light-blue dark:bg-blueish-black w-12 h-12 flex flex-none items-center justify-center rounded-full
|
||||
text-space-blue dark:text-white leading-none">3</span>
|
||||
<p class="font-body-semi text-body-l text-space-blue dark:text-white ml-4">$text.get(
|
||||
"fido2_auth.instruction3")</p>
|
||||
"fido2_auth.instruction3")</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -13,43 +18,43 @@
|
|||
<div class="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("recovery_intro_email.banner.info")
|
||||
$text.get("recovery_intro_email.banner.info")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
#set($error = $gui.getGuiElem("lasterror"))
|
||||
#if (($error.value && $error.value != ""))
|
||||
<div class="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.banner.error")
|
||||
$text.get("recovery_intro_email.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
#end
|
||||
#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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="mt-4 flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -60,108 +65,55 @@
|
|||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-2 sm:mb-8">
|
||||
<span class="font-body-semi">$text.get("recovery_intro_email.important")</span>
|
||||
$text.get("recovery_intro_email.process")
|
||||
$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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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">
|
||||
|
@ -14,12 +19,12 @@
|
|||
<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">
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
$text.get("recovery_intro_email_sent.banner.success")
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
|
|
@ -11,18 +11,18 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
$text.get("recovery_questionnaire_loginfactor.question")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_loginfactor.banner.error")
|
||||
$text.get("recovery_questionnaire_loginfactor.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
@ -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"
|
||||
|
|
|
@ -11,60 +11,60 @@
|
|||
</div>
|
||||
|
||||
<p class="font-body text-body-l text-space-blue dark:text-white mb-8">
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
$text.get("recovery_questionnaire_reason_selection.instruction")
|
||||
</p>
|
||||
|
||||
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-4 hidden"
|
||||
id="errorBanner">
|
||||
<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_questionnaire_reason_selection.banner.error")
|
||||
$text.get("recovery_questionnaire_reason_selection.banner.error")
|
||||
</p>
|
||||
</div>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<form id="answersForm" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
|
||||
accept-charset="UTF-8"
|
||||
class="flex flex-col flex-auto block ">
|
||||
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
#set ($previousAnswer = $gui.getGuiElem("question"))
|
||||
#if ($previousAnswer.value == "yes")
|
||||
#set ($answers = ["answer7", "answer8", "answer9", "answer10"])
|
||||
#elseif ($previousAnswer.value == "no")
|
||||
#set ($answers = ["answer1", "answer2", "answer3", "answer4", "answer5", "answer6"])
|
||||
#else
|
||||
#set ($answers = [])
|
||||
#end
|
||||
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
#if ($answers.size() > 0)
|
||||
#foreach ($answer in $answers)
|
||||
#set ($isYes = "yes")
|
||||
#set ($isNo = "no")
|
||||
#set ($dataValue = "")
|
||||
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
#if ($answer == "answer2" || $answer == "answer3" || $answer ==
|
||||
"answer4" || $answer == "answer5" || $answer == "answer6" || $answer == "answer8")
|
||||
#set ($dataValue = $isYes)
|
||||
#elseif ($answer == "answer1" || $answer == "answer7" || $answer == "answer9" || $answer == "answer10")
|
||||
#set ($dataValue = $isNo)
|
||||
#end
|
||||
<agov-radio-button data-text="$text.get("recovery_questionnaire_reason_selection.$answer")"
|
||||
data-value="$dataValue"
|
||||
data-id="$answer"
|
||||
data-name="continue"
|
||||
data-groupName="button-answers">
|
||||
</agov-radio-button>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
|
||||
<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
|
||||
|
|
|
@ -2,31 +2,43 @@
|
|||
|
||||
<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>
|
||||
|
||||
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
|
||||
<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"
|
||||
class="flex flex-col flex-auto block ">
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
#set ($emailInput = $gui.getGuiElem('email'))
|
||||
<agov-input
|
||||
class="mb-4 sm:mb-40"
|
||||
data-label="$text.get("general.email.address")"
|
||||
data-placeholder="$text.get("general.email")"
|
||||
data-id="email"
|
||||
data-name="userInputValue_prompt.email"
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
#if ($emailInput && $emailInput.value && $emailInput.value.length() > 0)
|
||||
data-value="$utils.escapeHtmlAttribute($emailInput.value)"
|
||||
#else
|
||||
#else
|
||||
data-value=""
|
||||
#end
|
||||
#end
|
||||
data-type="text"
|
||||
data-autofocus="true"
|
||||
data-left_icon="fa-envelope"
|
||||
|
@ -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>
|
||||
</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
|
||||
#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"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
Referrer-Policy: strict-origin-when-cross-origin
|
||||
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 -->
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue