new configuration version

This commit is contained in:
aca 2025-10-21 09:52:47 +00:00
parent 7a09d8c85c
commit 9075924699
640 changed files with 126461 additions and 11100 deletions

View File

@ -11,8 +11,8 @@ metadata:
spec:
type: "NevisAuth"
replicas: 1
version: "8.2505.5"
gitInitVersion: "1.4.0"
version: "8.2411.1"
gitInitVersion: "1.3.0"
runAsNonRoot: true
ports:
management: 9000
@ -39,14 +39,13 @@ spec:
management:
httpGet:
path: "/nevisauth/liveness"
initialDelaySeconds: 50
periodSeconds: 5
timeoutSeconds: 6
failureThreshold: 30
failureThreshold: 50
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-df95918aa8e4142dc04a89451ddf5014895f0608"
tag: "r-bf1e1a83227b7bc159e972c2afd30c158021bcea"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/auth"
credentials: "git-credentials"
keystores:

View File

@ -76,4 +76,3 @@ LOG.info("Event='IDENT-INITREQ', rpcode='${rpcode}', rpentity='${rpentity}', Sou
"Origin='${origin}'")
response.setResult('sendAuthnRequest')
return

View File

@ -14,7 +14,25 @@ cancel.button.label=Cancel
continue.button.label=Continue
darkModeSwitch.aria.label=Dark mode toggle
deputy.profile.label=(Deputy Profile)
error.account.exists=Account already exists. Continue to log in.
dimilar.confirm_identity.checkbox=I confirm this is my data
dimilar.confirm_identity.description=Please confirm the data below is yours in order to proceed:
dimilar.confirm_identity.error=Please confirm the data is yours to proceed.
dimilar.confirm_identity.link=If this is not your data, please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.confirm_identity.title=Confirm data
dimilar.select_onboarding.description=Welcome to AGOV. Please complete your onboarding by connecting to an existing or new AGOV account.
dimilar.select_onboarding.error-banner=Please select one option to continue
dimilar.select_onboarding.existing-account=Onboard with an existing AGOV account
dimilar.select_onboarding.proceeding=How would you like to proceed?
dimilar.select_onboarding.registering-account=Onboard with a new AGOV account
dimilar.select_onboarding.title=Hello !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=For support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.token_error.token_expired=Token expired or already used.
dimilar_onboarding.aborted.link=If you require support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.aborted.message=Onboarding aborted. Please try again.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.failed.message=Onboarding aborted. Please contact support at
dimilar_onboarding.successful.message=Onboarding with AGOV account successful. You are now able to log in to Dimilar at <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Register
error.saml.failed=Please close your browser and try again.
error_1=Please check your input.
error_10=Please select the correct user account.
@ -24,8 +42,16 @@ error_11=Please use another certficate or login with another credential type.
error_2=Please select another login name.
error_3=Your account will be locked if next authentication fails.
error_4=Your new password does not comply with the security policy. Please choose a different password.
error_403.description=You are not authorised to access this application.
error_403.title=Not authorised
error_404.description=The page you are looking for does not exist.
error_404.title=Page not found
error_5=Error in password confirmation.
error_50=The new password is too short.
error_500.description=There is currently an outage. We are working on it.
error_500.title=Something went wrong.
error_502.description=We are working on it. Please try again later.
error_502.title=Something went wrong.
error_55=The new password has to differ from old passwords.
error_6=Password change required.
error_7=Change of login ID required.
@ -60,11 +86,17 @@ general.cancel=Cancel
general.confirm=Confirm
general.contactSupport=Contact Support
general.continue=Continue
general.data.birthDate=Date of birth
general.data.birthDateFormat=DD.MM.YYYY
general.data.enrollmentNumber=Enrolment number (SSN/AHV number)
general.data.firstname=First name
general.data.lastname=Last name
general.edit=Edit
general.email=Email
general.email.address=Email address
general.entryCode=Code entry
general.fieldRequired=Field required
general.generalAccessApp=Access app
general.getStarted=Get started
general.goAGOVHelp=Go to AGOV help
general.goAccessApp=Login with AGOV access
@ -97,7 +129,7 @@ general.skip.content=Skip to main content
general.wrongPhoneNumber=Please enter a valid phone number
generic.auth.error.message=There was a service interruption. We are working on it.
generic.auth.error.next.steps=Please try again later. Please consult AGOV help if the problem persists.
generic.auth.error.subtitle=Something went wrong
generic.auth.error.subtitle=Something went wrong.
generic.auth.error.title=Error
info.logout.confirmation=Please confirm that you want to log out.
info.logout.reminder=Your session on this application has expired. Try again with a login.
@ -117,6 +149,8 @@ loainfo.later=Later
loainfo.startNow=Do you want to start the process now?
loainfo.startVerification=Start verification
loainfo.title=Verify your data
loggedout.description=You have been successfully logged out.
loggedout.title=Logged out
login.button.label=Login
logout.label=Logout
logout.text=You have successfully logged out.
@ -145,6 +179,16 @@ method.recovery.label=Recovery Codes
method.safeword.label=SafeWord
method.securid.label=SecurID
method.ticket.label=Ticket
onboard_linking_account_auth.fido_instructions=A physical security key offers a secure way to onboard with your account without having to use a phone.
onboard_linking_account_auth.instructions=Onboard with your AGOV account by scanning the QR code with your AGOV access app
onboarding.cancel-onboarding=Are you sure you want to cancel the onboarding process?
onboarding.cancel-onboarding-description=In order to proceed with an account recovery, you will have to cancel the onboarding process.
onboarding.cancel-proceed-recovery=Yes, cancel and proceed to recovery
onboarding.login-factor=Step 1 - Login factor
onboarding.with-agov.title=Onboard with AGOV account
onboarding_account.switchLinking=Switch to onboard with
onboarding_account_auth.loginSecurityKey=Start onboarding with security key
onboarding_account_auth.useSecurityKey=Use a security key to onboard with your AGOV account
op-admin.login=AGOV op admin
op-admin.login.intro.message=Login with your username and password
op-admin.login.loginid=LoginId
@ -273,7 +317,7 @@ recovery_questionnaire_no_recovery.instruction2=If you have several login factor
recovery_questionnaire_reason_selection.answer1=I have trouble logging in, even though I have my app / security key
recovery_questionnaire_reason_selection.answer10=I lost one of my login factors (AGOV access app or security key)
recovery_questionnaire_reason_selection.answer2=I was unable to finish my registration
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app, or it shows there are no accounts defined
recovery_questionnaire_reason_selection.answer4=I have lost my phone / security key
recovery_questionnaire_reason_selection.answer5=I have a new phone and forgot to transfer my AGOV access app
recovery_questionnaire_reason_selection.answer6=I forgot my PIN for the AGOV access app
@ -286,17 +330,16 @@ recovery_start_info.banner.warning=You will not be able to use your account unti
recovery_start_info.instruction=During the recovery process you will register a new login factor. If your account contains any verified information you might also have to go through a verification process to finish the recovery.
recovery_start_info.title=You are about to start the recovery process
reject.button.label=Deny
signup.button.label=Signup
skip.button.label=Skip
submit.button.label=Submit
tan.sent=Please enter the security code which has been sent to your mobile phone.
timeout.description=Your session has timed out. Please close this window and try logging in again.
timeout.title=Session expired
title.login=Login
title.logout=Logout
title.logout.confirmation=Logout
title.logout.reminder=Logout
title.oauth.consent=Client Authorization
title.saml.failed=Error
title.signup=Create account
title.timeout.page=Logout
user_input.invalid.email=Please enter a valid email address
user_input.invalid.email.required=Field required

View File

@ -14,7 +14,25 @@ cancel.button.label=Abbrechen
continue.button.label=Weiter
darkModeSwitch.aria.label=Dark-Mode-Schalter
deputy.profile.label=(Profil Stellvertreter)
error.account.exists=Konto existiert bereits. Melden Sie sich an.
dimilar.confirm_identity.checkbox=Ich best&auml;tige, dass dies meine Angaben sind
dimilar.confirm_identity.description=Bitte best&auml;tigen Sie, dass die folgenden Angaben Ihnen geh&ouml;ren, um fortzufahren:
dimilar.confirm_identity.error=Bitte best&auml;tigen Sie, dass die Angaben Ihnen geh&ouml;ren, um fortzufahren.
dimilar.confirm_identity.link=Wenn diese nicht Ihre Angaben sind, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.confirm_identity.title=Angaben best&auml;tigen
dimilar.select_onboarding.description=Willkommen bei AGOV. Bitte komplettieren Sie Ihr Onboarding, indem Sie ein bestehendes oder neues AGOV Konto verbinden.
dimilar.select_onboarding.error-banner=Bitte w&auml;hlen Sie eine Option aus, um fortzufahren
dimilar.select_onboarding.existing-account=Onboarding mit einem existierenden AGOV-Konto
dimilar.select_onboarding.proceeding=Wie m&ouml;chten Sie fortfahren?
dimilar.select_onboarding.registering-account=Onboarding mit einem neuen AGOV-Konto
dimilar.select_onboarding.title=Hallo !!!FIRSTNAME!!! !!!LASTNAME!!!
dimilar.token_error.support=Um Hilfe zu erhalten, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar.token_error.token_expired=Token abgelaufen oder bereits verwendet.
dimilar_onboarding.aborted.link=Wenn Sie Hilfe ben&ouml;tigen, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.aborted.message=Onboarding abgebrochen. Bitte versuchen Sie es erneut.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar_onboarding.failed.message=Onboarding abgebrochen. Bitte kontaktieren Sie den Support unter
dimilar_onboarding.successful.message=Onboarding mit AGOV-Konto erfolgreich. Sie k&ouml;nnen sich nun bei Dimilar unter <a class='link' href='https://www.armee.ch/de/dim' target='_blank'>https://www.armee.ch/de/dim</a> einloggen.
dimilar_onboarding.title=Registrieren
error.saml.failed=Bitte schliessen Sie Ihren Browser und versuchen Sie es erneut.
error_1=Bitte &uuml;berpr&uuml;fen Sie Ihre Eingaben.
error_10=Bitte w&auml;hlen Sie das richtige Benutzerkonto aus.
@ -24,8 +42,16 @@ error_11=Bitte verwenden Sie ein anderes Zertifikat oder melden Sie sich mit ein
error_2=Bitte w&auml;hlen Sie einen anderen Login-Namen.
error_3=Wenn die n&auml;chste Authentifizierung fehlschl&auml;gt, wird Ihr Konto gesperrt.
error_4=Ihr neues Passwort verst&ouml;sst gegen die Sicherheitsrichtlinien. Bitte w&auml;hlen Sie ein anderes Passwort.
error_403.description=Sie sind nicht berechtigt, auf diese Anwendung zuzugreifen.
error_403.title=Nicht zugelassen
error_404.description=Die von Ihnen gesuchte Seite existiert nicht.
error_404.title=Seite nicht gefunden
error_5=Fehler bei der Passwortbest&auml;tigung.
error_50=Das neue Passwort ist zu kurz.
error_500.description=Zurzeit liegt eine St&ouml;rung vor. Wir arbeiten daran.
error_500.title=Etwas ist schiefgegangen.
error_502.description=Wir arbeiten daran. Bitte versuchen Sie es sp&auml;ter noch einmal.
error_502.title=Etwas ist schiefgegangen.
error_55=Das neue Passwort muss sich von alten Passw&ouml;rtern unterscheiden.
error_6=Passwort&auml;nderung erforderlich.
error_7=&Auml;nderung der Login-ID erforderlich.
@ -60,11 +86,17 @@ general.cancel=Abbrechen
general.confirm=Best&auml;tigen
general.contactSupport=Support kontaktieren
general.continue=Weiter
general.data.birthDate=Geburtsdatum
general.data.birthDateFormat=TT.MM.JJJJ
general.data.enrollmentNumber=AHV-Nummer (Dienstmanager)
general.data.firstname=Vorname
general.data.lastname=Nachname
general.edit=&Auml;ndern
general.email=E-Mail
general.email.address=E-Mail-Adresse
general.entryCode=Code-Eingabe
general.fieldRequired=Erforderliches Feld
general.generalAccessApp=Access App
general.getStarted=Los geht's
general.goAGOVHelp=Weiter zur AGOV help
general.goAccessApp=Login mit AGOV access
@ -97,7 +129,7 @@ general.skip.content=Direkt zum Hauptteil
general.wrongPhoneNumber=Bitte geben Sie eine g&uuml;ltige Telefonnummer ein
generic.auth.error.message=Es gab eine Service-Unterbrechung. Wir arbeiten daran.
generic.auth.error.next.steps=Versuchen Sie es bitte sp&auml;ter noch einmal. Bitte besuchen Sie die AGOV-Hilfe, wenn das Problem weiterhin besteht.
generic.auth.error.subtitle=Etwas ist schiefgegangen
generic.auth.error.subtitle=Etwas ist schiefgegangen.
generic.auth.error.title=Fehler
info.logout.confirmation=Bitte best&auml;tigen Sie, dass Sie sich abmelden m&ouml;chten.
info.logout.reminder=Ihre Session ist auf dieser Applikation abgelaufen. Versuchen Sie es nochmals mit einem Login.
@ -117,6 +149,8 @@ loainfo.later=Sp&auml;ter
loainfo.startNow=M&ouml;chten Sie den Prozess jetzt starten?
loainfo.startVerification=Verifikation starten
loainfo.title=Verifizieren Sie Ihre Daten
loggedout.description=Sie haben sich erfolgreich ausgeloggt.
loggedout.title=Ausgeloggt
login.button.label=Login
logout.label=Logout
logout.text=Sie haben sich erfolgreich abgemeldet.
@ -145,6 +179,16 @@ method.recovery.label=Wiederherstellungscodes
method.safeword.label=SafeWord
method.securid.label=SecurID
method.ticket.label=Ticket
onboard_linking_account_auth.fido_instructions=Ein physischer Sicherheitsschl&uuml;ssel bietet eine sichere M&ouml;glichkeit, das Onboarding mit Ihrem Konto ohne Telefon durchzuf&uuml;hren.
onboard_linking_account_auth.instructions=F&uuml;hren Sie das Onboarding mit Ihrem AGOV-Konto durch, indem Sie den QR-Code mit Ihrer AGOV access App scannen
onboarding.cancel-onboarding=Sind Sie sicher, dass Sie den Onboarding-Prozess abbrechen m&ouml;chten?
onboarding.cancel-onboarding-description=Um mit der Kontowiederherstellung fortzufahren, m&uuml;ssen Sie den Onboarding-Prozess abbrechen.
onboarding.cancel-proceed-recovery=Ja, abbrechen und mit der Wiederherstellung fortfahren
onboarding.login-factor=Schritt 1 &ndash; Login-Faktor
onboarding.with-agov.title=Onboarding mit AGOV-Konto
onboarding_account.switchLinking=Wechseln zum Onboarding mit
onboarding_account_auth.loginSecurityKey=Onboarding mit Sicherheitsschl&uuml;ssel starten
onboarding_account_auth.useSecurityKey=Benutzen Sie einen Sicherheitsschl&uuml;ssel, um das Onboarding mit Ihrem AGOV-Konto durchzuf&uuml;hren
op-admin.login=AGOV-op-Admin
op-admin.login.intro.message=Login mit Ihrem Benutzernamen und Passwort
op-admin.login.loginid=LoginID
@ -273,7 +317,7 @@ recovery_questionnaire_no_recovery.instruction2=Wenn Sie mehrere Loginfaktoren r
recovery_questionnaire_reason_selection.answer1=Ich habe Probleme mich anzumelden, obwohl ich meine App / meinen Sicherheitsschl&uuml;ssel habe
recovery_questionnaire_reason_selection.answer10=Ich habe einen meiner Loginfaktoren verloren (AGOV access App oder Sicherheitsschl&uuml;ssel)
recovery_questionnaire_reason_selection.answer2=Ich konnte meine Registrierung nicht abschliessen
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt, oder es wird angezeigt, dass keine Konten definiert sind
recovery_questionnaire_reason_selection.answer4=Ich habe mein Telefon / Sicherheitsschl&uuml;ssel verloren
recovery_questionnaire_reason_selection.answer5=Ich habe ein neues Telefon und habe vergessen, meine AGOV access App zu &uuml;bertragen
recovery_questionnaire_reason_selection.answer6=Ich habe die PIN f&uuml;r meine AGOV access App vergessen
@ -286,17 +330,16 @@ recovery_start_info.banner.warning=Sie k&ouml;nnen Ihr Konto nicht nutzen, bis d
recovery_start_info.instruction=W&auml;hrend des Wiederherstellungsprozesses werden Sie einen neuen Login-Faktor registrieren. Wenn Ihr Konto verifizierte Informationen enth&auml;lt, m&uuml;ssen Sie zum Abschluss des Wiederherstellungsprozesses m&ouml;glicherweise auch einen Verifikationsprozess durchlaufen.
recovery_start_info.title=Sie sind dabei, den Wiederherstellungsprozess zu starten
reject.button.label=Ablehnen
signup.button.label=Registrieren
skip.button.label=&Uuml;berspringen
submit.button.label=Senden
tan.sent=Bitte erfassen Sie den Sicherheitscode, welcher an Ihr Mobiltelefon gesendet wurde.
timeout.description=Ihre Sitzung ist abgelaufen. Bitte schliessen Sie dieses Fenster und versuchen Sie erneut, sich einzuloggen.
timeout.title=Sitzung abgelaufen
title.login=Login
title.logout=Logout
title.logout.confirmation=Logout
title.logout.reminder=Logout
title.oauth.consent=Client Authorisierung
title.saml.failed=Error
title.signup=Konto erstellen
title.timeout.page=Logout
user_input.invalid.email=Bitte geben Sie eine g&uuml;ltige E-Mail ein
user_input.invalid.email.required=Erforderliches Feld

View File

@ -14,7 +14,25 @@ cancel.button.label=Cancel
continue.button.label=Continue
darkModeSwitch.aria.label=Dark mode toggle
deputy.profile.label=(Deputy Profile)
error.account.exists=Account already exists. Continue to log in.
dimilar.confirm_identity.checkbox=I confirm this is my data
dimilar.confirm_identity.description=Please confirm the data below is yours in order to proceed:
dimilar.confirm_identity.error=Please confirm the data is yours to proceed.
dimilar.confirm_identity.link=If this is not your data, please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.confirm_identity.title=Confirm data
dimilar.select_onboarding.description=Welcome to AGOV. Please complete your onboarding by connecting to an existing or new AGOV account.
dimilar.select_onboarding.error-banner=Please select one option to continue
dimilar.select_onboarding.existing-account=Onboard with an existing AGOV account
dimilar.select_onboarding.proceeding=How would you like to proceed?
dimilar.select_onboarding.registering-account=Onboard with a new AGOV account
dimilar.select_onboarding.title=Hello !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=For support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.token_error.token_expired=Token expired or already used.
dimilar_onboarding.aborted.link=If you require support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.aborted.message=Onboarding aborted. Please try again.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.failed.message=Onboarding aborted. Please contact support at
dimilar_onboarding.successful.message=Onboarding with AGOV account successful. You are now able to log in to Dimilar at <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Register
error.saml.failed=Please close your browser and try again.
error_1=Please check your input.
error_10=Please select the correct user account.
@ -24,8 +42,16 @@ error_11=Please use another certficate or login with another credential type.
error_2=Please select another login name.
error_3=Your account will be locked if next authentication fails.
error_4=Your new password does not comply with the security policy. Please choose a different password.
error_403.description=You are not authorised to access this application.
error_403.title=Not authorised
error_404.description=The page you are looking for does not exist.
error_404.title=Page not found
error_5=Error in password confirmation.
error_50=The new password is too short.
error_500.description=There is currently an outage. We are working on it.
error_500.title=Something went wrong.
error_502.description=We are working on it. Please try again later.
error_502.title=Something went wrong.
error_55=The new password has to differ from old passwords.
error_6=Password change required.
error_7=Change of login ID required.
@ -60,11 +86,17 @@ general.cancel=Cancel
general.confirm=Confirm
general.contactSupport=Contact Support
general.continue=Continue
general.data.birthDate=Date of birth
general.data.birthDateFormat=DD.MM.YYYY
general.data.enrollmentNumber=Enrolment number (SSN/AHV number)
general.data.firstname=First name
general.data.lastname=Last name
general.edit=Edit
general.email=Email
general.email.address=Email address
general.entryCode=Code entry
general.fieldRequired=Field required
general.generalAccessApp=Access app
general.getStarted=Get started
general.goAGOVHelp=Go to AGOV help
general.goAccessApp=Login with AGOV access
@ -97,7 +129,7 @@ general.skip.content=Skip to main content
general.wrongPhoneNumber=Please enter a valid phone number
generic.auth.error.message=There was a service interruption. We are working on it.
generic.auth.error.next.steps=Please try again later. Please consult AGOV help if the problem persists.
generic.auth.error.subtitle=Something went wrong
generic.auth.error.subtitle=Something went wrong.
generic.auth.error.title=Error
info.logout.confirmation=Please confirm that you want to log out.
info.logout.reminder=Your session on this application has expired. Try again with a login.
@ -117,6 +149,8 @@ loainfo.later=Later
loainfo.startNow=Do you want to start the process now?
loainfo.startVerification=Start verification
loainfo.title=Verify your data
loggedout.description=You have been successfully logged out.
loggedout.title=Logged out
login.button.label=Login
logout.label=Logout
logout.text=You have successfully logged out.
@ -145,6 +179,16 @@ method.recovery.label=Recovery Codes
method.safeword.label=SafeWord
method.securid.label=SecurID
method.ticket.label=Ticket
onboard_linking_account_auth.fido_instructions=A physical security key offers a secure way to onboard with your account without having to use a phone.
onboard_linking_account_auth.instructions=Onboard with your AGOV account by scanning the QR code with your AGOV access app
onboarding.cancel-onboarding=Are you sure you want to cancel the onboarding process?
onboarding.cancel-onboarding-description=In order to proceed with an account recovery, you will have to cancel the onboarding process.
onboarding.cancel-proceed-recovery=Yes, cancel and proceed to recovery
onboarding.login-factor=Step 1 - Login factor
onboarding.with-agov.title=Onboard with AGOV account
onboarding_account.switchLinking=Switch to onboard with
onboarding_account_auth.loginSecurityKey=Start onboarding with security key
onboarding_account_auth.useSecurityKey=Use a security key to onboard with your AGOV account
op-admin.login=AGOV op admin
op-admin.login.intro.message=Login with your username and password
op-admin.login.loginid=LoginId
@ -273,7 +317,7 @@ recovery_questionnaire_no_recovery.instruction2=If you have several login factor
recovery_questionnaire_reason_selection.answer1=I have trouble logging in, even though I have my app / security key
recovery_questionnaire_reason_selection.answer10=I lost one of my login factors (AGOV access app or security key)
recovery_questionnaire_reason_selection.answer2=I was unable to finish my registration
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app, or it shows there are no accounts defined
recovery_questionnaire_reason_selection.answer4=I have lost my phone / security key
recovery_questionnaire_reason_selection.answer5=I have a new phone and forgot to transfer my AGOV access app
recovery_questionnaire_reason_selection.answer6=I forgot my PIN for the AGOV access app
@ -286,17 +330,16 @@ recovery_start_info.banner.warning=You will not be able to use your account unti
recovery_start_info.instruction=During the recovery process you will register a new login factor. If your account contains any verified information you might also have to go through a verification process to finish the recovery.
recovery_start_info.title=You are about to start the recovery process
reject.button.label=Deny
signup.button.label=Signup
skip.button.label=Skip
submit.button.label=Submit
tan.sent=Please enter the security code which has been sent to your mobile phone.
timeout.description=Your session has timed out. Please close this window and try logging in again.
timeout.title=Session expired
title.login=Login
title.logout=Logout
title.logout.confirmation=Logout
title.logout.reminder=Logout
title.oauth.consent=Client Authorization
title.saml.failed=Error
title.signup=Create account
title.timeout.page=Logout
user_input.invalid.email=Please enter a valid email address
user_input.invalid.email.required=Field required

View File

@ -14,7 +14,25 @@ cancel.button.label=Abandonner
continue.button.label=Continuer
darkModeSwitch.aria.label=Activer l'apparence sombre
deputy.profile.label=(Profil du suppl&eacute;ant)
error.account.exists=Le compte existe d&#233;j&#224;. Continuez &#224; vous connecter.
dimilar.confirm_identity.checkbox=Je confirme que ce sont mes donn&eacute;es
dimilar.confirm_identity.description=Veuillez confirmer que les donn&eacute;es ci-dessous vous appartiennent afin de poursuivre :
dimilar.confirm_identity.error=Veuillez confirmer que les donn&eacute;es vous appartiennent afin de poursuivre.
dimilar.confirm_identity.link=Si ces donn&eacute;es ne sont pas les v&ocirc;tres, veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dim' target='_blank'>https://agov.ch/fr/dim</a>.
dimilar.confirm_identity.title=Confirmer les donn&eacute;es
dimilar.select_onboarding.description=Bienvenue sur AGOV. Veuillez terminer votre int&eacute;gration en vous connectant &agrave; un compte AGOV existant ou en cr&eacute;ant un nouveau compte.
dimilar.select_onboarding.error-banner=Veuillez s&eacute;lectionner une option pour continuer
dimilar.select_onboarding.existing-account=Se connecter avec un compte AGOV existant
dimilar.select_onboarding.proceeding=Comment voulez-vous proc&eacute;der ?
dimilar.select_onboarding.registering-account=Se connecter avec un nouveau compte AGOV
dimilar.select_onboarding.title=Bonjour !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=Si vous avez besoin d'aide veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar.token_error.token_expired=Jeton expir&eacute; ou d&eacute;j&agrave; utilis&eacute;.
dimilar_onboarding.aborted.link=Si vous avez besoin d'aide veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar_onboarding.aborted.message=Le processus d&rsquo;int&eacute;gration a &eacute;t&eacute; annul&eacute;. Veuillez r&eacute;essayer.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar_onboarding.failed.message=Le processus d'int&eacute;gration a &eacute;t&eacute; annul&eacute;. Veuillez contacter le service de support &agrave;
dimilar_onboarding.successful.message=L&rsquo;int&eacute;gration avec le compte AGOV a r&eacute;ussi. Vous pouvez maintenant vous connecter sur le gestionnaire de service <a class='link' href='https://www.armee.ch/fr/dimf' target='_blank'>https://www.armee.ch/fr/dimf</a>.
dimilar_onboarding.title=Cr&eacute;er un compte
error.saml.failed=Fermez votre navigateur et r;eacute;essayez.
error_1=Veuillez v&eacute;rifier votre saisie.
error_10=Veuillez s&eacute;lectionner le compte d&rsquo;utilisateur correct.
@ -24,8 +42,16 @@ error_11=Veuillez utiliser un autre certificat ou vous connecter au moyen d&rsqu
error_2=Veuillez s&eacute;lectionner un autre nom d&rsquo;utilisateur.
error_3=Votre compte sera bloqu&eacute; si la prochaine tentative d&rsquo;authentification &eacute;choue.
error_4=Votre nouveau mot de passe n&rsquo;est pas conforme &agrave; la politique de s&eacute;curit&eacute;. Veuillez choisir un autre mot de passe.
error_403.description=Vous n&rsquo;&ecirc;tes pas autoris&eacute; &agrave; acc&eacute;der &agrave; cette ressource.
error_403.title=Pas autoris&eacute;
error_404.description=La page que vous recherchez n'existe pas.
error_404.title=Page introuvable
error_5=Erreur de confirmation du mot de passe
error_50=Le nouveau mot de passe est trop court.
error_500.description=Un incident est survenu. Nous mettons tout en œuvre pour le r&eacute;soudre.
error_500.title=Un probl&egrave;me s&rsquo;est produit.
error_502.description=Nous y travaillons. Veuillez r&eacute;essayer plus tard.
error_502.title=Un probl&egrave;me s&rsquo;est produit.
error_55=Le nouveau mot de passe doit &ecirc;tre diff&eacute;rent des pr&eacute;c&eacute;dents.
error_6=Changement de mot de passe requis.
error_7=Changement d&rsquo;identifiant de connexion requis.
@ -60,11 +86,17 @@ general.cancel=Annuler
general.confirm=Confirmer
general.contactSupport=Contacter le service d'assistance
general.continue=Continuer
general.data.birthDate=Date de naissance
general.data.birthDateFormat=JJ.MM.AAAA
general.data.enrollmentNumber=Num&eacute;ro AVS (Gestionnaire de service)
general.data.firstname=Pr&eacute;nom
general.data.lastname=Nom
general.edit=Editer
general.email=E-mail
general.email.address=Adresse e-mail
general.entryCode=Entrer le code
general.fieldRequired=Champ requis
general.generalAccessApp=Access app
general.getStarted=D&eacute;marrer
general.goAGOVHelp=Rendez-vous sur AGOV help
general.goAccessApp=Login avec AGOV access
@ -97,7 +129,7 @@ general.skip.content=Passer au contenu principal
general.wrongPhoneNumber=Veuillez saisir un num&eacute;ro de t&eacute;l&eacute;phone valable
generic.auth.error.message=Une interruption de service s&rsquo;est produite. Nous nous employons &agrave; r&eacute;soudre le probl&egrave;me.
generic.auth.error.next.steps=Veuillez r&eacute;essayer plus tard. Veuillez vous rendre sur AGOV help si le probl&egrave;me persiste.
generic.auth.error.subtitle=Un probl&egrave;me s&rsquo;est produit
generic.auth.error.subtitle=Un probl&egrave;me s&rsquo;est produit.
generic.auth.error.title=Erreur
info.logout.confirmation=Veuillez confirmer que vous souhaitez vous d&eacute;connecter.
info.logout.reminder=Votre session sur cette application a expir&eacute;e. Essayez encore avec un login.
@ -117,6 +149,8 @@ loainfo.later=Plus tard
loainfo.startNow=Voulez-vous commencer le processus maintenant?
loainfo.startVerification=D&eacute;marrer la v&eacute;rification
loainfo.title=V&eacute;rifiez vos donn&eacute;es
loggedout.description=Vous vous &ecirc;tes d&eacute;connect&eacute; avec succ&egrave;s.
loggedout.title=D&eacute;connect&eacute;
login.button.label=Login
logout.label=Logout
logout.text=Au revoir
@ -145,6 +179,16 @@ method.recovery.label=Codes de r&eacute;cup&eacute;ration
method.safeword.label=SafeWord
method.securid.label=SecurID
method.ticket.label=Ticket
onboard_linking_account_auth.fido_instructions=Une cl&eacute; de s&eacute;curit&eacute; physique offre un moyen s&ucirc;r de se connecter &agrave; son compte sans devoir utiliser son t&eacute;l&eacute;phone.
onboard_linking_account_auth.instructions=Connectez-vous avec votre compte AGOV en scannant le code QR avec votre application AGOV access
onboarding.cancel-onboarding=&Ecirc;tes-vous s&ucirc;r de vouloir annuler la proc&eacute;dure d'int&eacute;gration ?
onboarding.cancel-onboarding-description=Pour proc&eacute;der &agrave; la r&eacute;cup&eacute;ration de votre compte, vous devrez annuler le processus d&rsquo;int&eacute;gration.
onboarding.cancel-proceed-recovery=Oui, annuler et proc&eacute;der &agrave; la r&eacute;cup&eacute;ration
onboarding.login-factor=&Eacute;tape 1 - Facteur de connexion
onboarding.with-agov.title=Se connecter avec un compte AGOV
onboarding_account.switchLinking=Passer &agrave; l&rsquo;int&eacute;gration avec
onboarding_account_auth.loginSecurityKey=Commencez l'int&eacute;gration avec une cl&eacute; de s&eacute;curit&eacute;
onboarding_account_auth.useSecurityKey=Utilisez une cl&eacute; de s&eacute;curit&eacute; pour se connecter avec votre compte AGOV
op-admin.login=Administration de l&rsquo;acc&egrave;s &agrave; AGOV op
op-admin.login.intro.message=Connectez-vous avec votre nom d&rsquo;utilisateur et votre mot de passe
op-admin.login.loginid=Identifiant de connexion
@ -273,7 +317,7 @@ recovery_questionnaire_no_recovery.instruction2=Si vous avez enregistr&eacute; p
recovery_questionnaire_reason_selection.answer1=Je n'arrive pas &agrave; me connecter, m&ecirc;me si j'ai mon application / ma cl&eacute; de s&eacute;curit&eacute;
recovery_questionnaire_reason_selection.answer10=J'ai perdu l'un de mes facteurs d'authentification (application AGOV access ou cl&eacute; de s&eacute;curit&eacute;)
recovery_questionnaire_reason_selection.answer2=Je n'ai pas pu terminer mon inscription
recovery_questionnaire_reason_selection.answer3=J'ai supprim&eacute;, r&eacute;install&eacute; ou r&eacute;initialis&eacute; mon application AGOV access
recovery_questionnaire_reason_selection.answer3=J'ai supprim&eacute;, r&eacute;install&eacute;, ou r&eacute;initialis&eacute; mon application AGOV access, ou cela indique qu'aucun compte n'est d&eacute;fini
recovery_questionnaire_reason_selection.answer4=J'ai perdu mon t&eacute;l&eacute;phone / cl&eacute; de s&eacute;curit&eacute;
recovery_questionnaire_reason_selection.answer5=J'ai un nouveau t&eacute;l&eacute;phone et j'ai oubli&eacute; de transf&eacute;rer mon application AGOV access
recovery_questionnaire_reason_selection.answer6=J'ai oubli&eacute; mon PIN pour l'application AGOV access
@ -286,17 +330,16 @@ recovery_start_info.banner.warning=Vous ne pourrez pas utiliser votre compte tan
recovery_start_info.instruction=Le processus de r&eacute;cup&eacute;ration n&eacute;cessitera l&rsquo;enregistrement d&rsquo;un nouveau facteur d&rsquo;authentification. Si votre compte contient des informations ayant d&eacute;j&agrave; &eacute;t&eacute; v&eacute;rifi&eacute;es, il se peut que vous deviez les faire v&eacute;rifier &agrave; nouveau pour terminer la r&eacute;cup&eacute;ration.
recovery_start_info.title=Vous &ecirc;tes sur le point de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
reject.button.label=Refuser
signup.button.label=Inscription
skip.button.label=Passer
submit.button.label=Envoyer
tan.sent=Veuillez saisir le code de s&eacute;curit&eacute; que vous avez re&ccedil;u au votre t&eacute;l&eacute;phone mobile.
timeout.description=Votre session a expir&eacute;. Veuillez fermer cette fen&ecirc;tre et essayer de vous reconnecter.
timeout.title=Session expir&eacute;e
title.login=Login
title.logout=Logout
title.logout.confirmation=Logout
title.logout.reminder=Logout
title.oauth.consent=Autorisation du client
title.saml.failed=Error
title.signup=Cr&#233;er un compte
title.timeout.page=Logout
user_input.invalid.email=Veuillez saisir un e-mail valable.
user_input.invalid.email.required=Champ requis

View File

@ -1,5 +1,5 @@
accept.button.label=Accetta
accept.button.label=Accettare
agov-ident.done.message=Il vostro conto AGOV &egrave; ora pronto per l'uso. Pu&ograve; chiudere questa pagina.
agov-ident.done.title=Finito
agov-ident.failed.instruction=Per completare la registrazione &egrave; necessario disporre di un account AGOV e superare la verifica dei dati suggerita. Riprova.
@ -10,11 +10,29 @@ agov-ident.invalid-url.message=Il link non pu&ograve; essere elaborato
agov-ident.invalid-url.title=Link non valido
agov-ident.onboarding=Registrazione e verifica
agov-ident.retry=Riprova
cancel.button.label=Annulla
cancel.button.label=Abortire
continue.button.label=Continua
darkModeSwitch.aria.label=Attivare la modalit&agrave; scura
deputy.profile.label=(profilo del delegato)
error.account.exists=L'account esiste gi<67>. Prosegui col login.
dimilar.confirm_identity.checkbox=Confermo che questi sono i miei dati
dimilar.confirm_identity.description=Confermi che i dati riportati di seguito le appartengono per poter procedere:
dimilar.confirm_identity.error=Confermi che i dati sono i suoi per poter procedere.
dimilar.confirm_identity.link=Se questi non sono i suoi dati, visiti <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.confirm_identity.title=Confermare i dati
dimilar.select_onboarding.description=Benvenuto in AGOV. Completi la procedura di registrazione collegando un account AGOV esistente o creandone uno nuovo.
dimilar.select_onboarding.error-banner=Selezioni un&rsquo;opzione per continuare
dimilar.select_onboarding.existing-account=Proceda con un account AGOV esistente
dimilar.select_onboarding.proceeding=Come desidera procedere?
dimilar.select_onboarding.registering-account=Proceda con un nuovo account AGOV
dimilar.select_onboarding.title=Buongiorno !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=Per assistenza visita <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.token_error.token_expired=Token scaduto o gi&agrave; utilizzato.
dimilar_onboarding.aborted.link=Se ha bisogno di assistenza, visiti <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.aborted.message=La procedura di registrazione &egrave; stata interrotta. Provi di nuovo.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.failed.message=La procedura di registrazione &egrave; stata interrotta. Contatti il supporto al
dimilar_onboarding.successful.message=Registrazione con l&rsquo;account AGOV completata con successo. Ora pu&ograve; accedere alla Gestione dei servizi su <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Registrarsi
error.saml.failed=Chiudi il browser e riprova.
error_1=Verificare i dati inseriti.
error_10=Scegliere l&rsquo;account utente corretto.
@ -24,8 +42,16 @@ error_11=Utilizzare un altro certificato o accedere con altre credenziali.
error_2=Selezionare un altro nome di accesso.
error_3=Se la prossima autenticazione fallisce, l&rsquo;account sar&agrave; bloccato.
error_4=La nuova password non rispetta le norme di sicurezza. Scegliere un&rsquo;altra password.
error_403.description=Accesso non autorizzato a questa risorsa.
error_403.title=Non &egrave; autorizatto
error_404.description=La pagina che state cercando non esiste.
error_404.title=Pagina non trovata
error_5=Errore nella conferma della password.
error_50=La nuova password &egrave; troppo corta.
error_500.description=Al momento si &egrave; verificato un disservizio. Stiamo intervenendo.
error_500.title=Qualcosa non ha funzionato.
error_502.description=Stiamo intervenendo. Riprovi pi&ugrave; tardi.
error_502.title=Qualcosa non ha funzionato.
error_55=La nuova password deve differire da quelle precedenti.
error_6=&Egrave; richiesta la modifica della password.
error_7=&Egrave; richiesta la modifica dell&rsquo;ID di accesso.
@ -60,11 +86,17 @@ general.cancel=Annullare
general.confirm=Confermare
general.contactSupport=Contattare il supporto
general.continue=Continuare
general.data.birthDate=Data di nascita
general.data.birthDateFormat=GG.MM.AAAA
general.data.enrollmentNumber=Numero AVS (Gestione dei servizi)
general.data.firstname=Nome
general.data.lastname=Cognome
general.edit=Modificare
general.email=e-mail
general.email.address=Indirizzo e-mail
general.entryCode=Codice
general.fieldRequired=Campo obbligatorio
general.generalAccessApp=App AGOV access
general.getStarted=Iniziare
general.goAGOVHelp=Vai ad AGOV help
general.goAccessApp=Login con AGOV access
@ -117,6 +149,8 @@ loainfo.later=Pi&ugrave; tardi
loainfo.startNow=Vuole iniziare il processo ora?
loainfo.startVerification=Inizi la verificazione
loainfo.title=Verificare i dati.
loggedout.description=Disconnessione effettuata con successo.
loggedout.title=Disconnessione eseguita
login.button.label=Login
logout.label=Logout
logout.text=&Egrave; uscito con successo.
@ -145,6 +179,16 @@ method.recovery.label=Codici di ripristino
method.safeword.label=SafeWord
method.securid.label=SecurID
method.ticket.label=Ticket
onboard_linking_account_auth.fido_instructions=Una chiave di sicurezza fisica permette di accedere in modo sicuro senza utilizzare un telefono.
onboard_linking_account_auth.instructions=Proceda con il suo account AGOV scansionando il codice QR con l&rsquo;app AGOV access
onboarding.cancel-onboarding=Sei sicuro di voler annullare la registrazione?
onboarding.cancel-onboarding-description=Per procedere con il recupero dell&rsquo;account, &egrave; necessario annullare la registrazione.
onboarding.cancel-proceed-recovery=S&igrave;, annulla e procedi con il recupero
onboarding.login-factor=Passaggio 1 &ndash; Fattore di login
onboarding.with-agov.title=Proceda con l&rsquo;account AGOV
onboarding_account.switchLinking=Passa alla registrazione con
onboarding_account_auth.loginSecurityKey=Inizia la registrazione con la chiave di sicurezza
onboarding_account_auth.useSecurityKey=Utilizzi una chiave di sicurezza per procedere con il suo account AGOV
op-admin.login=AGOV op admin
op-admin.login.intro.message=Accedere con nome utente e password
op-admin.login.loginid=ID di accesso
@ -273,7 +317,7 @@ recovery_questionnaire_no_recovery.instruction2=Se ha registrato pi&ugrave; fatt
recovery_questionnaire_reason_selection.answer1=Ho problemi ad accedere, anche se ho la mia app/chiave di sicurezza
recovery_questionnaire_reason_selection.answer10=Ho perso uno dei miei fattori di accesso (app AGOV access o chiave di sicurezza)
recovery_questionnaire_reason_selection.answer2=Non sono riuscito a completare la registrazione
recovery_questionnaire_reason_selection.answer3=Ho eliminato, reinstallato o reimpostato la mia app AGOV access
recovery_questionnaire_reason_selection.answer3=Ho eliminato, reinstallato o reimpostato l&rsquo;app AGOV access, oppure risulta che non ci sono account definiti
recovery_questionnaire_reason_selection.answer4=Ho perso il telefono/la chiave di sicurezza
recovery_questionnaire_reason_selection.answer5=Ho un nuovo telefono e ho dimenticato di trasferire la mia app AGOV access
recovery_questionnaire_reason_selection.answer6=Ho dimenticato il PIN dell'app AGOV access
@ -285,18 +329,17 @@ recovery_questionnaire_reason_selection.instruction=Selezioni il motivo per cui
recovery_start_info.banner.warning=Non &egrave; possibile utilizzare l&rsquo;account finch&eacute; il processo di ripristino non sar&agrave; concluso.
recovery_start_info.instruction=Durante il processo di ripristino registrer&agrave; un nuovo fattore di login. Se il suo account contiene informazioni verificate, potrebbe dover effettuare anche un processo di verificazione per completare il ripristino.
recovery_start_info.title=Sta per iniziare il processo di ripristino
reject.button.label=Rifiuta
signup.button.label=Iscriviti
skip.button.label=Salta
reject.button.label=Rifiuti
submit.button.label=Continua
tan.sent=Inserisci il codice di sicurezza che &egrave; stato inviato al tuo telefono cellulare.
timeout.description=La sessione &egrave; scaduta. Chiuda questa finestra e provi ad accedere nuovamente.
timeout.title=Sessione scaduta
title.login=Login
title.logout=Logout
title.logout.confirmation=Logout
title.logout.reminder=Logout
title.oauth.consent=Autorizzazione del client
title.saml.failed=Error
title.signup=Crea un account
title.timeout.page=Logout
user_input.invalid.email=Inserire un'e-mail valida.
user_input.invalid.email.required=Campo obbligatorio

View File

@ -13,9 +13,8 @@ JAVA_OPTS=(
"-javaagent:/opt/agent/opentelemetry-javaagent.jar"
"-Dotel.javaagent.logging=application"
"-Dotel.javaagent.configuration-file=/var/opt/nevisauth/default/conf/otel.properties"
"-Dotel.resource.attributes=service.version=8.2505.5,service.instance.id=$HOSTNAME"
"-Dotel.resource.attributes=service.version=8.2411.1,service.instance.id=$HOSTNAME"
"-Djavax.net.ssl.trustStore=/var/opt/keys/trust/auth-default-tls-trust/truststore.p12"
"-Djavax.net.ssl.trustStorePassword=\${exec:/var/opt/keys/trust/auth-default-tls-trust/keypass}"
)

View File

@ -45,8 +45,6 @@
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="session" key="ch.adnovum.nevisidm.clientId" as="clientId"/>
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="session" key="ch.nevis.session.domain" as="domain"/>
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="request" key="ActualRoles" as="roles"/>
</TokenSpec>
<!-- source: pattern://271d024334021208b71ac80a -->
@ -67,8 +65,6 @@
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="session" key="ch.adnovum.nevisidm.clientId" as="clientId"/>
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="session" key="ch.nevis.session.domain" as="domain"/>
<!-- source: pattern://271d024334021208b71ac80a -->
<field src="request" key="ActualRoles" as="roles"/>
</TokenSpec>
<!-- source: pattern://271d024334021208b71ac80a -->
@ -1141,6 +1137,8 @@
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<ResultCond name="SOAP:showGui" next="SAML_SP_nevisidm_admin_Realm_Log_Login_User"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<ResultCond name="default" next="SAML_SP_nevisidm_admin_Realm_Log_Login_User"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<ResultCond name="ok" next="SAML_SP_nevisidm_admin_Realm_Log_Login_User" startOver="true"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<ResultCond name="showGui" next="SAML_SP_nevisidm_admin_Realm_admin_nevisIDM_Password_Login-IdmPostProcessing"/>
@ -1159,12 +1157,6 @@
<property name="detaillevel.default" value="EXCLUDE"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<property name="detaillevel.user" value="MEDIUM"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<property name="detaillevel.profile" value="MEDIUM"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<property name="detaillevel.role" value="LOW"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<property name="forceDataReload" value="true"/>
</AuthState>
<AuthState name="SAML_SP_nevisidm_admin_Realm_admin_nevisIDM_Password_Login-IdmPasswordChange" class="ch.nevis.idm.authstate.IdmChangePasswordState" final="false">
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
@ -1242,7 +1234,7 @@
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<GuiElem name="isiwebnewpw2" type="pw-text" label="prompt.newpassword.confirm"/>
<!-- source: pattern://12c979b6af0f15f1328656a4 -->
<GuiElem name="submit" type="submit" label="submit.button.label"/>
<GuiElem name="submit" type="submit" label="button.submit"/>
</Gui>
</Response>
<propertyRef name="nevisIDM_Connector"/>
@ -1350,6 +1342,4 @@
<property name="generateNow" value="true"/>
</AuthState>
</AuthEngine>
<!-- source: pattern://ac27dd7daad0ca2b7229bfaf -->
<RESTService name="ManagementService" class="ch.nevis.esauth.rest.service.session.ManagementService"/>
</esauth-server>

View File

@ -16,6 +16,12 @@ Configuration:
level: "INFO"
- name: "EsAuthStart"
level: "INFO"
- name: "org.apache.catalina.loader.WebappClassLoader"
level: "FATAL"
- name: "org.apache.catalina.startup.HostConfig"
level: "ERROR"
- name: "ch.nevis.esauth.events"
level: "FATAL"
- name: "AGOVOP-ACCT"
level: "INFO"
- name: "AGOVOP-IDENT"

View File

@ -1,5 +1,4 @@
otel.service.name = auth
otel.traces.sampler = always_on
otel.traces.exporter = none
otel.metrics.exporter = none
otel.logs.exporter = none

View File

@ -12,7 +12,7 @@ spec:
type: "NevisIDM"
replicas: 1
version: "8.2505.5"
gitInitVersion: "1.4.0"
gitInitVersion: "1.3.0"
runAsNonRoot: true
ports:
management: 8998
@ -40,14 +40,13 @@ spec:
management:
httpGet:
path: "/health"
initialDelaySeconds: 60
periodSeconds: 5
timeoutSeconds: 6
failureThreshold: 30
failureThreshold: 50
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-df95918aa8e4142dc04a89451ddf5014895f0608"
tag: "r-bf1e1a83227b7bc159e972c2afd30c158021bcea"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/idm-job"
credentials: "git-credentials"
keystores:

View File

@ -2,14 +2,6 @@
web.gui.languages.default=de
# source: pattern://0d4bbba28a4a76094d41df81
database.connection.url=jdbc:mariadb://session-db-primary-service.adn-agov-database-01-uat:3306/nevisidm_uat?pinGlobalTxToPhysicalConnection=1&useMysqlMetadata=true&cachePrepStmts=true&prepStmtCacheSize=1000&sslMode=disable
# source: pattern://0116b3002d0e713e23e6be72
database.connection.pool.size.min=5
# source: pattern://0116b3002d0e713e23e6be72
database.connection.pool.size.max=10
# source: pattern://0d4bbba28a4a76094d41df81
database.connection.max.lifetime=1800
# source: pattern://0d4bbba28a4a76094d41df81
database.connection.max.idle.time=600
# source: pattern://0d4bbba28a4a76094d41df81
database.connection.username=adndbadmin
# source: pattern://0d4bbba28a4a76094d41df81
@ -61,6 +53,10 @@ application.modules.event.repeat.count=-1
# source: pattern://0116b3002d0e713e23e6be72
application.modules.provisioning.enabled=false
# source: pattern://0116b3002d0e713e23e6be72
database.connection.pool.size.max=10
# source: pattern://0116b3002d0e713e23e6be72
database.connection.pool.size.min=5
# source: pattern://0116b3002d0e713e23e6be72
database.connection.xa.enabled=false
# source: pattern://0116b3002d0e713e23e6be72
database.transaction.timeout=60

View File

@ -1,5 +1,4 @@
otel.service.name = idm-job
otel.traces.sampler = always_on
otel.traces.exporter = none
otel.metrics.exporter = none
otel.logs.exporter = none

View File

@ -12,7 +12,7 @@ spec:
type: "NevisIDM"
replicas: 1
version: "8.2505.5"
gitInitVersion: "1.4.0"
gitInitVersion: "1.3.0"
runAsNonRoot: true
ports:
management: 8998
@ -40,14 +40,13 @@ spec:
management:
httpGet:
path: "/health"
initialDelaySeconds: 60
periodSeconds: 5
timeoutSeconds: 6
failureThreshold: 30
failureThreshold: 50
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-df95918aa8e4142dc04a89451ddf5014895f0608"
tag: "r-bf1e1a83227b7bc159e972c2afd30c158021bcea"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/idm"
credentials: "git-credentials"
database:

View File

@ -2,14 +2,6 @@
web.gui.languages.default=de
# source: pattern://ca0629d86201d4c4ac857d60
database.connection.url=jdbc:mariadb://session-db-primary-service.adn-agov-database-01-uat:3306/nevisidm_uat?pinGlobalTxToPhysicalConnection=1&useMysqlMetadata=true&cachePrepStmts=true&prepStmtCacheSize=1000&sslMode=disable
# source: pattern://fe4a248ac7b092a6a80624f1
database.connection.pool.size.min=5
# source: pattern://fe4a248ac7b092a6a80624f1
database.connection.pool.size.max=10
# source: pattern://ca0629d86201d4c4ac857d60
database.connection.max.lifetime=1800
# source: pattern://ca0629d86201d4c4ac857d60
database.connection.max.idle.time=600
# source: pattern://ca0629d86201d4c4ac857d60
database.connection.username=${exec:/var/opt/nevisidm/default/conf/credentials/dbUser}
# source: pattern://ca0629d86201d4c4ac857d60
@ -67,6 +59,10 @@ application.modules.reporting.characterencoding=ISO-8859-1
# source: pattern://fe4a248ac7b092a6a80624f1
application.modules.reporting.separator=;
# source: pattern://fe4a248ac7b092a6a80624f1
database.connection.pool.size.max=10
# source: pattern://fe4a248ac7b092a6a80624f1
database.connection.pool.size.min=5
# source: pattern://fe4a248ac7b092a6a80624f1
database.connection.xa.enabled=false
# source: pattern://fe4a248ac7b092a6a80624f1
web.gui.facing.cache.size=10000

View File

@ -1,5 +1,4 @@
otel.service.name = idm
otel.traces.sampler = always_on
otel.traces.exporter = none
otel.metrics.exporter = none
otel.logs.exporter = none

View File

@ -12,7 +12,7 @@ spec:
type: "NevisLogrend"
replicas: 1
version: "8.2505.5"
gitInitVersion: "1.4.0"
gitInitVersion: "1.3.0"
runAsNonRoot: true
ports:
server: 8988
@ -38,14 +38,13 @@ spec:
startupProbe:
server:
tcpSocket: true
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 4
failureThreshold: 30
failureThreshold: 50
podDisruptionBudget:
maxUnavailable: "50%"
git:
tag: "r-7e9f2304b72a07725abab4c27833af5cdd73ab53"
tag: "r-bf1e1a83227b7bc159e972c2afd30c158021bcea"
dir: "DEFAULT-ADN-AGOV-ADMIN-PROJECT/DEFAULT-ADN-AGOV-ADMIN-INV/logrend"
credentials: "git-credentials"
podSecurity:

View File

@ -1,5 +1,3 @@
ico=image/x-icon
json=application/json
woff=font/woff
woff2=font/woff2

View File

@ -1,5 +1,4 @@
otel.service.name = logrend
otel.traces.sampler = always_on
otel.traces.exporter = none
otel.metrics.exporter = none
otel.logs.exporter = none

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Ung&uuml;ltiger Link
agov-ident.onboarding=Registrierung & Verifikation
agov-ident.retry=Versuchen Sie es erneut
darkModeSwitch.aria.label=Dark-Mode-Schalter
dimilar.confirm_identity.checkbox=Ich best&auml;tige, dass dies meine Angaben sind
dimilar.confirm_identity.description=Bitte best&auml;tigen Sie, dass die folgenden Angaben Ihnen geh&ouml;ren, um fortzufahren:
dimilar.confirm_identity.error=Bitte best&auml;tigen Sie, dass die Angaben Ihnen geh&ouml;ren, um fortzufahren.
dimilar.confirm_identity.link=Wenn diese nicht Ihre Angaben sind, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.confirm_identity.title=Angaben best&auml;tigen
dimilar.select_onboarding.description=Willkommen bei AGOV. Bitte komplettieren Sie Ihr Onboarding, indem Sie ein bestehendes oder neues AGOV Konto verbinden.
dimilar.select_onboarding.error-banner=Bitte w&auml;hlen Sie eine Option aus, um fortzufahren
dimilar.select_onboarding.existing-account=Onboarding mit einem existierenden AGOV-Konto
dimilar.select_onboarding.proceeding=Wie m&ouml;chten Sie fortfahren?
dimilar.select_onboarding.registering-account=Onboarding mit einem neuen AGOV-Konto
dimilar.select_onboarding.title=Hallo !!!FIRSTNAME!!! !!!LASTNAME!!!
dimilar.token_error.support=Um Hilfe zu erhalten, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar.token_error.token_expired=Token abgelaufen oder bereits verwendet.
dimilar_onboarding.aborted.link=Wenn Sie Hilfe ben&ouml;tigen, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.aborted.message=Onboarding abgebrochen. Bitte versuchen Sie es erneut.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar_onboarding.failed.message=Onboarding abgebrochen. Bitte kontaktieren Sie den Support unter
dimilar_onboarding.successful.message=Onboarding mit AGOV-Konto erfolgreich. Sie k&ouml;nnen sich nun bei Dimilar unter <a class='link' href='https://www.armee.ch/de/dim' target='_blank'>https://www.armee.ch/de/dim</a> einloggen.
dimilar_onboarding.title=Registrieren
error_1=Bitte &uuml;berpr&uuml;fen Sie Ihre Eingaben.
error_10=Bitte w&auml;hlen Sie das richtige Benutzerkonto aus.
error_100=Zertifikat-Upload nicht m&ouml;glich. Das Zertifikat existiert bereits. Wenden Sie sich an Ihr Helpdesk.
@ -18,8 +37,16 @@ error_11=Bitte verwenden Sie ein anderes Zertifikat oder melden Sie sich mit ein
error_2=Bitte w&auml;hlen Sie einen anderen Login-Namen.
error_3=Wenn die n&auml;chste Authentifizierung fehlschl&auml;gt, wird Ihr Konto gesperrt.
error_4=Ihr neues Passwort verst&ouml;sst gegen die Sicherheitsrichtlinien. Bitte w&auml;hlen Sie ein anderes Passwort.
error_403.description=Sie sind nicht berechtigt, auf diese Anwendung zuzugreifen.
error_403.title=Nicht zugelassen
error_404.description=Die von Ihnen gesuchte Seite existiert nicht.
error_404.title=Seite nicht gefunden
error_5=Fehler bei der Passwortbest&auml;tigung.
error_50=Das neue Passwort ist zu kurz.
error_500.description=Zurzeit liegt eine St&ouml;rung vor. Wir arbeiten daran.
error_500.title=Etwas ist schiefgegangen.
error_502.description=Wir arbeiten daran. Bitte versuchen Sie es sp&auml;ter noch einmal.
error_502.title=Etwas ist schiefgegangen.
error_55=Das neue Passwort muss sich von alten Passw&ouml;rtern unterscheiden.
error_6=Passwort&auml;nderung erforderlich.
error_7=&Auml;nderung der Login-ID erforderlich.
@ -54,11 +81,17 @@ general.cancel=Abbrechen
general.confirm=Best&auml;tigen
general.contactSupport=Support kontaktieren
general.continue=Weiter
general.data.birthDate=Geburtsdatum
general.data.birthDateFormat=TT.MM.JJJJ
general.data.enrollmentNumber=AHV-Nummer (Dienstmanager)
general.data.firstname=Vorname
general.data.lastname=Nachname
general.edit=&Auml;ndern
general.email=E-Mail
general.email.address=E-Mail-Adresse
general.entryCode=Code-Eingabe
general.fieldRequired=Erforderliches Feld
general.generalAccessApp=Access App
general.getStarted=Los geht's
general.goAGOVHelp=Weiter zur AGOV help
general.goAccessApp=Login mit AGOV access
@ -91,7 +124,7 @@ general.skip.content=Direkt zum Hauptteil
general.wrongPhoneNumber=Bitte geben Sie eine g&uuml;ltige Telefonnummer ein
generic.auth.error.message=Es gab eine Service-Unterbrechung. Wir arbeiten daran.
generic.auth.error.next.steps=Versuchen Sie es bitte sp&auml;ter noch einmal. Bitte besuchen Sie die AGOV-Hilfe, wenn das Problem weiterhin besteht.
generic.auth.error.subtitle=Etwas ist schiefgegangen
generic.auth.error.subtitle=Etwas ist schiefgegangen.
generic.auth.error.title=Fehler
language.de=Deutsch
language.en=English
@ -107,6 +140,8 @@ loainfo.later=Sp&auml;ter
loainfo.startNow=M&ouml;chten Sie den Prozess jetzt starten?
loainfo.startVerification=Verifikation starten
loainfo.title=Verifizieren Sie Ihre Daten
loggedout.description=Sie haben sich erfolgreich ausgeloggt.
loggedout.title=Ausgeloggt
mauth_usernameless.EID=Mit Schweizer E-ID fortfahren
mauth_usernameless.banner.error=Authentifizierung unterbrochen.<br>Bitte versuchen Sie es erneut, nachdem die Seite neu geladen wurde.
mauth_usernameless.banner.info=Scan erfolgreich. Bitte fahren Sie in der AGOV access App fort.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=QR-Code anzeigen
mauth_usernameless.startRecovery=Kontowiederherstellung starten
mauth_usernameless.useSecurityKey=Verwenden Sie einen Sicherheitsschl&uuml;ssel, um sich anzumelden
mauth_usernameless.useSecurityKeyInfo=Ein physischer Sicherheitsschl&uuml;ssel bietet eine sichere M&ouml;glichkeit, sich ohne Telefon anzumelden.
onboard_linking_account_auth.fido_instructions=Ein physischer Sicherheitsschl&uuml;ssel bietet eine sichere M&ouml;glichkeit, das Onboarding mit Ihrem Konto ohne Telefon durchzuf&uuml;hren.
onboard_linking_account_auth.instructions=F&uuml;hren Sie das Onboarding mit Ihrem AGOV-Konto durch, indem Sie den QR-Code mit Ihrer AGOV access App scannen
onboarding.cancel-onboarding=Sind Sie sicher, dass Sie den Onboarding-Prozess abbrechen m&ouml;chten?
onboarding.cancel-onboarding-description=Um mit der Kontowiederherstellung fortzufahren, m&uuml;ssen Sie den Onboarding-Prozess abbrechen.
onboarding.cancel-proceed-recovery=Ja, abbrechen und mit der Wiederherstellung fortfahren
onboarding.login-factor=Schritt 1 &ndash; Login-Faktor
onboarding.with-agov.title=Onboarding mit AGOV-Konto
onboarding_account.switchLinking=Wechseln zum Onboarding mit
onboarding_account_auth.loginSecurityKey=Onboarding mit Sicherheitsschl&uuml;ssel starten
onboarding_account_auth.useSecurityKey=Benutzen Sie einen Sicherheitsschl&uuml;ssel, um das Onboarding mit Ihrem AGOV-Konto durchzuf&uuml;hren
op-admin.login=AGOV-op-Admin
op-admin.login.intro.message=Login mit Ihrem Benutzernamen und Passwort
op-admin.login.loginid=LoginID
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=Wenn Sie mehrere Loginfaktoren r
recovery_questionnaire_reason_selection.answer1=Ich habe Probleme mich anzumelden, obwohl ich meine App / meinen Sicherheitsschl&uuml;ssel habe
recovery_questionnaire_reason_selection.answer10=Ich habe einen meiner Loginfaktoren verloren (AGOV access App oder Sicherheitsschl&uuml;ssel)
recovery_questionnaire_reason_selection.answer2=Ich konnte meine Registrierung nicht abschliessen
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt, oder es wird angezeigt, dass keine Konten definiert sind
recovery_questionnaire_reason_selection.answer4=Ich habe mein Telefon / Sicherheitsschl&uuml;ssel verloren
recovery_questionnaire_reason_selection.answer5=Ich habe ein neues Telefon und habe vergessen, meine AGOV access App zu &uuml;bertragen
recovery_questionnaire_reason_selection.answer6=Ich habe die PIN f&uuml;r meine AGOV access App vergessen
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Bitte w&auml;hlen Sie einen
recovery_start_info.banner.warning=Sie k&ouml;nnen Ihr Konto nicht nutzen, bis der Wiederherstellungsprozess abgeschlossen ist.
recovery_start_info.instruction=W&auml;hrend des Wiederherstellungsprozesses werden Sie einen neuen Login-Faktor registrieren. Wenn Ihr Konto verifizierte Informationen enth&auml;lt, m&uuml;ssen Sie zum Abschluss des Wiederherstellungsprozesses m&ouml;glicherweise auch einen Verifikationsprozess durchlaufen.
recovery_start_info.title=Sie sind dabei, den Wiederherstellungsprozess zu starten
timeout.description=Ihre Sitzung ist abgelaufen. Bitte schliessen Sie dieses Fenster und versuchen Sie erneut, sich einzuloggen.
timeout.title=Sitzung abgelaufen
title=NEVIS SSO Portal
title.login=Login
user_input.invalid.email=Bitte geben Sie eine g&uuml;ltige E-Mail ein

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Ung&uuml;ltiger Link
agov-ident.onboarding=Registrierung & Verifikation
agov-ident.retry=Versuchen Sie es erneut
darkModeSwitch.aria.label=Dark-Mode-Schalter
dimilar.confirm_identity.checkbox=Ich best&auml;tige, dass dies meine Angaben sind
dimilar.confirm_identity.description=Bitte best&auml;tigen Sie, dass die folgenden Angaben Ihnen geh&ouml;ren, um fortzufahren:
dimilar.confirm_identity.error=Bitte best&auml;tigen Sie, dass die Angaben Ihnen geh&ouml;ren, um fortzufahren.
dimilar.confirm_identity.link=Wenn diese nicht Ihre Angaben sind, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.confirm_identity.title=Angaben best&auml;tigen
dimilar.select_onboarding.description=Willkommen bei AGOV. Bitte komplettieren Sie Ihr Onboarding, indem Sie ein bestehendes oder neues AGOV Konto verbinden.
dimilar.select_onboarding.error-banner=Bitte w&auml;hlen Sie eine Option aus, um fortzufahren
dimilar.select_onboarding.existing-account=Onboarding mit einem existierenden AGOV-Konto
dimilar.select_onboarding.proceeding=Wie m&ouml;chten Sie fortfahren?
dimilar.select_onboarding.registering-account=Onboarding mit einem neuen AGOV-Konto
dimilar.select_onboarding.title=Hallo !!!FIRSTNAME!!! !!!LASTNAME!!!
dimilar.token_error.support=Um Hilfe zu erhalten, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar.token_error.token_expired=Token abgelaufen oder bereits verwendet.
dimilar_onboarding.aborted.link=Wenn Sie Hilfe ben&ouml;tigen, besuchen Sie bitte <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.aborted.message=Onboarding abgebrochen. Bitte versuchen Sie es erneut.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dim' target='_blank'>agov.ch/dim</a>.
dimilar_onboarding.failed.message=Onboarding abgebrochen. Bitte kontaktieren Sie den Support unter
dimilar_onboarding.successful.message=Onboarding mit AGOV-Konto erfolgreich. Sie k&ouml;nnen sich nun bei Dimilar unter <a class='link' href='https://www.armee.ch/de/dim' target='_blank'>https://www.armee.ch/de/dim</a> einloggen.
dimilar_onboarding.title=Registrieren
error_1=Bitte &uuml;berpr&uuml;fen Sie Ihre Eingaben.
error_10=Bitte w&auml;hlen Sie das richtige Benutzerkonto aus.
error_100=Zertifikat-Upload nicht m&ouml;glich. Das Zertifikat existiert bereits. Wenden Sie sich an Ihr Helpdesk.
@ -18,8 +37,16 @@ error_11=Bitte verwenden Sie ein anderes Zertifikat oder melden Sie sich mit ein
error_2=Bitte w&auml;hlen Sie einen anderen Login-Namen.
error_3=Wenn die n&auml;chste Authentifizierung fehlschl&auml;gt, wird Ihr Konto gesperrt.
error_4=Ihr neues Passwort verst&ouml;sst gegen die Sicherheitsrichtlinien. Bitte w&auml;hlen Sie ein anderes Passwort.
error_403.description=Sie sind nicht berechtigt, auf diese Anwendung zuzugreifen.
error_403.title=Nicht zugelassen
error_404.description=Die von Ihnen gesuchte Seite existiert nicht.
error_404.title=Seite nicht gefunden
error_5=Fehler bei der Passwortbest&auml;tigung.
error_50=Das neue Passwort ist zu kurz.
error_500.description=Zurzeit liegt eine St&ouml;rung vor. Wir arbeiten daran.
error_500.title=Etwas ist schiefgegangen.
error_502.description=Wir arbeiten daran. Bitte versuchen Sie es sp&auml;ter noch einmal.
error_502.title=Etwas ist schiefgegangen.
error_55=Das neue Passwort muss sich von alten Passw&ouml;rtern unterscheiden.
error_6=Passwort&auml;nderung erforderlich.
error_7=&Auml;nderung der Login-ID erforderlich.
@ -54,11 +81,17 @@ general.cancel=Abbrechen
general.confirm=Best&auml;tigen
general.contactSupport=Support kontaktieren
general.continue=Weiter
general.data.birthDate=Geburtsdatum
general.data.birthDateFormat=TT.MM.JJJJ
general.data.enrollmentNumber=AHV-Nummer (Dienstmanager)
general.data.firstname=Vorname
general.data.lastname=Nachname
general.edit=&Auml;ndern
general.email=E-Mail
general.email.address=E-Mail-Adresse
general.entryCode=Code-Eingabe
general.fieldRequired=Erforderliches Feld
general.generalAccessApp=Access App
general.getStarted=Los geht's
general.goAGOVHelp=Weiter zur AGOV help
general.goAccessApp=Login mit AGOV access
@ -91,7 +124,7 @@ general.skip.content=Direkt zum Hauptteil
general.wrongPhoneNumber=Bitte geben Sie eine g&uuml;ltige Telefonnummer ein
generic.auth.error.message=Es gab eine Service-Unterbrechung. Wir arbeiten daran.
generic.auth.error.next.steps=Versuchen Sie es bitte sp&auml;ter noch einmal. Bitte besuchen Sie die AGOV-Hilfe, wenn das Problem weiterhin besteht.
generic.auth.error.subtitle=Etwas ist schiefgegangen
generic.auth.error.subtitle=Etwas ist schiefgegangen.
generic.auth.error.title=Fehler
language.de=Deutsch
language.en=English
@ -107,6 +140,8 @@ loainfo.later=Sp&auml;ter
loainfo.startNow=M&ouml;chten Sie den Prozess jetzt starten?
loainfo.startVerification=Verifikation starten
loainfo.title=Verifizieren Sie Ihre Daten
loggedout.description=Sie haben sich erfolgreich ausgeloggt.
loggedout.title=Ausgeloggt
mauth_usernameless.EID=Mit Schweizer E-ID fortfahren
mauth_usernameless.banner.error=Authentifizierung unterbrochen.<br>Bitte versuchen Sie es erneut, nachdem die Seite neu geladen wurde.
mauth_usernameless.banner.info=Scan erfolgreich. Bitte fahren Sie in der AGOV access App fort.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=QR-Code anzeigen
mauth_usernameless.startRecovery=Kontowiederherstellung starten
mauth_usernameless.useSecurityKey=Verwenden Sie einen Sicherheitsschl&uuml;ssel, um sich anzumelden
mauth_usernameless.useSecurityKeyInfo=Ein physischer Sicherheitsschl&uuml;ssel bietet eine sichere M&ouml;glichkeit, sich ohne Telefon anzumelden.
onboard_linking_account_auth.fido_instructions=Ein physischer Sicherheitsschl&uuml;ssel bietet eine sichere M&ouml;glichkeit, das Onboarding mit Ihrem Konto ohne Telefon durchzuf&uuml;hren.
onboard_linking_account_auth.instructions=F&uuml;hren Sie das Onboarding mit Ihrem AGOV-Konto durch, indem Sie den QR-Code mit Ihrer AGOV access App scannen
onboarding.cancel-onboarding=Sind Sie sicher, dass Sie den Onboarding-Prozess abbrechen m&ouml;chten?
onboarding.cancel-onboarding-description=Um mit der Kontowiederherstellung fortzufahren, m&uuml;ssen Sie den Onboarding-Prozess abbrechen.
onboarding.cancel-proceed-recovery=Ja, abbrechen und mit der Wiederherstellung fortfahren
onboarding.login-factor=Schritt 1 &ndash; Login-Faktor
onboarding.with-agov.title=Onboarding mit AGOV-Konto
onboarding_account.switchLinking=Wechseln zum Onboarding mit
onboarding_account_auth.loginSecurityKey=Onboarding mit Sicherheitsschl&uuml;ssel starten
onboarding_account_auth.useSecurityKey=Benutzen Sie einen Sicherheitsschl&uuml;ssel, um das Onboarding mit Ihrem AGOV-Konto durchzuf&uuml;hren
op-admin.login=AGOV-op-Admin
op-admin.login.intro.message=Login mit Ihrem Benutzernamen und Passwort
op-admin.login.loginid=LoginID
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=Wenn Sie mehrere Loginfaktoren r
recovery_questionnaire_reason_selection.answer1=Ich habe Probleme mich anzumelden, obwohl ich meine App / meinen Sicherheitsschl&uuml;ssel habe
recovery_questionnaire_reason_selection.answer10=Ich habe einen meiner Loginfaktoren verloren (AGOV access App oder Sicherheitsschl&uuml;ssel)
recovery_questionnaire_reason_selection.answer2=Ich konnte meine Registrierung nicht abschliessen
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt
recovery_questionnaire_reason_selection.answer3=Ich habe meine AGOV access App gel&ouml;scht, neu installiert oder zur&uuml;ckgesetzt, oder es wird angezeigt, dass keine Konten definiert sind
recovery_questionnaire_reason_selection.answer4=Ich habe mein Telefon / Sicherheitsschl&uuml;ssel verloren
recovery_questionnaire_reason_selection.answer5=Ich habe ein neues Telefon und habe vergessen, meine AGOV access App zu &uuml;bertragen
recovery_questionnaire_reason_selection.answer6=Ich habe die PIN f&uuml;r meine AGOV access App vergessen
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Bitte w&auml;hlen Sie einen
recovery_start_info.banner.warning=Sie k&ouml;nnen Ihr Konto nicht nutzen, bis der Wiederherstellungsprozess abgeschlossen ist.
recovery_start_info.instruction=W&auml;hrend des Wiederherstellungsprozesses werden Sie einen neuen Login-Faktor registrieren. Wenn Ihr Konto verifizierte Informationen enth&auml;lt, m&uuml;ssen Sie zum Abschluss des Wiederherstellungsprozesses m&ouml;glicherweise auch einen Verifikationsprozess durchlaufen.
recovery_start_info.title=Sie sind dabei, den Wiederherstellungsprozess zu starten
timeout.description=Ihre Sitzung ist abgelaufen. Bitte schliessen Sie dieses Fenster und versuchen Sie erneut, sich einzuloggen.
timeout.title=Sitzung abgelaufen
title=NEVIS SSO Portal
title.login=Login
user_input.invalid.email=Bitte geben Sie eine g&uuml;ltige E-Mail ein

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Invalid Link
agov-ident.onboarding=Registration & Verification
agov-ident.retry=Try again
darkModeSwitch.aria.label=Dark mode toggle
dimilar.confirm_identity.checkbox=I confirm this is my data
dimilar.confirm_identity.description=Please confirm the data below is yours in order to proceed:
dimilar.confirm_identity.error=Please confirm the data is yours to proceed.
dimilar.confirm_identity.link=If this is not your data, please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.confirm_identity.title=Confirm data
dimilar.select_onboarding.description=Welcome to AGOV. Please complete your onboarding by connecting to an existing or new AGOV account.
dimilar.select_onboarding.error-banner=Please select one option to continue
dimilar.select_onboarding.existing-account=Onboard with an existing AGOV account
dimilar.select_onboarding.proceeding=How would you like to proceed?
dimilar.select_onboarding.registering-account=Onboard with a new AGOV account
dimilar.select_onboarding.title=Hello !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=For support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.token_error.token_expired=Token expired or already used.
dimilar_onboarding.aborted.link=If you require support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.aborted.message=Onboarding aborted. Please try again.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.failed.message=Onboarding aborted. Please contact support at
dimilar_onboarding.successful.message=Onboarding with AGOV account successful. You are now able to log in to Dimilar at <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Register
error_1=Please check your input.
error_10=Please select the correct user account.
error_100=Certificate upload not possible. Certificate already exists. Please contact your helpdesk.
@ -18,8 +37,16 @@ error_11=Please use another certficate or login with another credential type.
error_2=Please select another login name.
error_3=Your account will be locked if next authentication fails.
error_4=Your new password does not comply with the security policy. Please choose a different password.
error_403.description=You are not authorised to access this application.
error_403.title=Not authorised
error_404.description=The page you are looking for does not exist.
error_404.title=Page not found
error_5=Error in password confirmation.
error_50=The new password is too short.
error_500.description=There is currently an outage. We are working on it.
error_500.title=Something went wrong.
error_502.description=We are working on it. Please try again later.
error_502.title=Something went wrong.
error_55=The new password has to differ from old passwords.
error_6=Password change required.
error_7=Change of login ID required.
@ -54,11 +81,17 @@ general.cancel=Cancel
general.confirm=Confirm
general.contactSupport=Contact Support
general.continue=Continue
general.data.birthDate=Date of birth
general.data.birthDateFormat=DD.MM.YYYY
general.data.enrollmentNumber=Enrolment number (SSN/AHV number)
general.data.firstname=First name
general.data.lastname=Last name
general.edit=Edit
general.email=Email
general.email.address=Email address
general.entryCode=Code entry
general.fieldRequired=Field required
general.generalAccessApp=Access app
general.getStarted=Get started
general.goAGOVHelp=Go to AGOV help
general.goAccessApp=Login with AGOV access
@ -91,7 +124,7 @@ general.skip.content=Skip to main content
general.wrongPhoneNumber=Please enter a valid phone number
generic.auth.error.message=There was a service interruption. We are working on it.
generic.auth.error.next.steps=Please try again later. Please consult AGOV help if the problem persists.
generic.auth.error.subtitle=Something went wrong
generic.auth.error.subtitle=Something went wrong.
generic.auth.error.title=Error
language.de=Deutsch
language.en=English
@ -107,6 +140,8 @@ loainfo.later=Later
loainfo.startNow=Do you want to start the process now?
loainfo.startVerification=Start verification
loainfo.title=Verify your data
loggedout.description=You have been successfully logged out.
loggedout.title=Logged out
mauth_usernameless.EID=Continue with CH E-ID
mauth_usernameless.banner.error=Authentication interrupted.<br>Please try again when the page reloads.
mauth_usernameless.banner.info=Scan successful. Please continue in the AGOV access app.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=Show QR code
mauth_usernameless.startRecovery=Start account recovery
mauth_usernameless.useSecurityKey=Use a security key to log in
mauth_usernameless.useSecurityKeyInfo=A physical security key offers a secure way to login without having to use a phone.
onboard_linking_account_auth.fido_instructions=A physical security key offers a secure way to onboard with your account without having to use a phone.
onboard_linking_account_auth.instructions=Onboard with your AGOV account by scanning the QR code with your AGOV access app
onboarding.cancel-onboarding=Are you sure you want to cancel the onboarding process?
onboarding.cancel-onboarding-description=In order to proceed with an account recovery, you will have to cancel the onboarding process.
onboarding.cancel-proceed-recovery=Yes, cancel and proceed to recovery
onboarding.login-factor=Step 1 - Login factor
onboarding.with-agov.title=Onboard with AGOV account
onboarding_account.switchLinking=Switch to onboard with
onboarding_account_auth.loginSecurityKey=Start onboarding with security key
onboarding_account_auth.useSecurityKey=Use a security key to onboard with your AGOV account
op-admin.login=AGOV op admin
op-admin.login.intro.message=Login with your username and password
op-admin.login.loginid=LoginId
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=If you have several login factor
recovery_questionnaire_reason_selection.answer1=I have trouble logging in, even though I have my app / security key
recovery_questionnaire_reason_selection.answer10=I lost one of my login factors (AGOV access app or security key)
recovery_questionnaire_reason_selection.answer2=I was unable to finish my registration
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app
recovery_questionnaire_reason_selection.answer3=I have deleted, reinstalled, or reset my AGOV access app, or it shows there are no accounts defined
recovery_questionnaire_reason_selection.answer4=I have lost my phone / security key
recovery_questionnaire_reason_selection.answer5=I have a new phone and forgot to transfer my AGOV access app
recovery_questionnaire_reason_selection.answer6=I forgot my PIN for the AGOV access app
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Please select the reason you
recovery_start_info.banner.warning=You will not be able to use your account until the recovery process has been concluded.
recovery_start_info.instruction=During the recovery process you will register a new login factor. If your account contains any verified information you might also have to go through a verification process to finish the recovery.
recovery_start_info.title=You are about to start the recovery process
timeout.description=Your session has timed out. Please close this window and try logging in again.
timeout.title=Session expired
title=NEVIS SSO Portal
title.login=Login
user_input.invalid.email=Please enter a valid email address

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Lien non valide
agov-ident.onboarding=Enregistrement et v&eacute;rification
agov-ident.retry=Essayez &agrave; nouveau
darkModeSwitch.aria.label=Activer l'apparence sombre
dimilar.confirm_identity.checkbox=Je confirme que ce sont mes donn&eacute;es
dimilar.confirm_identity.description=Veuillez confirmer que les donn&eacute;es ci-dessous vous appartiennent afin de poursuivre :
dimilar.confirm_identity.error=Veuillez confirmer que les donn&eacute;es vous appartiennent afin de poursuivre.
dimilar.confirm_identity.link=Si ces donn&eacute;es ne sont pas les v&ocirc;tres, veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dim' target='_blank'>https://agov.ch/fr/dim</a>.
dimilar.confirm_identity.title=Confirmer les donn&eacute;es
dimilar.select_onboarding.description=Bienvenue sur AGOV. Veuillez terminer votre int&eacute;gration en vous connectant &agrave; un compte AGOV existant ou en cr&eacute;ant un nouveau compte.
dimilar.select_onboarding.error-banner=Veuillez s&eacute;lectionner une option pour continuer
dimilar.select_onboarding.existing-account=Se connecter avec un compte AGOV existant
dimilar.select_onboarding.proceeding=Comment voulez-vous proc&eacute;der ?
dimilar.select_onboarding.registering-account=Se connecter avec un nouveau compte AGOV
dimilar.select_onboarding.title=Bonjour !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=Si vous avez besoin d'aide veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar.token_error.token_expired=Jeton expir&eacute; ou d&eacute;j&agrave; utilis&eacute;.
dimilar_onboarding.aborted.link=Si vous avez besoin d'aide veuillez vous rendre sur <a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar_onboarding.aborted.message=Le processus d&rsquo;int&eacute;gration a &eacute;t&eacute; annul&eacute;. Veuillez r&eacute;essayer.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/fr/dimf' target='_blank'>https://agov.ch/fr/dimf</a>.
dimilar_onboarding.failed.message=Le processus d'int&eacute;gration a &eacute;t&eacute; annul&eacute;. Veuillez contacter le service de support &agrave;
dimilar_onboarding.successful.message=L&rsquo;int&eacute;gration avec le compte AGOV a r&eacute;ussi. Vous pouvez maintenant vous connecter sur le gestionnaire de service <a class='link' href='https://www.armee.ch/fr/dimf' target='_blank'>https://www.armee.ch/fr/dimf</a>.
dimilar_onboarding.title=Cr&eacute;er un compte
error_1=Veuillez v&eacute;rifier votre saisie.
error_10=Veuillez s&eacute;lectionner le compte d&rsquo;utilisateur correct.
error_100=Le t&eacute;l&eacute;chargement du certificat est impossible. Le certificat existe d&eacute;j&agrave;. Veuillez contacter votre service d&rsquo;assistance.
@ -18,8 +37,16 @@ error_11=Veuillez utiliser un autre certificat ou vous connecter au moyen d&rsqu
error_2=Veuillez s&eacute;lectionner un autre nom d&rsquo;utilisateur.
error_3=Votre compte sera bloqu&eacute; si la prochaine tentative d&rsquo;authentification &eacute;choue.
error_4=Votre nouveau mot de passe n&rsquo;est pas conforme &agrave; la politique de s&eacute;curit&eacute;. Veuillez choisir un autre mot de passe.
error_403.description=Vous n&rsquo;&ecirc;tes pas autoris&eacute; &agrave; acc&eacute;der &agrave; cette ressource.
error_403.title=Pas autoris&eacute;
error_404.description=La page que vous recherchez n'existe pas.
error_404.title=Page introuvable
error_5=Erreur de confirmation du mot de passe
error_50=Le nouveau mot de passe est trop court.
error_500.description=Un incident est survenu. Nous mettons tout en œuvre pour le r&eacute;soudre.
error_500.title=Un probl&egrave;me s&rsquo;est produit.
error_502.description=Nous y travaillons. Veuillez r&eacute;essayer plus tard.
error_502.title=Un probl&egrave;me s&rsquo;est produit.
error_55=Le nouveau mot de passe doit &ecirc;tre diff&eacute;rent des pr&eacute;c&eacute;dents.
error_6=Changement de mot de passe requis.
error_7=Changement d&rsquo;identifiant de connexion requis.
@ -54,11 +81,17 @@ general.cancel=Annuler
general.confirm=Confirmer
general.contactSupport=Contacter le service d'assistance
general.continue=Continuer
general.data.birthDate=Date de naissance
general.data.birthDateFormat=JJ.MM.AAAA
general.data.enrollmentNumber=Num&eacute;ro AVS (Gestionnaire de service)
general.data.firstname=Pr&eacute;nom
general.data.lastname=Nom
general.edit=Editer
general.email=E-mail
general.email.address=Adresse e-mail
general.entryCode=Entrer le code
general.fieldRequired=Champ requis
general.generalAccessApp=Access app
general.getStarted=D&eacute;marrer
general.goAGOVHelp=Rendez-vous sur AGOV help
general.goAccessApp=Login avec AGOV access
@ -91,7 +124,7 @@ general.skip.content=Passer au contenu principal
general.wrongPhoneNumber=Veuillez saisir un num&eacute;ro de t&eacute;l&eacute;phone valable
generic.auth.error.message=Une interruption de service s&rsquo;est produite. Nous nous employons &agrave; r&eacute;soudre le probl&egrave;me.
generic.auth.error.next.steps=Veuillez r&eacute;essayer plus tard. Veuillez vous rendre sur AGOV help si le probl&egrave;me persiste.
generic.auth.error.subtitle=Un probl&egrave;me s&rsquo;est produit
generic.auth.error.subtitle=Un probl&egrave;me s&rsquo;est produit.
generic.auth.error.title=Erreur
language.de=Deutsch
language.en=English
@ -107,6 +140,8 @@ loainfo.later=Plus tard
loainfo.startNow=Voulez-vous commencer le processus maintenant?
loainfo.startVerification=D&eacute;marrer la v&eacute;rification
loainfo.title=V&eacute;rifiez vos donn&eacute;es
loggedout.description=Vous vous &ecirc;tes d&eacute;connect&eacute; avec succ&egrave;s.
loggedout.title=D&eacute;connect&eacute;
mauth_usernameless.EID=Continuer avec l'e-ID suisse
mauth_usernameless.banner.error=Authentification interrompue.<br>Veuillez r&eacute;essayer lorsque la page sera recharg&eacute;e.
mauth_usernameless.banner.info=Scan r&eacute;ussi. Veuillez continuer dans l'application AGOV access.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=Afficher le code QR
mauth_usernameless.startRecovery=Commencer la r&eacute;cup&eacute;ration du compte
mauth_usernameless.useSecurityKey=Utiliser une cl&eacute; de s&eacute;curit&eacute; pour se connecter
mauth_usernameless.useSecurityKeyInfo=Une cl&eacute; de s&eacute;curit&eacute; physique offre un moyen s&ucirc;r de se connecter sans devoir utiliser son t&eacute;l&eacute;phone.
onboard_linking_account_auth.fido_instructions=Une cl&eacute; de s&eacute;curit&eacute; physique offre un moyen s&ucirc;r de se connecter &agrave; son compte sans devoir utiliser son t&eacute;l&eacute;phone.
onboard_linking_account_auth.instructions=Connectez-vous avec votre compte AGOV en scannant le code QR avec votre application AGOV access
onboarding.cancel-onboarding=&Ecirc;tes-vous s&ucirc;r de vouloir annuler la proc&eacute;dure d'int&eacute;gration ?
onboarding.cancel-onboarding-description=Pour proc&eacute;der &agrave; la r&eacute;cup&eacute;ration de votre compte, vous devrez annuler le processus d&rsquo;int&eacute;gration.
onboarding.cancel-proceed-recovery=Oui, annuler et proc&eacute;der &agrave; la r&eacute;cup&eacute;ration
onboarding.login-factor=&Eacute;tape 1 - Facteur de connexion
onboarding.with-agov.title=Se connecter avec un compte AGOV
onboarding_account.switchLinking=Passer &agrave; l&rsquo;int&eacute;gration avec
onboarding_account_auth.loginSecurityKey=Commencez l'int&eacute;gration avec une cl&eacute; de s&eacute;curit&eacute;
onboarding_account_auth.useSecurityKey=Utilisez une cl&eacute; de s&eacute;curit&eacute; pour se connecter avec votre compte AGOV
op-admin.login=Administration de l&rsquo;acc&egrave;s &agrave; AGOV op
op-admin.login.intro.message=Connectez-vous avec votre nom d&rsquo;utilisateur et votre mot de passe
op-admin.login.loginid=Identifiant de connexion
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=Si vous avez enregistr&eacute; p
recovery_questionnaire_reason_selection.answer1=Je n'arrive pas &agrave; me connecter, m&ecirc;me si j'ai mon application / ma cl&eacute; de s&eacute;curit&eacute;
recovery_questionnaire_reason_selection.answer10=J'ai perdu l'un de mes facteurs d'authentification (application AGOV access ou cl&eacute; de s&eacute;curit&eacute;)
recovery_questionnaire_reason_selection.answer2=Je n'ai pas pu terminer mon inscription
recovery_questionnaire_reason_selection.answer3=J'ai supprim&eacute;, r&eacute;install&eacute; ou r&eacute;initialis&eacute; mon application AGOV access
recovery_questionnaire_reason_selection.answer3=J'ai supprim&eacute;, r&eacute;install&eacute;, ou r&eacute;initialis&eacute; mon application AGOV access, ou cela indique qu'aucun compte n'est d&eacute;fini
recovery_questionnaire_reason_selection.answer4=J'ai perdu mon t&eacute;l&eacute;phone / cl&eacute; de s&eacute;curit&eacute;
recovery_questionnaire_reason_selection.answer5=J'ai un nouveau t&eacute;l&eacute;phone et j'ai oubli&eacute; de transf&eacute;rer mon application AGOV access
recovery_questionnaire_reason_selection.answer6=J'ai oubli&eacute; mon PIN pour l'application AGOV access
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Veuillez s&eacute;lectionner
recovery_start_info.banner.warning=Vous ne pourrez pas utiliser votre compte tant que le processus de r&eacute;cup&eacute;ration n'aura pas &eacute;t&eacute; termin&eacute;.
recovery_start_info.instruction=Le processus de r&eacute;cup&eacute;ration n&eacute;cessitera l&rsquo;enregistrement d&rsquo;un nouveau facteur d&rsquo;authentification. Si votre compte contient des informations ayant d&eacute;j&agrave; &eacute;t&eacute; v&eacute;rifi&eacute;es, il se peut que vous deviez les faire v&eacute;rifier &agrave; nouveau pour terminer la r&eacute;cup&eacute;ration.
recovery_start_info.title=Vous &ecirc;tes sur le point de d&eacute;marrer le processus de r&eacute;cup&eacute;ration.
timeout.description=Votre session a expir&eacute;. Veuillez fermer cette fen&ecirc;tre et essayer de vous reconnecter.
timeout.title=Session expir&eacute;e
title=NEVIS SSO Portal
title.login=Login
user_input.invalid.email=Veuillez saisir un e-mail valable.

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Link non valido
agov-ident.onboarding=Registrazione e verifica
agov-ident.retry=Riprova
darkModeSwitch.aria.label=Attivare la modalit&agrave; scura
dimilar.confirm_identity.checkbox=Confermo che questi sono i miei dati
dimilar.confirm_identity.description=Confermi che i dati riportati di seguito le appartengono per poter procedere:
dimilar.confirm_identity.error=Confermi che i dati sono i suoi per poter procedere.
dimilar.confirm_identity.link=Se questi non sono i suoi dati, visiti <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.confirm_identity.title=Confermare i dati
dimilar.select_onboarding.description=Benvenuto in AGOV. Completi la procedura di registrazione collegando un account AGOV esistente o creandone uno nuovo.
dimilar.select_onboarding.error-banner=Selezioni un&rsquo;opzione per continuare
dimilar.select_onboarding.existing-account=Proceda con un account AGOV esistente
dimilar.select_onboarding.proceeding=Come desidera procedere?
dimilar.select_onboarding.registering-account=Proceda con un nuovo account AGOV
dimilar.select_onboarding.title=Buongiorno !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=Per assistenza visita <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar.token_error.token_expired=Token scaduto o gi&agrave; utilizzato.
dimilar_onboarding.aborted.link=Se ha bisogno di assistenza, visiti <a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.aborted.message=La procedura di registrazione &egrave; stata interrotta. Provi di nuovo.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dim' target='_blank'>https://agov.ch/dim</a>.
dimilar_onboarding.failed.message=La procedura di registrazione &egrave; stata interrotta. Contatti il supporto al
dimilar_onboarding.successful.message=Registrazione con l&rsquo;account AGOV completata con successo. Ora pu&ograve; accedere alla Gestione dei servizi su <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Registrarsi
error_1=Verificare i dati inseriti.
error_10=Scegliere l&rsquo;account utente corretto.
error_100=Impossibile caricare il certificato. Il certificato esiste gi&agrave;. Contattare l&rsquo;help desk.
@ -18,8 +37,16 @@ error_11=Utilizzare un altro certificato o accedere con altre credenziali.
error_2=Selezionare un altro nome di accesso.
error_3=Se la prossima autenticazione fallisce, l&rsquo;account sar&agrave; bloccato.
error_4=La nuova password non rispetta le norme di sicurezza. Scegliere un&rsquo;altra password.
error_403.description=Accesso non autorizzato a questa risorsa.
error_403.title=Non &egrave; autorizatto
error_404.description=La pagina che state cercando non esiste.
error_404.title=Pagina non trovata
error_5=Errore nella conferma della password.
error_50=La nuova password &egrave; troppo corta.
error_500.description=Al momento si &egrave; verificato un disservizio. Stiamo intervenendo.
error_500.title=Qualcosa non ha funzionato.
error_502.description=Stiamo intervenendo. Riprovi pi&ugrave; tardi.
error_502.title=Qualcosa non ha funzionato.
error_55=La nuova password deve differire da quelle precedenti.
error_6=&Egrave; richiesta la modifica della password.
error_7=&Egrave; richiesta la modifica dell&rsquo;ID di accesso.
@ -54,11 +81,17 @@ general.cancel=Annullare
general.confirm=Confermare
general.contactSupport=Contattare il supporto
general.continue=Continuare
general.data.birthDate=Data di nascita
general.data.birthDateFormat=GG.MM.AAAA
general.data.enrollmentNumber=Numero AVS (Gestione dei servizi)
general.data.firstname=Nome
general.data.lastname=Cognome
general.edit=Modificare
general.email=e-mail
general.email.address=Indirizzo e-mail
general.entryCode=Codice
general.fieldRequired=Campo obbligatorio
general.generalAccessApp=App AGOV access
general.getStarted=Iniziare
general.goAGOVHelp=Vai ad AGOV help
general.goAccessApp=Login con AGOV access
@ -107,6 +140,8 @@ loainfo.later=Pi&ugrave; tardi
loainfo.startNow=Vuole iniziare il processo ora?
loainfo.startVerification=Inizi la verificazione
loainfo.title=Verificare i dati.
loggedout.description=Disconnessione effettuata con successo.
loggedout.title=Disconnessione eseguita
mauth_usernameless.EID=Continuare con CH e-ID
mauth_usernameless.banner.error=Autenticazione interrotta.<br>Riprovare dopo che la pagina si sar&agrave; ricaricata.
mauth_usernameless.banner.info=Scansione eseguita. Continuare nell'app AGOV access.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=Visualizza il codice QR
mauth_usernameless.startRecovery=Inizi il ripristino dell&rsquo;account
mauth_usernameless.useSecurityKey=Accedere utilizzando una chiave di sicurezza.
mauth_usernameless.useSecurityKeyInfo=Una chiave di sicurezza fisica permette di accedere in modo sicuro senza utilizzare un telefono.
onboard_linking_account_auth.fido_instructions=Una chiave di sicurezza fisica permette di accedere in modo sicuro senza utilizzare un telefono.
onboard_linking_account_auth.instructions=Proceda con il suo account AGOV scansionando il codice QR con l&rsquo;app AGOV access
onboarding.cancel-onboarding=Sei sicuro di voler annullare la registrazione?
onboarding.cancel-onboarding-description=Per procedere con il recupero dell&rsquo;account, &egrave; necessario annullare la registrazione.
onboarding.cancel-proceed-recovery=S&igrave;, annulla e procedi con il recupero
onboarding.login-factor=Passaggio 1 &ndash; Fattore di login
onboarding.with-agov.title=Proceda con l&rsquo;account AGOV
onboarding_account.switchLinking=Passa alla registrazione con
onboarding_account_auth.loginSecurityKey=Inizia la registrazione con la chiave di sicurezza
onboarding_account_auth.useSecurityKey=Utilizzi una chiave di sicurezza per procedere con il suo account AGOV
op-admin.login=AGOV op admin
op-admin.login.intro.message=Accedere con nome utente e password
op-admin.login.loginid=ID di accesso
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=Se ha registrato pi&ugrave; fatt
recovery_questionnaire_reason_selection.answer1=Ho problemi ad accedere, anche se ho la mia app/chiave di sicurezza
recovery_questionnaire_reason_selection.answer10=Ho perso uno dei miei fattori di accesso (app AGOV access o chiave di sicurezza)
recovery_questionnaire_reason_selection.answer2=Non sono riuscito a completare la registrazione
recovery_questionnaire_reason_selection.answer3=Ho eliminato, reinstallato o reimpostato la mia app AGOV access
recovery_questionnaire_reason_selection.answer3=Ho eliminato, reinstallato o reimpostato l&rsquo;app AGOV access, oppure risulta che non ci sono account definiti
recovery_questionnaire_reason_selection.answer4=Ho perso il telefono/la chiave di sicurezza
recovery_questionnaire_reason_selection.answer5=Ho un nuovo telefono e ho dimenticato di trasferire la mia app AGOV access
recovery_questionnaire_reason_selection.answer6=Ho dimenticato il PIN dell'app AGOV access
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Selezioni il motivo per cui
recovery_start_info.banner.warning=Non &egrave; possibile utilizzare l&rsquo;account finch&eacute; il processo di ripristino non sar&agrave; concluso.
recovery_start_info.instruction=Durante il processo di ripristino registrer&agrave; un nuovo fattore di login. Se il suo account contiene informazioni verificate, potrebbe dover effettuare anche un processo di verificazione per completare il ripristino.
recovery_start_info.title=Sta per iniziare il processo di ripristino
timeout.description=La sessione &egrave; scaduta. Chiuda questa finestra e provi ad accedere nuovamente.
timeout.title=Sessione scaduta
title=NEVIS SSO Portal
title.login=Login
user_input.invalid.email=Inserire un'e-mail valida.

View File

@ -10,6 +10,25 @@ agov-ident.invalid-url.title=Invalid Link
agov-ident.onboarding=Registration & Verification
agov-ident.retry=Try again
darkModeSwitch.aria.label=Activar l'apparientscha stgira
dimilar.confirm_identity.checkbox=Jau conferm che quest en mias datas
dimilar.confirm_identity.description=Per cuntinuar, confermai che las datas sutvart saudan a Vus per plaschair
dimilar.confirm_identity.error=Per cuntinuar, confermai che las datas saudan a Vus per plaschair.
dimilar.confirm_identity.link=If this is not your data, please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.confirm_identity.title=Confermar las datas
dimilar.select_onboarding.description=Bainvegn&igrave; ad AGOV. Cumplettai Voss Onboarding cun connectar in conto AGOV nov u gia existent.
dimilar.select_onboarding.error-banner=Selecziunai in'opziun, per cuntinuar
dimilar.select_onboarding.existing-account=Onboarding cun in conto AGOV gia existent
dimilar.select_onboarding.proceeding=Co vulais Vus cuntinuar?
dimilar.select_onboarding.registering-account=Onboarding cun in nov conto AGOV
dimilar.select_onboarding.title=Allegra !!!FIRSTNAME!!! !!!LASTNAME!!!,
dimilar.token_error.support=For support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar.token_error.token_expired=Token scad&igrave; u gia duvr&agrave;.
dimilar_onboarding.aborted.link=If you require support please visit <a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.aborted.message=Onboarding suspend&igrave;. Empruvai anc ina giada.
dimilar_onboarding.failed.link=<a class='link' href='https://agov.ch/dimilar' target='_blank'>https://agov.ch/dimilar</a>.
dimilar_onboarding.failed.message=Onboarding suspend&igrave;. Contactai per plaschair il support.
dimilar_onboarding.successful.message=Onboarding cun conto AGOV reuss&igrave;. Vus pudais ussa acceder a Dimilar qua <a class='link' href='https://www.armee.ch/dim' target='_blank'>https://www.armee.ch/dim</a>.
dimilar_onboarding.title=Registrar
error_1=Controllai Vossas indicaziuns per plaschair.
error_10=Selecziunai il conto d'utilisader correct.
error_100=I n'&egrave; betg pussaivel da chargiar si il certificat. Quest certificat exista gia. Contactai il helpdesk.
@ -18,8 +37,16 @@ error_11=Duvrai in auter certificat u As annunziai cun in auter factur da login.
error_2=Selecziunai in auter num d'utilisader.
error_3=Sche la proxima autentificaziun na reussescha betg vegn Voss conto blocc&agrave;.
error_4=Voss nov pled-clav n'&egrave; betg confurm a las directivas da segirezza. Selecziunai in auter pled-clav per plaschair.
error_403.description=Vus n'essas betg autoris&agrave; d'acceder a questa applicaziun.
error_403.title=Betg autoris&agrave;
error_404.description=La pagina che Vus tschertgais n'exista betg.
error_404.title=Pagina nunchattabla
error_5=Sbagl da confermar il pled-clav.
error_50=Il nov pled-clav &egrave; memia curt.
error_500.description=Igl ha d&agrave; ina interrupziun dal servetsch. Nus lavurain vidlonder.
error_500.title=Insatge n'ha betg funcziun&agrave;.
error_502.description=Nus lavurain vidlonder. Empruvai anc ina giada pli tard per plaschair.
error_502.title=Insatge n'ha betg funcziun&agrave;.
error_55=Il nov pled-clav sto esser different da pled-clavs vegls.
error_6=Midada d'il pled-clav &egrave; necessaria.
error_7=Midada da la login ID &egrave; necessaria.
@ -54,11 +81,17 @@ general.cancel=Interrumper
general.confirm=Confermar
general.contactSupport=Contactar il support
general.continue=Vinavant
general.data.birthDate=Data da naschientscha
general.data.birthDateFormat=DD.MM.AAAA
general.data.enrollmentNumber=Enrolment number (SSN/AHV number)
general.data.firstname=Prenum
general.data.lastname=Num
general.edit=Modifitgar
general.email=E-mail
general.email.address=Adressa d'e-mail
general.entryCode=Endatar il code
general.fieldRequired=Champ obligatoric
general.generalAccessApp=App access
general.getStarted=Cumenzar
general.goAGOVHelp=Vinavant a AGOV help
general.goAccessApp=Login cun AGOV access
@ -91,7 +124,7 @@ general.skip.content=Avanzar a la part principala
general.wrongPhoneNumber=Endatai in numer da telefonin valid
generic.auth.error.message=Igl ha d&agrave; ina interrupziun dal servetsch. Nus lavurain vidlonder.
generic.auth.error.next.steps=Empruvai pli tard anc ina giada per plaschair. Visitai AGOV help en cass che il problem persista vinavant.
generic.auth.error.subtitle=Insatge n'ha betg funcziun&agrave;
generic.auth.error.subtitle=Insatge n'ha betg funcziun&agrave;.
generic.auth.error.title=Errur
language.de=Deutsch
language.en=English
@ -107,6 +140,8 @@ loainfo.later=Pli tard
loainfo.startNow=Vulais Vus ussa cumenzar cun il process?
loainfo.startVerification=Cumenzar
loainfo.title=Verifitgai Vossas datas
loggedout.description=Voss logout &egrave; reuss&igrave;.
loggedout.title=Deconnect&agrave;
mauth_usernameless.EID=Vinavant cun la e-ID svizra
mauth_usernameless.banner.error=Autentificaziun interrutta. <br>Empruvai anc ina giada suenter che la pagina &egrave; rechargiada per plaschair.
mauth_usernameless.banner.info=Scan reuss&igrave;. Cuntinuai per plaschair en l'app AGOV access.
@ -122,6 +157,16 @@ mauth_usernameless.showQR=Mussar il code QR
mauth_usernameless.startRecovery=Cumenzar cun la recuperaziun dal conto
mauth_usernameless.useSecurityKey=Duvrai ina clav da segirezza per As annunziar
mauth_usernameless.useSecurityKeyInfo=Ina clav da segirezza fisica pussibilitescha ina annunzia segira senza telefonin.
onboard_linking_account_auth.fido_instructions=Ina clav da segirezza fisica pussibilitescha in Onboarding da Voss conto segir senza telefonin.
onboard_linking_account_auth.instructions=Faschai il Onboarding da Voss conto AGOV entras scannar il code QR cun Vossa app AGOV access
onboarding.cancel-onboarding=Essas tscherts che Vus vulais interrumper il process d'Onboarding?
onboarding.cancel-onboarding-description=Per saver cumenzar cun ina recuperaziun da Voss conto stuais Vus interrumper il process d'Onboarding.
onboarding.cancel-proceed-recovery=Gea, interumper e cumenzar cun la recuperaziun
onboarding.login-factor=Pass 1 - Factur da login
onboarding.with-agov.title=Onboarding cun conto AGOV
onboarding_account.switchLinking=Midar al Onboarding cun
onboarding_account_auth.loginSecurityKey=Cummenzar il Onboarding cun la clav da segirezza
onboarding_account_auth.useSecurityKey=Utilisa&igrave; vossa clav da segirezza per cuntinuar cun Voss account AGOV
op-admin.login=AGOV op admin
op-admin.login.intro.message=Login cun Voss num d'utilisader e cun Voss pled-clav
op-admin.login.loginid=LoginId
@ -222,7 +267,7 @@ recovery_questionnaire_no_recovery.instruction2=Sche Vus avais registr&agrave; p
recovery_questionnaire_reason_selection.answer1=Jau hai problems da m'annunziar, malgr&agrave; che jau hai mia app / clav da segirezza
recovery_questionnaire_reason_selection.answer10=Jau hai pers in da mes facturs da login (app AGOV access u clav da segirezza)
recovery_questionnaire_reason_selection.answer2=Jau n'hai betg pud&igrave; terminar mia registraziun
recovery_questionnaire_reason_selection.answer3=Jau hai stizz&agrave; u reinizialis&agrave; mia app AGOV access
recovery_questionnaire_reason_selection.answer3=Jau hai stizz&agrave;, u reinizialis&agrave; mia app AGOV access, u igl &egrave; inditg&agrave; che nagin conto exista
recovery_questionnaire_reason_selection.answer4=Jau hai pers mes telefonin / mia clav da segirezza
recovery_questionnaire_reason_selection.answer5=Jau hai in nov telefonin ed hai emblid&agrave; da transferir mia app AGOV access
recovery_questionnaire_reason_selection.answer6=Jau hai emblid&agrave; il PIN per mia app AGOV access
@ -234,6 +279,8 @@ recovery_questionnaire_reason_selection.instruction=Selecziunai per plaschair il
recovery_start_info.banner.warning=Vus na pudais betg utilisar Voss conto, fin ch'il process da recuperaziun &egrave; termin&agrave;.
recovery_start_info.instruction=Durant il process da recuperaziun vegnis Vus a registrar in nov factur da login. Sche Voss conto cuntegna infurmaziuns verifitgadas, stuais Vus eventualmain er far in process da verificaziun per pudair terminar il process da recuperaziun.
recovery_start_info.title=Vus essas vidlonder da cumenzar cun il process da recuperaziun
timeout.description=Vossa sessiun &egrave; scadida. Serrai questa fanestra ed empruvai anc ina giada d'acceder per plaschair.
timeout.title=Sessiun scadida
user_input.invalid.email=Endatai in'adressa d'e-mail valida
user_input.invalid.email.required=Champ obligatoric
user_input.invalid.email.tooLong=Il text endat&agrave; e memia lung

View File

@ -1,10 +0,0 @@
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M13.9697 17.2808C12.9941 18.2276 11.9177 18.08 10.8917 17.6336C9.80091 17.1782 8.80371 17.1494 7.65171 17.6336C6.21711 18.2528 5.45571 18.0728 4.59171 17.2808C-0.28628 12.2588 0.433719 4.60879 5.97771 4.32079C7.32231 4.39279 8.26371 5.06419 9.05571 5.11999C10.2329 4.88059 11.3597 4.19479 12.6197 4.28479C14.1335 4.40719 15.2657 5.00479 16.0217 6.07938C12.9077 7.95138 13.6457 12.0554 16.5059 13.2074C15.9335 14.7104 15.1991 16.1954 13.9679 17.2934L13.9697 17.2808ZM8.94771 4.26679C8.80191 2.03479 10.6109 0.198798 12.6917 0.0187988C12.9779 2.59279 10.3517 4.51879 8.94771 4.26679Z" fill="#1F2F33"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="15.156" height="18" fill="white" transform="translate(1.3335)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 872 B

View File

@ -66,7 +66,7 @@ const Status = {
};
function setDeepLinkLabel(button) {
const text = document.getElementById('info.login.access_app').innerText;
const text = document.getElementsByName('info.deeplink')[0].value;
button.innerHTML = text;
}
@ -80,13 +80,7 @@ function messageCheckPhone() {
infoElement.innerHTML = text;
}
function showError() {
const text = document.getElementsByName('error.authcloud.login')[0].value;
errorElement.innerHTML = text;
infoElement.style.display = "none";
}
const AccessAppElement = {
const Element = {
_elem: null, // QR code or deep link depending on device
@ -97,11 +91,8 @@ const AccessAppElement = {
if (isAndroid || isIphone) {
this._elem = document.createElement('a');
this._elem.setAttribute('href', appLink);
this._elem.setAttribute('class', 'btn btn-primary w-100 mt-4');
this._elem.setAttribute('class', 'btn btn-primary');
this._elem.setAttribute('target', '_blank');
// distinguishes style for platforms
dispatcherElement.classList.add('mobile-platform');
dispatcherElement.appendChild(this._elem);
setDeepLinkLabel(this._elem);
}
@ -112,23 +103,13 @@ const AccessAppElement = {
}
else {
messageScanQR();
const qrSize = 280;
// Element to render the QR code
this._elem = document.createElement('canvas');
// Wrapper div to render corners
const qrCodeWrapper = document.createElement('div');
qrCodeWrapper.setAttribute('id','qr-code-wrapper');
qrCodeWrapper.style.width = `${qrSize}px`;
qrCodeWrapper.style.height = `${qrSize}px`;
qrCodeWrapper.appendChild(this._elem)
dispatcherElement.style.height = `${qrSize}px`;
dispatcherElement.appendChild(qrCodeWrapper);
const qrcode = new QRious({
dispatcherElement.appendChild(this._elem);
var qrcode = new QRious({
element: this._elem,
// use --nevis-gray-900 CSS variable value
foreground: getComputedStyle(document.body).getPropertyValue('--nevis-gray-900'),
foreground: "#168CA9",
level: "M",
size: qrSize,
size: 280,
value: appLink
});
}
@ -144,31 +125,20 @@ const AccessAppElement = {
};
function authenticateUser(appLink) {
AccessAppElement.show(appLink);
console.log('Starting Auth Cloud status polling...');
Element.show(appLink);
console.log('Starting Authentication Cloud status polling...');
Status.startPolling(statusToken, (st, done) => {
if (st.status === 'succeeded') {
console.log('Auth Cloud success.');
// auto submit form with outcome
console.log('Authentication Cloud login done.');
submitStatus('succeeded')
}
else if (st.status === 'failed') {
// failed: The transaction failed, either by timeout or because the user did not accept.
console.warn('Auth Cloud login failed. User abort or timeout.');
console.warn('Authentication Cloud login failed. User abort or timeout.');
submitStatus('failed')
}
else if (st.status === 'unknown') {
console.error('Auth Cloud login failed. Unknown status.');
console.error('Authentication Cloud login failed. Unknown status.');
submitStatus('unknown')
}
});

View File

@ -75,12 +75,7 @@ function messageScanQR() {
infoElement.innerHTML = text;
}
function messageInstalledAccessApp() {
const text = document.getElementById('info.access_app.installed').innerText;
infoElement.innerHTML = text;
}
const AccessAppElement = {
const Element = {
_elem: null, // QR code or deep link depending on device
@ -89,47 +84,22 @@ const AccessAppElement = {
const isIphone = 'iPhone' === navigator.platform;
const isAndroid = /android/i.test(userAgent) && /mobile/i.test(userAgent);
if (isAndroid || isIphone) {
if (isAndroid) {
document.getElementById('install_apple').style.display = 'none';
}
if (isIphone) {
document.getElementById('install_google').style.display = 'none';
}
this._elem = document.createElement('a');
this._elem.setAttribute('href', appLink);
this._elem.setAttribute('class', 'btn btn-primary w-100');
this._elem.setAttribute('class', 'btn btn-primary');
this._elem.setAttribute('target', '_blank');
// distinguishes style for platforms
dispatcherElement.classList.add('mobile-platform');
const accessApplinks = document.getElementById('access-app-download-link');
accessApplinks.classList.add('access-app-download-link-mobile-spacing');
dispatcherElement.appendChild(this._elem);
setDeepLinkLabel(this._elem);
// info text is displayed before access app links
accessApplinks.parentNode.insertBefore(infoElement.parentNode, accessApplinks);
messageInstalledAccessApp();
}
else {
messageScanQR();
const qrSize = 280;
// Element to render the QR code
this._elem = document.createElement('canvas');
// Wrapper div to render corners
const qrCodeWrapper = document.createElement('div');
qrCodeWrapper.setAttribute('id','qr-code-wrapper');
qrCodeWrapper.style.width = `${qrSize}px`;
qrCodeWrapper.style.height = `${qrSize}px`;
qrCodeWrapper.appendChild(this._elem)
dispatcherElement.style.height = `${qrSize}px`;
dispatcherElement.appendChild(qrCodeWrapper);
const qrcode = new QRious({
dispatcherElement.appendChild(this._elem);
var qrcode = new QRious({
element: this._elem,
// use --nevis-gray-900 CSS variable value
foreground: getComputedStyle(document.body).getPropertyValue('--nevis-gray-900'),
foreground: "#168CA9",
level: "M",
size: qrSize,
size: 280,
value: appLink
});
}
@ -144,47 +114,25 @@ const AccessAppElement = {
};
function onboardUser(appLink) {
AccessAppElement.show(appLink);
console.log('Starting Auth Cloud status polling...');
Element.show(appLink);
console.log('Starting Authentication Cloud status polling...');
Status.startPolling(statusToken, (st, done) => {
if (st.status === 'succeeded') {
console.log('Auth Cloud success.');
// auto submit form with outcome
console.log('Authentication Cloud onboarding done.');
submitStatus('succeeded')
}
else if (st.status === 'failed') {
// failed: The transaction failed, either by timeout or because the user did not accept.
console.warn('Authentication Cloud onboarding failed. User abort or timeout.');
submitStatus('failed')
}
else if (st.status === 'unknown') {
console.error('Authentication Cloud onboarding failed. Unknown status.');
submitStatus('unknown')
}
});
}
const swap = function (nodeA, nodeB) {
const parentA = nodeA.parentNode;
const siblingA = nodeA.nextSibling === nodeB ? nodeA : nodeA.nextSibling;
// Move `nodeA` to before the `nodeB`
nodeB.parentNode.insertBefore(nodeA, nodeB);
// Move `nodeB` to before the sibling of `nodeA`
parentA.insertBefore(nodeB, siblingA);
};
function init() {
const form = document.getElementById('authcloud_onboard');
@ -197,9 +145,6 @@ function init() {
dispatcherElement = document.getElementById('authcloud_dispatch');
// info texts are displayed underneath QR code
swap(infoElement.parentNode, dispatcherElement.parentNode);
const appLink = form.appLink.value;
onboardUser(appLink);
}

View File

@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.6667 6L8 10.6667L3.33333 6" stroke="#1F2F33" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 227 B

View File

@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6 3.33332L10.6667 7.99999L6 12.6667" stroke="#1F2F33" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 235 B

View File

@ -1,27 +0,0 @@
function copyToClipboard(containerid) {
if (document.selection) {
var range = document.body.createTextRange();
range.moveToElementText(document.getElementById(containerid));
range.select().createTextRange();
document.execCommand("copy");
} else if (window.getSelection) {
var range = document.createRange();
range.selectNode(document.getElementById(containerid));
window.getSelection().addRange(range);
document.execCommand("copy");
}
// clear selection
if (window.getSelection) {
if (window.getSelection().empty) {
// Chrome
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) {
// Firefox
window.getSelection().removeAllRanges();
}
} else if (document.selection) {
// IE
document.selection.empty();
}
}

View File

@ -1,755 +0,0 @@
/*!
* Bootstrap v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*
* This file contains customized bootstrap classes which are in the same name, however differ in the implementation.
* Classes use CSS custom properties from :root to be runtime modifiable.
* Used a portion of bootstrap classes which satisfy the requirements without to include the whole bootstrap bundle.
* If you would like to add new classes as "override" or extension please use the bootstrap naming convention.
*/
/* Form controls */
.form-label {
margin-bottom: 0.25rem;
}
.form-check:has(.form-check-label) {
padding: 1em 1em 1em 1.6em;
border-top: solid 1px lightgray;
margin: 0 1em 0 1em;
}
.form-check-label {
font-size: 0.875rem !important;
}
.form-group {}
.form-control {
display: block;
width: 100%;
padding: 0.5625rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.25rem;
color: var(--nevis-black);
background-color: var(--nevis-white);
background-clip: padding-box;
border: 0.0625rem solid var(--nevis-form-control-border-color);
border-radius: var(--nevis-border-radius);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
}
.form-control:focus {
color: var(--nevis-black);
background-color: var(--nevis-white);
border-color: var(--nevis-primary);
outline: 0;
box-shadow: 0 0 0 0.0625rem var(--nevis-primary);
}
.form-control::-webkit-date-and-time-value {
height: 1.5em;
}
.form-control::-moz-placeholder {
color: var(--nevis-secondary);
opacity: 1;
}
.form-control::placeholder {
color: var(--nevis-secondary);
opacity: 1;
}
.form-control:disabled {
font-size: 0.875rem;
background-color: #e9ecef;
opacity: 1;
}
.form-control[readonly] {
background: var(--nevis-readonly-bg-color);
border-color: var(--nevis-readonly-border-color);
border-radius: var(--nevis-border-radius);
color: var(--nevis-gray-900);
font-size: 0.875rem;
}
.form-control[readonly]:focus {
box-shadow: 0 0 0 0.0625rem var(--nevis-readonly-box-shadow-color);
}
/* Valdiation */
.invalid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 0.875em;
color: var(--nevis-danger);
}
.was-validated :invalid~.invalid-feedback,
.was-validated :invalid~.invalid-tooltip,
.is-invalid~.invalid-feedback,
.is-invalid~.invalid-tooltip {
display: block;
}
/* Added for 3rd party International Telephone Input */
.was-validated .iti~.invalid-feedback.invalid-feedback-ready,
.was-validated .iti~.invalid-tooltip.invalid-feedback-ready {
display: block;
}
.was-validated .form-control:invalid,
.form-control.is-invalid {
border-color: var(--nevis-danger);
border-width: 0.125rem;
padding-right: inherit;
background-image: none;
background-repeat: no-repeat;
background-position: inherit;
background-size: inherit;
}
.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus {
border-color: var(--nevis-danger);
box-shadow: none;
}
.form-control:valid,
.form-control.is-valid {
background-image: none;
}
/* remove valid feedback classes */
.was-validated .form-control:valid,
.form-control.is-valid {
border-color: var(--nevis-gray-400);
padding-right: inherit;
background-image: inherit;
background-repeat: no-repeat;
background-position: inherit;
background-size: inherit;
}
.was-validated .form-control:valid:focus,
.form-control.is-valid:focus {
border-color: var(--nevis-gray-400);
box-shadow: unset;
}
.was-validated textarea.form-control:valid,
textarea.form-control.is-valid {
padding-right: inherit;
background-position: inherit;
}
.was-validated .form-select:valid,
.form-select.is-valid {
border-color: var(--nevis-gray-400);
}
.was-validated .form-select:valid:not([multiple]):not([size]),
.was-validated .form-select:valid:not([multiple])[size="1"],
.form-select.is-valid:not([multiple]):not([size]),
.form-select.is-valid:not([multiple])[size="1"] {
padding-right: inherit;
background-image: none;
background-position: inherit;
background-size: inherit;
}
.was-validated .form-select:valid:focus,
.form-select.is-valid:focus {
border-color: var(--nevis-gray-400);
box-shadow: unset;
}
.was-validated .form-check-input:valid,
.form-check-input.is-valid {
border-color: var(--nevis-gray-400);
}
.was-validated .form-check-input:valid:checked,
.form-check-input.is-valid:checked {
background-color: inherit;
}
.was-validated .form-check-input:valid:focus,
.form-check-input.is-valid:focus {
box-shadow: unset;
}
.was-validated .form-check-input:valid~.form-check-label,
.form-check-input.is-valid~.form-check-label {
color: inherit;
}
/* Buttons */
.btn {
display: inline-block;
font-weight: 500;
line-height: 1.5rem;
color: var(--nevis-black);
text-align: center;
text-decoration: none;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
background-color: transparent;
border: 0.0625rem solid transparent;
padding: 0.75rem 1.25rem;
font-size: 1rem;
border-radius: var(--nevis-border-radius);
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
}
.btn:hover {
color: var(--nevis-black);
}
.btn:disabled,
.btn.disabled,
fieldset:disabled .btn {
pointer-events: none;
opacity: 0.65;
}
/* remove box-shadows by default, enable later by colors */
.btn:focus {
box-shadow: unset;
}
.btn-check:checked+.btn-primary:focus,
.btn-check:active+.btn-primary:focus,
.btn-primary:active:focus,
.btn-primary.active:focus,
.show>.btn-primary.dropdown-toggle:focus {
box-shadow: unset;
}
/* Primary Button */
.btn-primary {
color: var(--nevis-white);
background-color: var(--nevis-primary);
border-color: var(--nevis-primary);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-primary);
}
.btn-primary:hover {
color: var(--nevis-white);
filter: brightness(110%);
background-color: var(--nevis-primary);
border-color: var(--nevis-primary);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-primary);
}
.btn-primary:focus {
color: var(--nevis-white);
background-color: var(--nevis-primary);
border-color: var(--nevis-primary);
filter: brightness(110%);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-primary);
}
.btn-primary:active,
.btn-primary.active {
color: var(--nevis-white);
background-color: var(--nevis-primary);
border-color: var(--nevis-primary);
filter: brightness(90%);
}
.btn-primary:active:focus,
.btn-primary.active:focus {
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-primary);
}
.btn-primary:disabled,
.btn-primary.disabled {
color: var(--nevis-secondary);
background-color: var(--nevis-gray-100);
border-color: var(--nevis-gray-100);
box-shadow: none;
filter: brightness(1);
}
/* Secondary Button */
.btn-secondary {
color: var(--nevis-gray-900);
background-color: var(--nevis-gray-200);
border-color: var(--nevis-gray-200);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-gray-200);
}
.btn-secondary:hover {
color: var(--nevis-gray-900);
filter: brightness(110%);
background-color: var(--nevis-gray-200);
border-color: var(--nevis-gray-200);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-gray-200);
}
.btn-secondary:focus {
color: var(--nevis-gray-900);
background-color: var(--nevis-gray-200);
border-color: var(--nevis-gray-200);
filter: brightness(110%);
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-gray-200);
}
.btn-secondary:active,
.btn-secondary.active {
color: var(--nevis-gray-900);
background-color: var(--nevis-gray-200);
border-color: var(--nevis-gray-200);
filter: brightness(90%);
}
.btn-secondary:active:focus,
.btn-secondary.active:focus {
box-shadow: 0rem 0.25rem 1.875rem -0.625rem var(--nevis-gray-200);
}
.btn-secondary:disabled,
.btn-secondary.disabled {
color: var(--nevis-secondary);
background-color: var(--nevis-gray-100);
border-color: var(--nevis-gray-100);
box-shadow: none;
filter: brightness(1);
}
.btn-link {
font-size: 0.875rem !important;
vertical-align: baseline;
border: none;
color: var(--nevis-primary);
background: none;
text-decoration: none;
padding: 0;
}
/* Componentes */
.dropdown-toggle::after {
display: none !important;
}
/* Utilities */
h6,
.h6,
h5,
.h5,
h4,
.h4,
h3,
.h3,
h2,
.h2,
h1,
.h1 {
margin-top: 0;
font-weight: 500;
line-height: 1.2;
}
h1,
.h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1,
.h1 {
font-size: 2.5rem;
}
}
h2,
.h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2,
.h2 {
font-size: 2rem;
}
}
h3,
.h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3,
.h3 {
font-size: 1.75rem;
}
}
h4,
.h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4,
.h4 {
font-size: 1.5rem;
}
}
h5,
.h5 {
font-size: 1.25rem;
}
h6,
.h6 {
font-size: 1rem;
}
small,
.small {
font-size: 0.875rem !important;
}
.text-primary {
color: var(--nevis-primary) !important;
}
.text-secondary {
color: var(--nevis-secondary) !important;
}
.text-success {
color: var(--nevis-success) !important;
}
.text-info {
color: var(--nevis-info) !important;
}
.text-warning {
color: var(--nevis-warning) !important;
}
.text-danger {
color: var(--nevis-danger) !important;
}
.text-light {
color: var(--nevis-light) !important;
}
.text-dark {
color: var(--nevis-dark) !important;
}
.text-white {
color: var(--nevis-white) !important;
}
.bg-primary {
background-color: var(--nevis-primary) !important;
}
.bg-secondary {
background-color: var(--nevis-secondary) !important;
}
.bg-success {
background-color: var(--nevis-success) !important;
}
.bg-info {
background-color: var(--nevis-info) !important;
}
.bg-warning {
background-color: var(--nevis-warning) !important;
}
.bg-danger {
background-color: var(--nevis-danger) !important;
}
.bg-light {
background-color: var(--nevis-light) !important;
}
.bg-dark {
background-color: var(--nevis-dark) !important;
}
.bg-body {
background-color: var(--nevis-white) !important;
}
.bg-white {
background-color: var(--nevis-white) !important;
}
.link-primary {
color: var(--nevis-primary);
}
.link-primary:hover,
.link-primary:focus {
color: var(--nevis-primary);
filter: brightness(80%);
}
.link-secondary {
color: var(--nevis-secondary);
}
.link-secondary:hover,
.link-secondary:focus {
color: var(--nevis-secondary);
filter: brightness(80%);
}
.link-success {
color: var(--nevis-success);
}
.link-success:hover,
.link-success:focus {
color: var(--nevis-success);
filter: brightness(80%);
}
.link-info {
color: var(--nevis-info);
}
.link-info:hover,
.link-info:focus {
color: var(--nevis-info);
filter: brightness(80%);
}
.link-warning {
color: var(--nevis-warning);
}
.link-warning:hover,
.link-warning:focus {
color: var(--nevis-warning);
filter: brightness(80%);
}
.link-danger {
color: var(--nevis-danger);
}
.link-danger:hover,
.link-danger:focus {
color: var(--nevis-danger);
filter: brightness(80%);
}
.link-light {
color: var(--nevis-light);
}
.link-light:hover,
.link-light:focus {
color: var(--nevis-light);
filter: brightness(80%);
}
.link-dark {
color: var(--nevis-dark);
}
.link-dark:hover,
.link-dark:focus {
color: var(--nevis-dark);
filter: brightness(80%);
}
.border-primary {
border-color: var(--nevis-primary) !important;
}
.border-secondary {
border-color: var(--nevis-secondary) !important;
}
.border-success {
border-color: var(--nevis-success) !important;
}
.border-info {
border-color: var(--nevis-info) !important;
}
.border-warning {
border-color: var(--nevis-warning) !important;
}
.border-danger {
border-color: var(--nevis-danger) !important;
border-width: 0.125rem;
}
.border-light {
border-color: var(--nevis-light) !important;
}
.border-dark {
border-color: var(--nevis-dark) !important;
}
.border-white {
border-color: var(--nevis-white) !important;
}
/* EXTENSION PART */
/* Spacing */
.mt-20 {
margin-top: 1.25rem;
}
.me-5px {
margin-right: 0.3125rem;
}
.my-40 {
margin: 2.5rem 0;
}
.mb-40 {
margin-bottom: 2.5rem;
}
/* Colors */
.text-nevis-blue {
color: var(--nevis-blue-600) !important;
}
.bg-nevis-blue {
background-color: var(--nevis-blue-600) !important;
}
.border-nevis-blue {
border-color: var(--nevis-blue-600) !important;
}
.link-nevis-blue {
color: var(--nevis-blue-600);
}
.link-nevis-blue:hover,
.link-nevis-blue:focus {
color: var(--nevis-blue-600);
filter: brightness(80%);
}
.btn-language-selector {
display: inline-flex;
justify-content: center;
align-items: center;
flex-shrink: 0;
padding: 0;
min-width: 0;
box-sizing: border-box;
box-shadow: none;
font-size: 0.875rem !important;
line-height: 1.25rem;
font-weight: normal;
outline: none;
border: none;
vertical-align: baseline;
text-align: center;
background-color: initial;
color: var(--nevis-gray-900);
}
.btn-language-selector:hover {
background: initial;
}
.btn-language-selector:active {
background: initial;
}
.btn-language-selector:focus {
box-shadow: none;
}
.btn-language-selector+.dropdown-menu {
min-width: 0;
width: 10rem;
padding: 0.25rem 0;
/* centering the dropdown */
margin-left: -0.5rem !important;
margin-top: 0.5rem !important;
overflow: hidden;
box-shadow: 0rem 0rem 0rem 0.0625rem var(--nevis-gray-200),
0rem 0.1875rem 1.25rem -0.625rem var(--nevis-gray-900);
border-radius: var(--nevis-border-radius);
border: 0;
}
.btn-language-selector+.dropdown-menu>li {
overflow: hidden;
}
.btn-language-selector+.dropdown-menu .dropdown-item {
font-style: normal;
font-weight: normal;
font-size: 0.875rem;
line-height: 1.25rem;
padding: 0.5rem 1rem;
color: var(--nevis-gray-900);
}
.btn-language-selector+.dropdown-menu .dropdown-item:hover {
background: var(--nevis-blue-100);
}
.btn-language-selector+.dropdown-menu .dropdown-item:focus {
background: none;
}
.btn-language-selector+.dropdown-menu .dropdown-item:active,
.btn-language-selector+.dropdown-menu .dropdown-item.active {
background: var(--nevis-blue-100);
filter: brightness(90%);
}

View File

@ -0,0 +1,222 @@
/********************************************************
* Layout
********************************************************/
html { /* magic to position footer */
position: relative;
min-height: 100%;
}
body {
margin-bottom: 76px; /* == footer height */
}
.container, .container-fluid {
padding-left: 36px;
padding-right: 36px;
}
nav {
min-height: 100px;
padding: 36px;
}
header {
margin-bottom: 16px; /* h1.logintitle adds 20px => 36px */
}
.container {
min-width: 260px;
max-width: 700px;
}
h1 {
margin-bottom: 50px;
}
footer {
width: 100%;
position: absolute;
bottom: 0;
padding: 0 36px;
}
img {
width: 100%;
}
/********************************************************
* Header
********************************************************/
header .logo {
/* width: 20%;*/
/*max-width: 600px;*/
max-height: 150px;
width: auto;
}
/********************************************************
* Dropdown
********************************************************/
a.dropdown-toggle {
text-decoration: none;
}
a.dropdown-toggle:hover {
color: #168CA9;
border-bottom: 3px solid #168CA9;
}
.dropdown-menu {
padding: 5px 0;
}
.dropdown-menu li > a {
padding: 6px 28px;
}
.dropdown-menu a > .prefix {
display: inline-block;
min-width: 22px;
margin-right: 28px;
text-align: right;
}
/********************************************************
* Form
********************************************************/
/* Labels should not be bold */
label {
font-weight: normal;
}
/* Make error messages bold */
.has-error .help-block {
font-weight: bold;
}
/* Change button size, by default 116px in width */
.btn {
min-width: 116px;
padding: 3px 12px;
}
/* Disable gradient in buttons, ughhhh */
.btn.btn-primary {
border-color: transparent;
background-image: none;
text-shadow: none;
box-shadow: none;
-webkit-box-shadow: none;
}
.help-block a, .help-block a:visited {
color: #168CA9;
font-weight: bold;
text-decoration: none;
}
.help-block a:hover {
color: #168CA9;
text-decoration: underline;
}
/********************************************************
* Footer
********************************************************/
footer .row {
margin: 36px 0 0 0;
height: 40px;
padding-top: 14px;
line-height: 26px; /* to center text: height - padding-top = 26px */
border-top: 1px solid #168CA9;
}
footer .row > div { /* Fix alignment between border + text on Bootstrap grid */
padding: 0;
}
footer .logo-round-container {
position: relative;
}
footer .logo-round {
position: absolute;
left: 0;
right: 0;
top: -33px; /* found visually with Chrome Dev Tools */
height: 36px;
width: 36px;
border: 1px solid #00868c;
border-radius: 18px;
background: #fff;
padding: 8px;
}
footer .logo-round > img {
display: block;
}
#dispatchTargets {
margin-top: 20px;
}
/********************************************************
* Social login
********************************************************/
.btn.line {
background-color: transparent;
display: block;
width: 100%;
padding: 0;
margin: 1.5em 0 1em;
border: 0.5px solid #ccc;
pointer-events: none;
}
.btn.socialLogin {
background-color: #fff;
border: thin solid #ccc;
color: #000;
font-weight: 600;
position: relative;
margin: 5px;
min-width: 140px;
width: 210px;
border-radius: 8px;
padding: 8px 12px;
text-align: left;
}
.socialLogin img {
width: 1.5em;
height: 108%;
margin-right: 0.5em;
}
.btn.apple img {
width: 1.2em;
}
/********************************************************
* Show password
********************************************************/
.icon-inside {
position: relative;
}
.icon-inside input {
padding-right: calc(0.75rem + 1.25rem + 0.75rem);
}
.icon-inside button {
position: absolute;
right: 0;
top: 0;
margin-top: 0.45rem;
margin-right: 0.45rem;
background: #FFFFFF;
border: #FFFFFF;
}

View File

@ -1,23 +0,0 @@
function displayRecoveryCodes() {
const recoverCodes = document.getElementById("recovery-codes-raw");
// early return if recoverCodes not found
if (!recoverCodes) {
return;
}
var recoveryCodesContent = recoverCodes.innerHTML;
recoveryCodesContent = recoveryCodesContent.replace("[", "");
recoveryCodesContent = recoveryCodesContent.replace("]", "");
recoveryCodesContent = recoveryCodesContent.split(",");
for (let i = 0; i < recoveryCodesContent.length; i++) {
if (i % 2 == 0) {
document.getElementById("recovery-codes").innerHTML += "<div class=\"recovery-code-gray printable\">" + recoveryCodesContent[i] + "</div>";
}
else {
document.getElementById("recovery-codes").innerHTML += "<div class=\"recovery-code-white printable\">" + recoveryCodesContent[i] + "</div>";
}
}
recoverCodes.remove();
}
displayRecoveryCodes();

View File

@ -1,26 +0,0 @@
function downloadRecoveryCodes(contentContainerId) {
const textToDownload = document.getElementById(contentContainerId).innerText;
// It is necessary to create a new blob object with mime-type explicitly set
// otherwise only Chrome works like it should
const newBlob = new Blob([textToDownload], { type: "text/plain" });
// IE doesn't allow using a blob object directly as link href
// instead it is necessary to use msSaveOrOpenBlob
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob, "recovery-codes.txt");
return;
}
// For other browsers:
// Create a link pointing to the ObjectURL containing the blob.
const data = window.URL.createObjectURL(newBlob);
const link = document.createElement("a");
link.href = data;
link.download = "recovery-codes.txt";
link.click();
setTimeout(() => {
// For Firefox it is necessary to delay revoking the ObjectURL
window.URL.revokeObjectURL(data);
}, 400);
link.remove();
}

View File

@ -0,0 +1,36 @@
(function() {
var closeDropdownTimeout;
function closeDropdown(event) {
var dropdowns = document.querySelectorAll('.dropdown');
for (var i = 0; i < dropdowns.length; i++) {
var dropdownMenu = dropdowns[i].querySelector('.dropdown-menu');
if (dropdownMenu.style.display !== 'none' && !dropdowns[i].contains(event.target)) {
dropdownMenu.style.display = 'none';
}
}
// remove event listener till we have a new dropdown menu open
if (document.querySelector('.dropdown-menu:not([style*="display: none"])') === null) {
document.removeEventListener('click', closeDropdown);
}
}
var dropdowns = document.querySelectorAll('.dropdown');
for (var i = 0; i < dropdowns.length; i++) {
var dropdownMenu = dropdowns[i].querySelector('.dropdown-menu');
dropdownMenu.style.display = 'none'; // ensure menu is initially hidden
dropdowns[i].addEventListener('click', function(e) {
// show dropdown menu
var dropdownMenu = this.querySelector('.dropdown-menu');
dropdownMenu.style.display = 'block';
// handle clicking away
clearTimeout(closeDropdownTimeout);
closeDropdownTimeout = setTimeout(function() {
document.addEventListener('click', closeDropdown);
}, 10);
});
}
}());

View File

@ -0,0 +1,98 @@
var e2eenc = function() {
this.encryptForm = function(algoString, formId) {
// TODO: in case of an error we should return false, to prevent the for to be submitted
// or replace the fields with dummy values, just to prevent the the transmission
// of unencrypted values
// create the array of input fields to encrypt (needs to be done before setting the form
// invisible
var fieldsToEncrypt = new Array();
$.each($("form input:visible"), function(index, _inputField) { fieldsToEncrypt.push($(_inputField));});
// hide the form, and display the splash screen
$('#loginform').css('display','none');
$('#e2eeSplashScreen').css('display','block');
// encryption logic
var pubKey = $("input[name='e2eenc.publicKey']").val();
var kemSessionKey = readPublicKeyAndGenerateSessionKey(pubKey)
var iv = forge.random.getBytesSync(16);
keyB64 = forge.util.encode64(kemSessionKey.key);
encapsulationB64 = forge.util.encode64(kemSessionKey.encapsulation);
ivB64 = forge.util.encode64(iv);
//console.log("Encrypting form " + formId + " (" + algoString + ")");
var fields = "";
$.each(fieldsToEncrypt, function(index, _inputField) {
var inputField = $(_inputField);
if (inputField.attr("type") == "text" || inputField.attr("type") == "password") {
//console.log("Encrypting field " + JSON.stringify(inputField));
var plainValue = inputField.val();
var encryptedValueB64 = encrypt(kemSessionKey, iv, plainValue);
//console.log("Setting encrypted value in b64: " + encryptedValueB64);
inputField.val(encryptedValueB64);
if (fields.length > 0) {
fields = fields + ","
}
fields = fields + inputField.attr("name");
}
});
$("input[name='e2eenc.iv']").val(ivB64);
$("input[name='e2eenc.encapsulation']").val(encapsulationB64);
$("input[name='e2eenc.fields']").val(fields);
}
function getRSApublicKey(pem) {
//console.log("PEM: " + pem);
var msg = forge.pem.decode(pem)[0];
//console.log("msg type: " + msg.type);
if(msg.procType && msg.procType.type === 'ENCRYPTED') {
throw new Error('Could not retrieve RSA public key from PEM; PEM is encrypted.');
}
// convert DER to ASN.1 object
var asn1obj = forge.asn1.fromDer(msg.body);
//console.log("ASN.1 obj: " + JSON.stringify(asn1obj))
var pubKey = forge.pki.publicKeyFromAsn1(asn1obj)
//console.log("PubKey: " + JSON.stringify(pubKey))
return pubKey;
}
function generateKEMSessionKey(rsaPublicKey) {
// generate key-derivation-function and initializes it with sha1
var kdf1 = new forge.kem.kdf1(forge.md.sha1.create());
// creates a KEM function based on the key-derivation-function created above
var kem = forge.kem.rsa.create(kdf1);
// generate and encapsulate a 16-byte secret key.
// The secret key is generated using the kdf defined above.
var kemSessionKey = kem.encrypt(rsaPublicKey, 16);
// kemSessionKey has 'encapsulation' (= pub key) and 'key' (= generated secret key)
return kemSessionKey;
}
function readPublicKeyAndGenerateSessionKey(pem) {
var rsaPublicKey = getRSApublicKey(pem);
//console.log("PubKey: " + JSON.stringify(rsaPublicKey))
var kemSessionKey = generateKEMSessionKey(rsaPublicKey);
//console.log("KEM session key: " + JSON.stringify(kemSessionKey))
return kemSessionKey;
}
function encrypt(kemSessionKey, iv, msg) {
var cipher = forge.cipher.createCipher('AES-CBC', kemSessionKey.key);
cipher.start({iv: iv});
cipher.update(forge.util.createBuffer(msg, 'utf-8'));
cipher.finish();
var encrypted = cipher.output.getBytes();
encryptedB64 = forge.util.encode64(encrypted);
return encryptedB64;
}
};

View File

@ -1,3 +0,0 @@
<svg width="10" height="9" viewBox="0 0 10 9" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.95423 0.859245C4.413 0.0436633 5.58725 0.0436629 6.04602 0.859245L9.3942 6.81157C9.84416 7.61149 9.2661 8.59988 8.34831 8.59988H1.65194C0.734151 8.59988 0.156094 7.61149 0.606052 6.81157L3.95423 0.859245ZM5.60007 6.79995C5.60007 7.13132 5.33144 7.39995 5.00007 7.39995C4.6687 7.39995 4.40007 7.13132 4.40007 6.79995C4.40007 6.46858 4.6687 6.19995 5.00007 6.19995C5.33144 6.19995 5.60007 6.46858 5.60007 6.79995ZM5.00007 1.99995C4.6687 1.99995 4.40007 2.26858 4.40007 2.59995V4.39995C4.40007 4.73132 4.6687 4.99995 5.00007 4.99995C5.33144 4.99995 5.60007 4.73132 5.60007 4.39995V2.59995C5.60007 2.26858 5.33144 1.99995 5.00007 1.99995Z" fill="#F25562"/>
</svg>

Before

Width:  |  Height:  |  Size: 806 B

View File

@ -1,3 +1,3 @@
<svg width="22" height="20" viewBox="0 0 22 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 1L5.58916 4.58916M20 19L16.4112 15.4112M12.8749 16.8246C12.2677 16.9398 11.6411 17 11.0005 17C6.52281 17 2.73251 14.0571 1.45825 9.99997C1.80515 8.8955 2.33851 7.87361 3.02143 6.97118M8.87868 7.87868C9.42157 7.33579 10.1716 7 11 7C12.6569 7 14 8.34315 14 10C14 10.8284 13.6642 11.5784 13.1213 12.1213M8.87868 7.87868L13.1213 12.1213M8.87868 7.87868L5.58916 4.58916M13.1213 12.1213L5.58916 4.58916M13.1213 12.1213L16.4112 15.4112M5.58916 4.58916C7.14898 3.58354 9.00656 3 11.0004 3C15.4781 3 19.2684 5.94291 20.5426 10C19.8357 12.2507 18.3545 14.1585 16.4112 15.4112" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2 1L5.58916 4.58916M20 19L16.4112 15.4112M12.8749 16.8246C12.2677 16.9398 11.6411 17 11.0005 17C6.52281 17 2.73251 14.0571 1.45825 9.99997C1.80515 8.8955 2.33851 7.87361 3.02143 6.97118M8.87868 7.87868C9.42157 7.33579 10.1716 7 11 7C12.6569 7 14 8.34315 14 10C14 10.8284 13.6642 11.5784 13.1213 12.1213M8.87868 7.87868L13.1213 12.1213M8.87868 7.87868L5.58916 4.58916M13.1213 12.1213L5.58916 4.58916M13.1213 12.1213L16.4112 15.4112M5.58916 4.58916C7.14898 3.58354 9.00656 3 11.0004 3C15.4781 3 19.2684 5.94291 20.5426 10C19.8357 12.2507 18.3545 14.1585 16.4112 15.4112" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 765 B

After

Width:  |  Height:  |  Size: 769 B

View File

@ -1,4 +1,4 @@
<svg width="22" height="16" viewBox="0 0 22 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8C14 9.65685 12.6569 11 11 11C9.34315 11 8 9.65685 8 8C8 6.34315 9.34315 5 11 5C12.6569 5 14 6.34315 14 8Z" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1.45825 7.99997C2.73253 3.94288 6.52281 1 11.0004 1C15.4781 1 19.2684 3.94291 20.5426 8.00004C19.2684 12.0571 15.4781 15 11.0005 15C6.52281 15 2.73251 12.0571 1.45825 7.99997Z" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14 8C14 9.65685 12.6569 11 11 11C9.34315 11 8 9.65685 8 8C8 6.34315 9.34315 5 11 5C12.6569 5 14 6.34315 14 8Z" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1.45825 7.99997C2.73253 3.94288 6.52281 1 11.0004 1C15.4781 1 19.2684 3.94291 20.5426 8.00004C19.2684 12.0571 15.4781 15 11.0005 15C6.52281 15 2.73251 12.0571 1.45825 7.99997Z" stroke="#6D7C80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 577 B

After

Width:  |  Height:  |  Size: 585 B

View File

@ -1,10 +0,0 @@
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M54 10H62C66.4183 10 70 13.5817 70 18V26" stroke="#168CA9" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 26L10 18C10 13.5817 13.5817 10 18 10L26 10" stroke="#168CA9" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M26 70L18 70C13.5817 70 10 66.4183 10 62L10 54" stroke="#168CA9" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M70 54L70 62C70 66.4183 66.4183 70 62 70L54 70" stroke="#168CA9" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="40" cy="40" r="22" stroke="#168CA9" stroke-width="4"/>
<path d="M48 48.5C43.5817 53.8333 36.4183 53.8333 32 48.5" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<rect x="49" y="35" width="1" height="4" rx="0.5" stroke="#168CA9" stroke-width="4"/>
<rect x="30" y="35" width="1" height="4" rx="0.5" stroke="#168CA9" stroke-width="4"/>
</svg>

Before

Width:  |  Height:  |  Size: 1014 B

View File

@ -1,4 +0,0 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18 9.00002C18 4.02945 13.9706 2.09808e-05 9 2.09808e-05C4.02943 2.09808e-05 0 4.02945 0 9.00002C0 13.4922 3.29117 17.2155 7.59375 17.8907V11.6016H5.30859V9.00002H7.59375V7.01721C7.59375 4.76158 8.93739 3.51565 10.9932 3.51565C11.9779 3.51565 13.0078 3.69143 13.0078 3.69143V5.90627H11.8729C10.7549 5.90627 10.4062 6.60003 10.4062 7.31176V9.00002H12.9023L12.5033 11.6016H10.4062V17.8907C14.7088 17.2155 18 13.4922 18 9.00002Z" fill="#1877F2"/>
<path d="M12.5033 11.6016L12.9024 9.00006H10.4063V7.3118C10.4063 6.60007 10.7549 5.90631 11.873 5.90631H13.0078V3.69147C13.0078 3.69147 11.9779 3.51569 10.9932 3.51569C8.9374 3.51569 7.59376 4.76162 7.59376 7.01725V9.00006H5.30859V11.6016H7.59376V17.8907C8.05197 17.9626 8.52161 18.0001 9.00001 18.0001C9.47842 18.0001 9.94806 17.9626 10.4063 17.8907V11.6016H12.5033Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 940 B

View File

@ -2,13 +2,13 @@
'use strict'
async function assertion(options) {
let assertion;
let credential;
try {
assertion = await navigator.credentials.get({ "publicKey": options });
credential = await navigator.credentials.get({ "publicKey": options });
}
// Cancel and timeout can occur besides error
catch (error) {
console.error(`Error while trying to collect WebAuthn credential. ${error}`);
console.error(`Failed to get WebAuthn credential: ${error}`);
throw error;
}
// as this is the last call we have to do a top-level request instead of AJAX
@ -16,19 +16,18 @@
form.method = "POST";
form.style.display = "none";
addInput(form, "path", "/nevisfido/fido2/assertion/result")
addInput(form, "id", assertion.id);
addInput(form, "type", assertion.type);
addInput(form, "response.clientDataJSON", base64url.encode(assertion.response.clientDataJSON));
addInput(form, "response.authenticatorData", base64url.encode(assertion.response.authenticatorData));
addInput(form, "response.signature", base64url.encode(assertion.response.signature));
addInput(form, "id", credential.id);
addInput(form, "type", credential.type);
addInput(form, "response.clientDataJSON", base64url.encode(credential.response.clientDataJSON));
addInput(form, "response.authenticatorData", base64url.encode(credential.response.authenticatorData));
addInput(form, "response.signature", base64url.encode(credential.response.signature));
document.body.appendChild(form);
form.submit();
}
function authenticate() {
// WebAuthn feature detection
if(!isWebAuthnSupportedByTheBrowser()) {
// Trigger `Login Passwordless Fallback` pattern
if (!isWebAuthnSupportedByTheBrowser()) {
cancelFido2();
return;
};
@ -51,11 +50,9 @@
c.id = base64url.decode(c.id);
return c;
});
return assertion(options);
}).catch((error) => {
console.error(`Error at fido2 authentication: ${error}`);
// Trigger `Login Passwordless Fallback` pattern
console.error(`Error during FIDO2 authentication: ${error}`);
cancelFido2();
});
}

View File

@ -1,25 +0,0 @@
function submit(result) {
// we have to do a top-level request instead of AJAX
const form = document.createElement("form");
form.method = "POST";
form.style.display = "none";
addInput(form, "result", result)
document.body.appendChild(form);
form.submit();
}
function check() {
if (isWebAuthnSupportedByTheBrowser()) {
submit("ok");
}
else {
submit("error");
}
}
window.onload = () => {
check();
}

View File

@ -31,7 +31,7 @@ async function attestation(options) {
form.submit();
}
function startFido2() {
function start() {
if (!isWebAuthnSupportedByTheBrowser()) {
dispatch("unsupported");

View File

@ -1,3 +1,10 @@
function addInput(form, name, value) {
const input = document.createElement("input");
input.name = name;
input.value = value;
form.appendChild(input);
}
/**
* Checks whether WebAuthn is supported by the browser or not.
* @return true if supported, false if it is not supported or not in secure context
@ -16,7 +23,7 @@ function isWebAuthnSupportedByTheBrowser() {
}
/**
* Trigger on cancel pattern at the FIDO2 authentication flow.
* Trigger on cancel pattern of the FIDO2 authentication step.
*
* Provides an alternative when the user decides to
* cancel the fido2 credential operation(create or fetch) or
@ -27,10 +34,7 @@ function cancelFido2() {
const form = document.createElement("form");
form.method = "POST";
form.style.display = "none";
addInput(form, "cancel_fido2", "true");
document.body.appendChild(form);
form.submit();
}

View File

@ -1,9 +0,0 @@
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.2789 49.5761C56.2789 40.4331 48.8671 33.0213 39.7242 33.0213C30.5813 33.0213 23.1694 40.4331 23.1694 49.5761C23.1694 62.2356 32.2583 70.0261 32.2583 70.0261" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M47.8393 49.5763C47.8393 45.0945 44.206 41.4612 39.7242 41.4612C35.2424 41.4612 31.6091 45.0945 31.6091 49.5763C31.6091 62.5604 41.6718 68.7279 48.8131 71.0001" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M64.7191 49.5748C64.7191 35.7707 53.5287 24.5803 39.7247 24.5803C25.9206 24.5803 14.7302 35.7707 14.7302 49.5748C14.7302 55.093 17.0024 60.6113 17.0024 60.6113" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M66.4485 31.0739C60.6836 22.4617 50.8661 16.7914 39.7242 16.7914C28.5824 16.7914 18.7649 22.4617 13 31.0739" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M58.1132 13.5444C52.623 10.6428 46.3652 9 39.724 9C33.0827 9 26.825 10.6428 21.3347 13.5444" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M64.7185 49.2502C64.7185 53.5527 60.9399 57.0407 56.2788 57.0407C51.6177 57.0407 47.8391 53.5527 47.8391 49.2502" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
<path d="M58.8764 63.8706C57.8276 64.075 56.7421 64.1823 55.6304 64.1823C47.1222 64.1823 40.1431 57.8973 39.4558 49.8997" stroke="#168CA9" stroke-width="4" stroke-linecap="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1 @@
<svg width="842" height="1e3" xmlns="http://www.w3.org/2000/svg"><path d="M702 960c-54.2 52.6-114 44.4-171 19.6-60.6-25.3-116-26.9-180 0-79.7 34.4-122 24.4-170-19.6-271-279-231-704 77-720 74.7 4 127 41.3 171 44.4 65.4-13.3 128-51.4 198-46.4 84.1 6.8 147 40 189 99.7-173 104-132 332 26.9 396-31.8 83.5-72.6 166-141 227zM423 237C414.9 113 515.4 11 631 1c15.9 143-130 250-208 236z"/></svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-label="Microsoft" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><path d="M75 75v171h171v-171z" fill="#f25022"/><path d="M266 75v171h171v-171z" fill="#7fba00"/><path d="M75 266v171h171v-171z" fill="#00a4ef"/><path d="M266 266v171h171v-171z" fill="#ffb900"/></svg>

After

Width:  |  Height:  |  Size: 347 B

View File

@ -1,3 +0,0 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32 18.6667V32M32 45.3333H32.0333M62 32C62 48.5685 48.5685 62 32 62C15.4315 62 2 48.5685 2 32C2 15.4315 15.4315 2 32 2C48.5685 2 62 15.4315 62 32Z" stroke="#EFBA00" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 343 B

View File

@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.3335 2.99992H3.00016C2.07969 2.99992 1.3335 3.74611 1.3335 4.66659V12.9999C1.3335 13.9204 2.07969 14.6666 3.00016 14.6666H11.3335C12.254 14.6666 13.0002 13.9204 13.0002 12.9999V9.66659M9.66683 1.33325H14.6668M14.6668 1.33325V6.33325M14.6668 1.33325L6.3335 9.66659" stroke="#168CA9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 467 B

View File

@ -1,429 +0,0 @@
html,
body {
height: 100%;
}
body {
font-family: var(--nevis-font-sans-serif);
font-size: 0.875rem;
color: var(--nevis-gray-900);
display: flex;
align-items: center;
padding-top: 2.5rem;
padding-bottom: 2.5rem;
background-color: #d1d5d6;
}
a {
text-decoration: none;
color: var(--nevis-primary);
}
/* add icon for links to external sites */
a[rel~="external"]::after {
content: url("link.svg");
padding-left: 7px;
vertical-align: -2px;
}
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
/* Firefox */
input[type="number"] {
-moz-appearance: textfield;
}
button:disabled {
cursor: not-allowed;
pointer-events: all !important;
}
label {
font-size: 0.75rem;
}
span.text-secondary>div {
display: inline-block;
}
/* Screen specific CSS */
.login-container {
width: 100%;
max-width: 22.5rem;
margin: auto;
background-color: var(--nevis-gray-100);
box-shadow: 0rem 0.625rem 2.5rem rgba(31, 47, 51, 0.2);
border-radius: 1.25rem;
}
.login-container-header {
padding: 1.25rem;
display: flex;
flex-direction: column;
align-items: center;
}
.login-container-minimal-header {
padding: 1.25rem;
}
.login-container-body {
background: #ffffff;
box-shadow: 0rem 0.625rem 2.5rem rgba(31, 47, 51, 0.2);
border-radius: 1.25rem;
min-height: 31.25rem;
}
.login-container-body-content {
padding: 2.5rem;
}
.login-container-body-content>.input-error~.input-error {
margin-top: 0;
}
.brand-name {
font-size: 1rem;
word-wrap: break-word;
}
.sub-title {
font-style: normal;
font-weight: 400;
font-size: 1rem;
line-height: 1.375rem;
text-align: center;
}
.sub-icon {
font-style: normal;
font-weight: 400;
font-size: 1rem;
margin-top: 1rem;
text-align: center;
}
.horizontal-line {
display: flex;
flex-direction: row;
}
.horizontal-line:before,
.horizontal-line:after {
content: "";
flex: 1 1;
border-bottom: 0.0625rem solid var(--nevis-gray-200);
margin: auto;
}
.horizontal-line:before {
margin-right: 0.625rem;
margin-left: -2.5rem;
}
.horizontal-line:after {
margin-left: 0.625rem;
margin-right: -2.5rem;
}
.register-spacing {
margin-top: 2rem;
margin-bottom: 2.75rem;
}
.social-login-buttons {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.social-login-button {
background: none;
flex-grow: 1;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 0.375rem 1.125rem;
width: 100%;
height: 2.5rem;
border: 0.0625rem solid var(--nevis-gray-200);
box-sizing: border-box;
border-radius: 0.625rem;
gap: 0.625rem;
}
.icon-inside {
position: relative;
}
.icon-inside input {
padding-right: calc(0.75rem + 1.25rem + 0.75rem);
}
.icon-inside button {
position: absolute;
right: 0;
top: 0;
margin-top: 0.3125rem;
margin-right: 0.75rem;
}
.icon-button {
display: inline-flex;
justify-content: center;
align-items: center;
flex-shrink: 0;
width: 1.875rem;
height: 1.875rem;
padding: 0;
margin: 0;
min-width: 0;
border-radius: 50%;
box-sizing: border-box;
box-shadow: none;
font-size: inherit;
font-weight: 500;
cursor: pointer;
outline: none;
border: none;
vertical-align: baseline;
text-align: center;
background-color: initial;
}
.icon-button:hover {
background: var(--nevis-gray-200);
}
.icon-button:active {
background: var(--nevis-gray-300);
}
.icon-button.nevis-blue-icon:hover {
background: var(--nevis-blue-icon-hover-bg-color);
}
.icon-button.nevis-blue-icon:active {
background: var(--nevis-blue-icon-active-bg-color);
}
.h-icon-button {
min-height: 1.875rem;
}
.max-w-full {
max-width: 100%;
}
.verification-code-wrapper {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.verification-code-label {
font-size: 1.125rem;
line-height: 1.5rem;
margin-right: 0.25rem;
}
.verification-code-input {
text-align: center;
max-width: 8.75rem;
letter-spacing: 0.5rem;
text-indent: 0.25rem;
}
.hidden-verification-code-submit-button {
overflow: visible !important;
height: 0 !important;
width: 0 !important;
margin: 0 !important;
border: 0 !important;
padding: 0 !important;
display: block !important;
}
.totp-code-wrapper {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
margin: 2.5rem 0;
}
.totp-code-input {
text-align: left;
max-width: 8.75rem;
letter-spacing: 0.5rem;
text-indent: 0.25rem;
}
.hidden {
display: none !important;
}
.success-icon {
text-align: center !important;
margin-top: 5.625rem;
margin-bottom: 11.75rem;
}
.btn-selection-item {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0.5rem 0rem;
gap: 0.5rem;
border: 0.0625rem solid var(--nevis-gray-200);
border-left-width: 0;
border-right-width: 0;
}
.btn-selection-item+.btn-selection-item {
border-top-width: 0;
}
.btn-selection-item:first-of-type {
margin-top: 1.5rem;
}
.btn-selection-item:last-of-type {
margin-bottom: 1.5rem;
}
.btn-selection-item .selection-label {
color: var(--nevis-dark) !important;
font-weight: 500;
font-size: 0.875rem;
line-height: 1.25rem;
}
.btn-selection-item .selection-description {
color: var(--nevis-gray-500) !important;
font-weight: 400;
font-size: 0.75rem;
line-height: 1.125rem;
}
/* Passwordless */
/* Access App*/
.access-app-download-link-mobile-spacing {
margin-top: 5rem;
margin-bottom: 5rem;
}
/* add rounded border corners around QR code */
#authcloud_dispatch,
#authcloud_dispatch>#qr-code-wrapper {
position: relative;
display: block;
}
#authcloud_dispatch:not(.mobile-platform):before,
#authcloud_dispatch:not(.mobile-platform):after,
#authcloud_dispatch>#qr-code-wrapper:before,
#authcloud_dispatch>#qr-code-wrapper:after {
position: absolute;
width: 1.875rem;
height: 1.875rem;
border-color: var(--nevis-primary);
border-style: solid;
z-index: 1;
content: " ";
}
#authcloud_dispatch:before {
top: 0.5rem;
left: 0.5rem;
border-width: 0.1875rem 0 0 0.1875rem;
border-top-left-radius: 1rem;
}
#authcloud_dispatch:after {
top: 0.5rem;
right: 0.5rem;
border-width: 0.1875rem 0.1875rem 0 0;
border-top-right-radius: 1rem;
}
#authcloud_dispatch>#qr-code-wrapper:before {
bottom: 0.5rem;
right: 0.5rem;
border-width: 0 0.1875rem 0.1875rem 0;
border-bottom-right-radius: 1rem;
}
#authcloud_dispatch>#qr-code-wrapper:after {
bottom: 0.5rem;
left: 0.5rem;
border-width: 0 0 0.1875rem 0.1875rem;
border-bottom-left-radius: 1rem;
}
.recovery-code-input {
text-align: left;
letter-spacing: 0.1875rem;
font-family: monospace;
}
.recovery-codes-wrapper {
height: 9rem;
text-align: center;
overflow-y: auto;
margin-bottom: 1rem;
/* Firefox */
scrollbar-color: var(--nevis-gray-300) #ffffff;
scrollbar-width: thin;
border: 1px solid lightgray;
border-radius: 0.5rem;
}
.recovery-codes-wrapper::-webkit-scrollbar {
width: 0.25rem;
}
.recovery-codes-wrapper::-webkit-scrollbar-track {
background: #ffffff;
}
.recovery-codes-wrapper::-webkit-scrollbar-thumb {
background: var(--nevis-gray-300);
border-radius: 0.125rem;
}
.recovery-codes-wrapper::-webkit-scrollbar-thumb:hover {
background: var(--nevis-gray-400);
}
.recovery-code-gray {
background: var(--nevis-gray-100);
font-size: 0.875rem;
line-height: 1.25rem;
font-family: monospace;
letter-spacing: 0.1875rem;
}
.recovery-code-white {
background: #ffffff;
font-size: 0.875rem;
line-height: 1.25rem;
font-family: monospace;
letter-spacing: 0.1875rem;
}
button.btn-recovery-code {
line-height: 0.75rem;
margin-top: 0.7rem;
width: 100%;
}

View File

@ -110,15 +110,13 @@
if (status == 'clientAuthenticating') {
// show process icon
document.getElementById("mauth_loading").style.display = 'block';
// hide QR code and info message
document.getElementById("mauth_qrcode").style.display = 'none';
document.getElementById("mauth_qrcode_info").style.display = 'none';
}
if (status == 'succeeded') {
clearInterval(statusPolling);
// as this is the last call we have to do a top-level request instead of AJAX
const form = createForm();
addInput(form, "fidoUafDone", "true"); // required for custom dispatching in usernameless
addInput(form, "continue", "true"); // required for custom dispatching in usernameless
document.body.appendChild(form);
form.submit();
} else if (status == 'failed' || status == 'unknown') {

View File

@ -1,7 +0,0 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill="#f3f3f3" d="M0 0h18v18H0z"/>
<path fill="#f35325" d="M1 1h8v8H1z"/>
<path fill="#81bc06" d="M10 1h8v8H10z"/>
<path fill="#05a6f0" d="M1 10h8v8H1z"/>
<path fill="#ffba08" d="M10 10h8v8H10z"/>
</svg>

Before

Width:  |  Height:  |  Size: 325 B

View File

@ -1,50 +1,43 @@
document.addEventListener("DOMContentLoaded", function () {
const consentInformationFieldName = "consentInformation"; // Input field name
const scopeDescriptionSource = "scope_name"; // JSON key for scope description
// display oauth scopes listed in input field 'consentInformation'
// change 'consentInformation' and 'scope_name' to the values used in your configuration.
$(function() {
var consentInformationFieldName = "consentInformation"; // name of the input field from which to parse the value as the consent information JSON
var scopeDescriptionSource = "scope_name"; // key of the field in the consent information JSON of which to get the value as the scope description
function displayOAuthScopesConsent() {
const jsonData = parseJson();
var jsonData = parseJson();
if (jsonData !== undefined) {
mapJsonToHtml(jsonData);
mapJsonToHtml(jsonData)
}
}
function mapJsonToHtml(jsonData) {
mapJsonToHtmlScopeList("listOfRequestedScopesWithExistingConsent", jsonData.requestedScopesWithExistingConsent, "Already accepted scopes:");
mapJsonToHtmlScopeList("listOfRequestedScopes", jsonData.requestedScopesRequiringConsent, "Requested scopes that require consent:");
mapJsonToHtmlScopeList("listOfRequestedScopes", jsonData.requestedScopesRequiringConsent, "Requested scopes that require a consent:");
}
function mapJsonToHtmlScopeList(elementId, scopeInformation, title) {
if (scopeInformation && Object.keys(scopeInformation).length > 0) {
const consentInput = document.querySelector(`input[name="${consentInformationFieldName}"]`);
if (consentInput) {
const container = document.createElement("div");
container.innerHTML = `<p style='margin-top: 0.5em'>${title}</p><div class='scopeinfobox'><ul id='${elementId}'></ul></div>`;
consentInput.insertAdjacentElement("afterend", container);
const ulElement = document.getElementById(elementId);
for (const key in scopeInformation) {
if (scopeInformation.hasOwnProperty(key)) {
const scopeDescription = scopeInformation[key][scopeDescriptionSource] || key;
const li = document.createElement("li");
li.textContent = scopeDescription;
ulElement.appendChild(li);
}
}
if (scopeInformation !== undefined && Object.keys(scopeInformation).length > 0) {
$("input[name=" + consentInformationFieldName +"]").after("<p style='margin-top: 0.5em'>" + title + "</p><div class='scopeinfobox'><ul id='" + elementId + "' /> </div>");
jQuery.each(scopeInformation, function(key,value) {
var scopeDescription = value[scopeDescriptionSource];
if (scopeDescription) {
$("#" + elementId).append('<li>' + scopeDescription + '</li>');
} else {
$("#" + elementId).append('<li>' + key + '</li>');
}
});
}
}
function parseJson() {
const consentInformationField = document.querySelector(`input[name="${consentInformationFieldName}"]`);
if (consentInformationField) {
try {
return JSON.parse(consentInformationField.value);
} catch (e) {
console.error("Invalid JSON in consent information field:", e);
}
var consentInformationField = $("input[name=" +consentInformationFieldName +"]");
if (consentInformationField.length > 0) {
return JSON.parse(consentInformationField.val());
}
}
displayOAuthScopesConsent();
});

View File

@ -1,44 +0,0 @@
(function() {
'use strict'
async function submit(assertion) {
// as this is the last call we have to do a top-level request instead of AJAX
const form = document.createElement("form");
form.method = "POST";
form.style.display = "none";
addInput(form, "path", "/nevisfido/fido2/assertion/result")
addInput(form, "id", assertion.id);
addInput(form, "type", assertion.type);
console.log("assertion response:", assertion.response);
addInput(form, "response.clientDataJSON", assertion.response.clientDataJSON);
addInput(form, "response.authenticatorData", assertion.response.authenticatorData);
addInput(form, "response.signature", assertion.response.signature);
addInput(form, "response.userHandle", assertion.response.userHandle);
document.body.appendChild(form);
form.submit();
}
function authenticate() {
const hiddenField = document.querySelector("input[name='fido2_attestation_options']");
if (hiddenField && hiddenField.value) {
try {
const options = JSON.parse(hiddenField.value);
console.log("parsed attestation options:", JSON.stringify(options));
SimpleWebAuthnBrowser.startAuthentication({ optionsJSON: options, useBrowserAutofill: true })
.then(assertionResponse => {
console.log("Authentication successful:", JSON.stringify(assertionResponse));
submit(assertionResponse);
})
.catch(error => {
console.log(`Passkey autofill skipped: ${error}`);
});
} catch (error) {
console.error("Error parsing fido2_attestation_options:", error);
}
} else {
console.log("Passkey autofill is disabled.");
}
}
authenticate();
})();

View File

@ -1,67 +0,0 @@
@media print {
/* general printing rules */
body {
margin: 0;
color: #000000 !important;
background-color: #ffffff !important;
font-size: 12pt;
font-family: georgia, times, serif;
box-shadow: none !important;
}
header, footer, aside, nav, button, h1, h2, h3, h4, h5, h6 {
display: none;
}
main {
max-width: 100%;
box-shadow: none !important;
}
.printable {
display: block;
}
div:not(.printable) {
display: none;
}
.btn {
display: none;
}
/* screen specific rules */
.login-container-body {
color: #000000 !important;
background-color: #ffffff !important;
box-shadow: none !important;
border-radius: unset;
}
.recovery-codes-wrapper {
overflow: unset !important;
height: unset !important;
}
#recovery-codes::before {
content: "Recovery Codes";
font-size: 16pt;
}
.recovery-code-white,
.recovery-code-gray {
color: #000000 !important;
background-color: #ffffff !important;
font-size: 14pt;
margin-top: 5pt;
}
.recovery-code-gray:first-child {
margin-top: 15pt;
}
}

View File

@ -1,63 +0,0 @@
function handleLogout(sp_urls, final_url) {
const request_urls = sp_urls.filter(function(current_url) {
return current_url.indexOf('SAMLRequest') > 0;
});
const response_urls = sp_urls.filter(function(current_url) {
return current_url.indexOf('SAMLResponse') > 0;
});
function kill_session() {
const current_url = window.location.href;
if (current_url.indexOf('?logout') == -1 && current_url.indexOf('&logout') == -1) {
console.log("current URL does not terminate the IDP session");
let logout_url = '';
if (current_url.indexOf('?') > 0) {
logout_url = current_url + "&logout";
} else {
}
fetch(logout_url, {
method: 'GET',
credentials: 'include'
}).then(response => {
if (!response.ok) {
console.error('Logout request failed');
}
}).catch(error => {
console.error('Logout request error', error);
});
}
}
const requests = request_urls.map(current_url => {
return fetch(current_url, {
method: 'GET',
credentials: 'include',
mode: 'cors'
}).then(response => {
if (!response.ok) {
console.error('Request failed', current_url);
}
}).catch(error => {
console.error('Request error', current_url, error);
});
});
// send out the requests in parallel
// in any case we then terminate the IDP session and redirect to the correct destination
// we have to complete the logout no matter if the requests were successful or if there were failed requests
Promise.allSettled(requests).then(() => {
kill_session(); // required to terminate IDP session
}).finally(() => {
if (response_urls.length == 0) {
// redirect to root location on the IDP
console.log('Finish IDP-initiated SAML logout - redirecting to: ' + final_url);
window.location.href = final_url;
} else {
// only 1 such URL allowed. process ends on SP side
console.log('Finish SP-initiated SAML logout - redirecting to: ' + response_urls[0]);
window.location.href = response_urls[0];
}
})
}

View File

@ -0,0 +1,11 @@
function toggleInputType(passwordInputId, eyeIconId, resourcePath) {
const passwordInput = document.getElementById(passwordInputId);
const eyeIcon = document.getElementById(eyeIconId);
if (passwordInput.type === 'text') {
passwordInput.type = 'password';
eyeIcon.src = resourcePath + '/resources/eye.svg';
return;
}
passwordInput.type = 'text';
eyeIcon.src = resourcePath + '/resources/eye-off.svg';
}

View File

@ -1,3 +0,0 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.00005 16.2C12.9765 16.2 16.2 12.9764 16.2 8.99999C16.2 5.02354 12.9765 1.79999 9.00005 1.79999C5.0236 1.79999 1.80005 5.02354 1.80005 8.99999C1.80005 12.9764 5.0236 16.2 9.00005 16.2ZM12.3364 7.83638C12.6879 7.48491 12.6879 6.91506 12.3364 6.56359C11.985 6.21212 11.4151 6.21212 11.0636 6.56359L8.10005 9.5272L6.93644 8.36359C6.58497 8.01212 6.01512 8.01212 5.66365 8.36359C5.31218 8.71506 5.31218 9.28491 5.66365 9.63638L7.46365 11.4364C7.81512 11.7879 8.38497 11.7879 8.73644 11.4364L12.3364 7.83638Z" fill="#52CC65"/>
</svg>

Before

Width:  |  Height:  |  Size: 678 B

View File

@ -1,3 +0,0 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 32L28.6667 38.6667L42 25.3333M62 32C62 48.5685 48.5685 62 32 62C15.4315 62 2 48.5685 2 32C2 15.4315 15.4315 2 32 2C48.5685 2 62 15.4315 62 32Z" stroke="#52CC65" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 343 B

View File

@ -1,41 +0,0 @@
function addInput(form, name, value, type = "text") {
if (!form) throw new Error("Form element is required");
const input = document.createElement("input");
input.name = name;
input.type = type;
input.value = value;
form.appendChild(input);
}
function getSubmitButton() {
const submitButtons = [...document.querySelectorAll('button[name^="submit"]')];
if (submitButtons.length === 0) {
return null;
}
if (submitButtons.length > 1) {
throw new Error('There should be exactly 1 button on the screen with a name starting with "submit". Check the AuthState configuration.');
}
return submitButtons[0] || null;
}
function toggleEye(passwordInputId, eyeIconId, resourcePath) {
const passwordInput = document.getElementById(passwordInputId);
const eyeIcon = document.getElementById(eyeIconId);
if (!passwordInput || !eyeIcon) return;
const isPassword = passwordInput.type === 'password';
passwordInput.type = isPassword ? 'text' : 'password';
// Ensure correct path format
const normalizedPath = resourcePath.endsWith('/') ? resourcePath.slice(0, -1) : resourcePath;
eyeIcon.src = `${normalizedPath}/resources/eye${isPassword ? '-off' : ''}.svg`;
}
function formatNumberInput(numberInputId) {
const numberInput = document.getElementById(numberInputId);
if (!numberInput) return;
let value = numberInput.value || ''; // Handle potential null/undefined
value = value.replace(/[-e]/gi, '');
if (numberInput.maxLength > 0 && value.length > numberInput.maxLength) {
value = value.slice(0, numberInput.maxLength);
}
numberInput.value = value;
}

View File

@ -1,52 +0,0 @@
:root {
/* Default Colors */
--nevis-blue: #0d6efd;
--nevis-indigo: #6610f2;
--nevis-purple: #6f42c1;
--nevis-pink: #d63384;
--nevis-red: #F25562;
--nevis-orange: #fd7e14;
--nevis-yellow: #EFBA00;
--nevis-green: #151615;
--nevis-teal: #20c997;
--nevis-cyan: #0dcaf0;
--nevis-blue-100: #E1F5FB;
--nevis-blue-300: #A6DFED;
--nevis-blue-400: #75C3D7;
--nevis-blue-600: #168CA9;
--nevis-white: #ffffff;
--nevis-black: #000000;
--nevis-gray-100: #EDF1F2;
--nevis-gray-200: #DADFE0;
--nevis-gray-300: #C2CACC;
--nevis-gray-400: #A4AFB2;
--nevis-gray-500: #8A9699;
--nevis-gray-900: #1F2F33;
/* Theme */
--nevis-primary: var(--primary-color);
--nevis-secondary: var(--nevis-gray-400);
--nevis-success: var(--nevis-green);
--nevis-info: var(--nevis-cyan);
--nevis-warning: var(--nevis-yellow);
--nevis-danger: var(--nevis-red);
--nevis-light: var(--nevis-gray-100);
--nevis-dark: var(--nevis-gray-900);
/* Font */
--nevis-font-sans-serif: var(--font-family), system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* Common */
--nevis-border-radius: var(--border-radius);
--nevis-form-control-border-color: var(--nevis-gray-300);
--nevis-blue-icon-color: var(--nevis-blue-600);
--nevis-blue-icon-hover-bg-color: var(--nevis-blue-300);
--nevis-blue-icon-active-bg-color: var(--nevis-blue-400);
/* Components */
/* Readonly field*/
--nevis-readonly-bg-color: var(--nevis-blue-100);
--nevis-readonly-border-color: var(--nevis-blue-300);
--nevis-readonly-box-shadow-color: var(--nevis-blue-600);
}

View File

@ -1,101 +0,0 @@
// this js should run last
// DOM is ready (stylesheets, images, and subframes may not have been loaded yet)
window.addEventListener('DOMContentLoaded', () => {
'use strict'
handleLogoutButton();
onSubmitWithEnter();
onFormSubmit();
});
function handleLogoutButton() {
const logoutButton = document.getElementById("logout-btn");
if (logoutButton) {
logoutButton.addEventListener("click", function (event) {
event.preventDefault();
event.stopPropagation();
const url = new URL(window.location.href);
// Parse raw query string, split into key=value or key-only
const rawParams = window.location.search.substring(1).split("&").filter(Boolean);
// Keep only params that are not 'login' or 'logout'
const remainingParams = rawParams.filter(p => {
const key = p.split("=")[0];
return key !== "login" && key !== "logout";
});
// Add 'logout' first
const finalParams = ["logout", ...remainingParams];
const newQuery = finalParams.length ? `?${finalParams.join("&")}` : "";
// Redirect
window.location.href = url.origin + url.pathname + newQuery;
});
}
}
/**
* Trigger to submit the button with name 'submit' and prevent other buttons to submission on 'Enter' keypress
*/
function onSubmitWithEnter() {
'use strict'
document.addEventListener('keypress', function (event) {
if (event.key === 'Enter') {
if (['TEXTAREA', 'INPUT'].includes(event.target.tagName) && event.target.type !== 'submit') {
return; // allow pressing Enter inside text fields
}
event.preventDefault();
event.stopPropagation();
const submitButton = getSubmitButton();
if (submitButton !== null) {
submitButton.click();
}
}
});
}
/*
* Setup form submit event handler for form with a required input.
* Manages the submission in case triggered by:
* - non-genuine submit button: clear invalid required inputs and proceed the submission
* - real submit button: if there is an invalid field prevent submission and trigger validation class addition
*/
function onFormSubmit() {
'use strict';
const form = document.querySelector('form');
if (!form) return;
form.addEventListener('submit', function onSubmit(event) {
const submitter = event.submitter || event.target;
// Check form validity once at the beginning
const isValid = form.checkValidity();
if (!submitter || !submitter.name.startsWith('submit')) {
// Clear invalid required inputs before submit
if (!isValid) {
document.querySelectorAll('input[required]:invalid').forEach(input => {
if (input.value.length) {
input.value = '';
}
});
}
return event;
}
if (!isValid) {
console.log('Form is invalid');
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated'); // Add validation styling
}, false);
}

View File

@ -0,0 +1,44 @@
<svg width="538" height="428" viewBox="0 0 538 428" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.6" d="M25.5216 12.9464C101.117 -51.0418 123.063 147.074 258.436 68.7657C393.808 -9.54251 434.824 51.0683 434.824 170.197C434.824 289.325 580.948 321.32 525.401 400.285C469.854 479.25 329.899 364.323 239.366 364.887C108.83 365.699 19.072 335.977 37.78 251.204C69.4629 107.637 -50.0735 76.9347 25.5216 12.9464Z" fill="#453F4F"/>
<path d="M180.834 270.433C119.276 270.433 69.1953 220.352 69.1953 158.795C69.1953 97.2369 119.276 47.1562 180.834 47.1562C242.391 47.1562 292.472 97.2369 292.472 158.795C292.472 220.352 242.391 270.433 180.834 270.433ZM180.834 48.5094C120.022 48.5094 70.5485 97.9832 70.5485 158.795C70.5485 219.606 120.022 269.08 180.834 269.08C241.645 269.08 291.119 219.606 291.119 158.795C291.119 97.9832 241.645 48.5094 180.834 48.5094Z" fill="#E1E1E8"/>
<circle cx="355.69" cy="225.417" r="104.19" fill="#66618A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M315.53 191.683C325.307 186.317 344.983 184.337 356.278 184.344C367.897 184.35 386.79 186.504 397.152 191.683C394.865 192.684 389.496 194.781 389.555 205.018C389.6 212.834 395.475 215.831 397.27 216.667C395.959 257.22 367.309 273.181 356.278 277.658C346.609 273.765 317.013 258.715 315.344 216.57C316.864 215.697 322.798 213.427 323.039 205.021C323.314 195.463 317.699 192.803 315.53 191.683Z" fill="#1D1D1D"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M314.454 189.614C324.494 184.107 344.683 181.993 356.282 182C368.187 182.006 387.535 184.269 398.152 189.572L398.044 193.806C397.117 194.212 395.539 194.803 394.225 196.367C392.853 197.997 391.833 200.633 391.858 204.96C391.895 211.362 396.741 213.797 398.211 214.481L399.612 215.133L399.562 216.677C398.207 258.561 368.561 275.021 357.16 279.645L356.284 280L355.406 279.647C345.415 275.627 314.781 260.119 313.056 216.597L313 215.183L314.228 214.477C315.496 213.749 320.54 211.919 320.742 204.91C320.835 201.67 320.176 199.356 319.177 197.696C317.718 195.27 315.582 194.297 314.506 193.742L314.454 189.614ZM320.426 192.014C321.389 192.844 322.359 193.907 323.189 195.287C324.543 197.537 325.546 200.651 325.42 205.044C325.186 213.197 320.407 216.428 317.802 217.864C319.957 256.185 346.291 270.726 356.276 274.946C367.327 270.231 392.976 254.969 394.824 217.995C392.003 216.388 387.222 212.646 387.177 204.987C387.143 199.097 388.774 195.578 390.641 193.358C391.068 192.85 391.511 192.407 391.957 192.02C381.527 188.247 366.183 186.682 356.279 186.677C346.604 186.671 330.582 188.102 320.426 192.014ZM348.758 234.419H331.574V219.385H348.758V202.213H363.802V219.385H380.986V234.419H363.802V251.591H348.758V234.419Z" fill="white"/>
<circle opacity="0.8" cx="180.833" cy="158.794" r="104.192" fill="#DACDFB"/>
<path d="M147.326 167.994C146.111 167.994 145.022 167.764 144.059 167.306C143.119 166.824 142.374 166.183 141.824 165.38C141.297 164.578 141.033 163.672 141.033 162.663C141.033 161.426 141.354 160.451 141.996 159.741C142.638 159.007 143.681 158.48 145.125 158.159C146.57 157.838 148.507 157.677 150.937 157.677H152.14V156.955C152.14 155.809 151.888 154.984 151.384 154.479C150.88 153.975 150.031 153.723 148.839 153.723C147.899 153.723 146.936 153.872 145.951 154.17C144.965 154.445 143.968 154.88 142.959 155.476L141.721 152.553C142.317 152.141 143.016 151.785 143.819 151.487C144.644 151.166 145.504 150.926 146.398 150.765C147.315 150.582 148.174 150.49 148.977 150.49C151.43 150.49 153.252 151.063 154.444 152.21C155.637 153.333 156.233 155.087 156.233 157.471V167.65H152.209V164.967C151.82 165.907 151.201 166.652 150.352 167.203C149.504 167.73 148.495 167.994 147.326 167.994ZM148.22 165.036C149.344 165.036 150.272 164.647 151.006 163.867C151.762 163.088 152.14 162.102 152.14 160.91V160.153H150.971C148.816 160.153 147.315 160.325 146.466 160.669C145.641 160.99 145.229 161.586 145.229 162.457C145.229 163.214 145.492 163.833 146.019 164.314C146.547 164.796 147.28 165.036 148.22 165.036Z" fill="#1E1743"/>
<path d="M168.436 174.183C166.877 174.183 165.41 174 164.034 173.633C162.682 173.289 161.49 172.751 160.458 172.017L161.696 169.025C162.659 169.667 163.691 170.137 164.791 170.435C165.891 170.756 166.992 170.917 168.092 170.917C171.164 170.917 172.7 169.438 172.7 166.481V164.177C172.219 165.116 171.474 165.862 170.465 166.412C169.479 166.962 168.379 167.237 167.164 167.237C165.651 167.237 164.332 166.893 163.209 166.205C162.086 165.495 161.215 164.509 160.596 163.248C159.977 161.987 159.667 160.52 159.667 158.846C159.667 157.173 159.977 155.717 160.596 154.479C161.215 153.218 162.086 152.244 163.209 151.556C164.332 150.846 165.651 150.49 167.164 150.49C168.425 150.49 169.548 150.777 170.534 151.35C171.52 151.9 172.242 152.645 172.7 153.585V150.834H176.895V165.965C176.895 168.693 176.173 170.745 174.729 172.12C173.285 173.496 171.187 174.183 168.436 174.183ZM168.333 163.97C169.663 163.97 170.717 163.512 171.497 162.595C172.276 161.678 172.666 160.428 172.666 158.846C172.666 157.265 172.276 156.027 171.497 155.133C170.717 154.216 169.663 153.757 168.333 153.757C167.003 153.757 165.949 154.216 165.169 155.133C164.39 156.027 164 157.265 164 158.846C164 160.428 164.39 161.678 165.169 162.595C165.949 163.512 167.003 163.97 168.333 163.97Z" fill="#1E1743"/>
<path d="M189.018 167.994C187.275 167.994 185.762 167.638 184.479 166.928C183.195 166.217 182.197 165.208 181.487 163.901C180.776 162.572 180.421 161.013 180.421 159.225C180.421 157.437 180.776 155.889 181.487 154.582C182.197 153.276 183.195 152.267 184.479 151.556C185.762 150.846 187.275 150.49 189.018 150.49C190.76 150.49 192.273 150.846 193.557 151.556C194.841 152.267 195.838 153.276 196.549 154.582C197.259 155.889 197.615 157.437 197.615 159.225C197.615 161.013 197.259 162.572 196.549 163.901C195.838 165.208 194.841 166.217 193.557 166.928C192.273 167.638 190.76 167.994 189.018 167.994ZM189.018 164.727C190.302 164.727 191.333 164.268 192.113 163.351C192.892 162.411 193.282 161.036 193.282 159.225C193.282 157.391 192.892 156.027 192.113 155.133C191.333 154.216 190.302 153.757 189.018 153.757C187.734 153.757 186.702 154.216 185.923 155.133C185.143 156.027 184.754 157.391 184.754 159.225C184.754 161.036 185.143 162.411 185.923 163.351C186.702 164.268 187.734 164.727 189.018 164.727Z" fill="#1E1743"/>
<path d="M205.779 167.65L198.488 150.834H203.062L207.739 162.595L212.587 150.834H216.886L209.493 167.65H205.779Z" fill="#1E1743"/>
<path d="M236.001 167.994C234.236 167.994 232.7 167.638 231.393 166.928C230.087 166.194 229.078 165.162 228.367 163.833C227.657 162.503 227.301 160.944 227.301 159.156C227.301 157.368 227.657 155.832 228.367 154.548C229.078 153.241 230.087 152.244 231.393 151.556C232.7 150.846 234.236 150.49 236.001 150.49C237.079 150.49 238.145 150.662 239.199 151.006C240.254 151.35 241.125 151.831 241.813 152.45L240.541 155.442C239.944 154.915 239.268 154.514 238.512 154.238C237.778 153.963 237.067 153.826 236.38 153.826C234.889 153.826 233.732 154.296 232.906 155.236C232.104 156.153 231.703 157.471 231.703 159.19C231.703 160.887 232.104 162.228 232.906 163.214C233.732 164.177 234.889 164.658 236.38 164.658C237.044 164.658 237.755 164.52 238.512 164.245C239.268 163.97 239.944 163.558 240.541 163.007L241.813 166.033C241.125 166.63 240.242 167.111 239.165 167.478C238.11 167.822 237.056 167.994 236.001 167.994Z" fill="#1E1743"/>
<path d="M244.45 167.65V143.406H248.748V153.276C249.321 152.359 250.089 151.671 251.052 151.212C252.015 150.731 253.081 150.49 254.25 150.49C258.216 150.49 260.199 152.794 260.199 157.402V167.65H255.901V157.608C255.901 156.302 255.649 155.35 255.144 154.754C254.663 154.158 253.906 153.86 252.875 153.86C251.614 153.86 250.605 154.261 249.849 155.064C249.115 155.843 248.748 156.886 248.748 158.193V167.65H244.45Z" fill="#1E1743"/>
<path d="M217.27 161.734H223.132V167.597H217.27V161.734Z" fill="#501EB6"/>
<path d="M130.937 173.858H101.461V144.383H130.937V173.858ZM106.367 149.25V168.9H126.018V162.778H130.932V159.094H126.018V159.075H122.333V165.216H110.052V152.935H122.333V155.391H126.018V149.25H106.367Z" fill="#501EB6"/>
<path d="M158.244 208.301L153.039 218.41L158.178 221.355C158.178 221.355 161.703 210.001 161.807 209.57C162.339 209.353 162.792 208.98 163.107 208.499C163.421 208.019 163.583 207.454 163.569 206.88C163.556 206.306 163.369 205.75 163.033 205.284C162.696 204.819 162.227 204.466 161.686 204.274C161.145 204.081 160.558 204.057 160.003 204.205C159.448 204.353 158.951 204.666 158.578 205.103C158.205 205.539 157.974 206.079 157.914 206.65C157.854 207.221 157.969 207.797 158.244 208.301Z" fill="#A0616A"/>
<path d="M131.531 209.672C133.853 218.273 142.198 223.736 149.127 230.286C149.98 230.585 150.887 230.704 151.788 230.633C152.69 230.562 153.566 230.304 154.363 229.875C155.159 229.446 155.856 228.855 156.411 228.141C156.966 227.427 157.366 226.605 157.585 225.728L159.921 216.588L153.985 216.429L151.528 219.099L143.579 213.435L131.531 209.672Z" fill="#3F3D56"/>
<path d="M374.366 265.028C375.39 265.328 376.257 266.016 376.781 266.945C377.306 267.874 377.447 268.971 377.176 270.003C377.117 270.212 377.041 270.415 376.949 270.612L387.089 280.679L379.922 282.108L371.391 272.329C370.607 271.884 369.992 271.191 369.642 270.36C369.292 269.528 369.228 268.604 369.458 267.732C369.594 267.237 369.827 266.774 370.142 266.369C370.457 265.963 370.849 265.624 371.295 265.37C371.741 265.116 372.233 264.953 372.742 264.889C373.251 264.825 373.768 264.863 374.263 264.999C374.298 265.008 374.332 265.018 374.366 265.028Z" fill="#FFB6B6"/>
<path d="M378.99 292.034L375.658 298.042L387.068 306.306C387.879 306.899 388.829 307.274 389.827 307.396C390.824 307.519 391.836 307.384 392.767 307.005C393.899 306.538 394.848 305.715 395.472 304.662C396.096 303.608 396.36 302.38 396.225 301.163L393.594 279.038C393.421 277.491 392.661 276.068 391.471 275.064C390.281 274.059 388.752 273.548 387.197 273.637C385.668 273.72 384.234 274.406 383.211 275.546C382.188 276.685 381.659 278.185 381.742 279.714C381.745 279.774 381.749 279.833 381.754 279.893C381.772 280.105 381.801 280.316 381.841 280.525L385.173 296.34L378.99 292.034Z" fill="#6C63FF"/>
<path d="M376.692 318.474L393.609 319.406L394.541 302.489L377.624 301.557L376.692 318.474Z" fill="#FFB8B8"/>
<path d="M334.763 349.165L328.422 346.636L323.855 364.024L328.152 365.738L334.763 349.165Z" fill="#FFB6B6"/>
<path d="M346.407 346.459L339.687 347.663L344.998 364.838L349.552 364.022L346.407 346.459Z" fill="#FFB6B6"/>
<path d="M392.758 323.793C394.904 346.584 350.486 330.733 350.486 330.733L335.253 349.483L327.047 347.519C327.047 347.519 331.423 336 338.949 320.65C342.291 313.833 375.784 317.388 375.784 317.388L376.783 311.954L396.018 312.635L392.758 323.793Z" fill="#3B4463"/>
<path d="M349.329 325.802L337.016 325.408C338.053 342.473 339.418 349.332 339.418 349.332L346.701 347.466L349.329 325.802Z" fill="#3B4463"/>
<path d="M385.787 274.429L389.433 270.239L394.302 270.296L394.56 274.44L396.905 275.682C398.806 284.944 398.651 294.511 396.452 303.707C396.113 303.993 395.856 304.364 395.708 304.782C395.56 305.201 395.527 305.651 395.611 306.086L395.732 306.717L395.717 306.739C395.16 307.519 394.933 308.486 395.083 309.433L396.12 311.538C396.492 312.295 396.695 313.125 396.714 313.968C396.733 314.811 396.568 315.649 396.231 316.422C395.893 317.195 395.392 317.886 394.761 318.446C394.129 319.005 393.384 319.421 392.576 319.663C385.37 321.835 378.694 322.424 374.19 314.968L374.029 289.841L385.787 274.429Z" fill="#6C63FF"/>
<path d="M389.53 271.417C394.49 271.691 398.733 267.891 399.006 262.931C399.279 257.971 395.48 253.729 390.52 253.456C385.56 253.182 381.318 256.982 381.044 261.942C380.771 266.902 384.57 271.144 389.53 271.417Z" fill="#FFB8B8"/>
<path d="M395.128 251.852C398.927 252.135 401.748 255.828 401.43 260.101C404.083 263.193 402.954 266.734 400.391 270.447C396.063 270.709 395.047 270.862 391.19 272.192L390.821 269.843L389.528 272.805C388.545 273.194 387.567 273.627 386.594 274.103C386.087 270.954 386.422 267.938 388.391 265.403C390.14 263.152 386.35 260.155 383.509 260.393L383.669 258.245L382.843 260.343C381.699 261.09 380.5 260.731 379.285 260.079C377.842 249.46 393.653 247.449 395.128 251.852Z" fill="#2F2E41"/>
<path d="M329.976 368.824L327.118 368.289L327.113 365.496L325.302 367.95L317.722 366.532C317.359 366.464 317.027 366.282 316.774 366.011C316.522 365.741 316.363 365.398 316.319 365.031C316.276 364.664 316.351 364.292 316.534 363.971C316.717 363.65 316.998 363.395 317.335 363.245L324.17 360.197L324.68 357.469L330.976 359.04L329.976 368.824Z" fill="#3B4463"/>
<path d="M350.964 368.398L348.064 368.609L347.347 365.91L346.221 368.744L338.531 369.306C338.162 369.333 337.794 369.242 337.481 369.045C337.169 368.848 336.927 368.556 336.791 368.212C336.656 367.869 336.634 367.49 336.729 367.133C336.823 366.776 337.03 366.458 337.318 366.227L343.149 361.536L342.947 358.769L349.435 358.682L350.964 368.398Z" fill="#3B4463"/>
<path d="M143.324 315.127L146.922 316.75L154.894 303.645L149.584 301.25L143.324 315.127Z" fill="#A0616A"/>
<path d="M141.508 318.821L152.571 323.812L152.634 323.672C153.149 322.53 153.19 321.23 152.746 320.058C152.303 318.886 151.413 317.939 150.271 317.423L148.941 314.978L144.479 314.811L143.514 314.375L141.508 318.821Z" fill="#767676"/>
<path d="M187.959 297.114L191.758 296.047L189.452 280.883L183.844 282.457L187.959 297.114Z" fill="#A0616A"/>
<path d="M188.936 301.118L200.621 297.838L200.579 297.69C200.24 296.484 199.436 295.462 198.344 294.848C197.252 294.235 195.96 294.08 194.754 294.419L192.165 293.398L188.637 296.136L187.617 296.422L188.936 301.118Z" fill="#767676"/>
<path d="M130.376 252.999C130.473 255.81 136.452 263.395 139.596 264.482C140.131 264.667 140.443 264.769 140.443 264.769L141.537 264.438L154.79 260.429C157.111 261.794 164.034 262.488 169.714 262.835C174.235 263.11 176.755 265.474 176.755 265.474C178.089 275.618 181.934 283.013 186.368 292.101L191.69 291.176L186.662 257.321C186.554 256.59 186.233 255.907 185.739 255.357C185.246 254.807 184.601 254.414 183.886 254.227L147.722 244.767C147.722 244.767 145.727 244.406 141.521 246.435C134.596 249.776 130.306 250.954 130.376 252.999Z" fill="#767676"/>
<path d="M137.281 252.456C136.068 254.994 137.865 264.482 140.151 266.9L140.758 267.313L140.963 267.419C142.335 272.058 157.051 285.625 157.051 285.625C152.08 291.957 147.65 299.682 145.673 308.338L151.421 310.438L167.6 286.285C168.024 285.652 168.246 284.906 168.238 284.145C168.23 283.384 167.991 282.643 167.554 282.019L160.953 272.617L150.198 251.785C142.513 251.548 138.165 250.61 137.281 252.456Z" fill="#767676"/>
<path d="M130.593 254.101C130.575 254.101 130.154 252.998 130.145 252.996C130.002 252.956 128.063 252.764 128.499 249.554L129.057 246.021L128.512 242.901L127.596 241.985L129.068 240.512L128.166 233.834L127.82 220.464C126.95 215.871 127.177 211.67 131.389 209.647L136.219 205.168L141.714 205.102L147.948 208.798L150.969 214.819L152.14 231.139L153.015 233.18L152.94 233.248C152.934 233.253 152.352 233.78 152.09 234.07C151.963 234.25 152.201 235.595 152.495 236.737L152.871 239.556L151.922 240.234L153.156 241.692L156.522 247.381L156.32 247.331C156.093 247.274 153.977 250.451 130.748 253.983C130.641 253.999 130.637 254.101 130.593 254.101Z" fill="#3F3D56"/>
<path d="M140.205 203.901C144.544 203.901 148.061 200.384 148.061 196.044C148.061 191.705 144.544 188.188 140.205 188.188C135.865 188.188 132.348 191.705 132.348 196.044C132.348 200.384 135.865 203.901 140.205 203.901Z" fill="#A0616A"/>
<path d="M136.341 201.103C135.997 200.829 135.567 200.684 135.127 200.695C134.99 200.717 134.86 200.769 134.745 200.845C134.63 200.922 134.532 201.022 134.458 201.139C134.418 201.19 134.364 201.231 134.304 201.257C134.243 201.282 134.177 201.292 134.112 201.286C133.274 201.317 131.487 199.762 131.365 196.761C131.306 195.335 130.453 192.921 131.812 191.614C131.903 191.087 132.963 185.635 137.745 185.485C142.64 185.329 145.899 186.313 146.681 188.178C147.225 189.659 147.638 191.185 147.917 192.738L148.081 193.662L147.697 192.806C147.69 192.79 146.99 191.257 145.693 190.746C145.672 190.996 145.609 191.24 145.506 191.468C145.082 192.385 144.015 192.984 142.787 192.993C141.939 192.967 141.102 192.787 140.317 192.462C140.406 192.59 140.456 192.741 140.461 192.897C140.466 193.053 140.425 193.207 140.345 193.34C140.264 193.474 140.147 193.581 140.007 193.649C139.866 193.718 139.709 193.744 139.555 193.725L139.328 193.697C139.256 193.688 139.184 193.704 139.123 193.743C139.062 193.782 139.017 193.841 138.995 193.909C138.973 193.978 138.976 194.052 139.003 194.119C139.03 194.186 139.08 194.241 139.144 194.275L139.344 194.382L139.101 194.499C138.124 194.935 137.319 195.682 136.812 196.624C136.305 197.566 136.125 198.649 136.299 199.704L136.581 201.296L136.341 201.103Z" fill="#2F2E41"/>
<path d="M116.615 246.524L122.457 236.77L117.517 233.501C117.517 233.501 113.272 244.605 113.14 245.029C112.596 245.212 112.12 245.555 111.775 246.014C111.43 246.474 111.233 247.027 111.209 247.6C111.186 248.174 111.337 248.742 111.642 249.228C111.948 249.714 112.395 250.095 112.922 250.322C113.45 250.549 114.034 250.611 114.597 250.499C115.16 250.386 115.676 250.106 116.076 249.694C116.476 249.282 116.742 248.759 116.839 248.193C116.935 247.627 116.857 247.045 116.615 246.524Z" fill="#A0616A"/>
<path d="M115.309 233.705L128.714 212.258V224.258L119.522 242.514L115.309 233.705Z" fill="#3F3D56" stroke="#3F3D56"/>
<path d="M408.578 319.451L402.394 309.911L407.214 306.468C407.214 306.468 411.851 317.415 411.997 317.834C412.548 317.997 413.036 318.324 413.397 318.77C413.758 319.217 413.975 319.763 414.019 320.335C414.063 320.908 413.932 321.48 413.643 321.977C413.355 322.473 412.923 322.871 412.403 323.116C411.884 323.362 411.303 323.444 410.736 323.352C410.169 323.26 409.644 322.998 409.229 322.6C408.814 322.203 408.53 321.689 408.414 321.127C408.298 320.564 408.355 319.98 408.578 319.451Z" fill="#F7ACAF"/>
<path d="M408.203 307.755L398.083 284.576L396.326 296.447L402.744 315.852L408.203 307.755Z" fill="#6C63FF" stroke="#6C63FF"/>
<path d="M356.416 337.027C294.858 337.027 244.777 286.946 244.777 225.388C244.777 163.831 294.858 113.75 356.416 113.75C417.973 113.75 468.054 163.831 468.054 225.388C468.054 286.946 417.973 337.027 356.416 337.027ZM356.416 115.103C295.604 115.103 246.131 164.577 246.131 225.388C246.131 286.2 295.604 335.673 356.416 335.673C417.227 335.673 466.701 286.2 466.701 225.388C466.701 164.577 417.227 115.103 356.416 115.103Z" fill="#E1E1E8"/>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,44 @@
<svg width="539" height="428" viewBox="0 0 539 428" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.6" d="M26.1466 12.9464C101.742 -51.0418 123.688 147.074 259.061 68.7657C394.433 -9.54251 435.449 51.0683 435.449 170.197C435.449 289.325 581.573 321.32 526.026 400.285C470.479 479.25 330.524 364.323 239.991 364.887C109.455 365.699 19.697 335.977 38.405 251.204C70.0879 107.637 -49.4485 76.9347 26.1466 12.9464Z" fill="white"/>
<path d="M181.834 270.433C120.276 270.433 70.1953 220.352 70.1953 158.795C70.1953 97.2369 120.276 47.1562 181.834 47.1562C243.391 47.1562 293.472 97.2369 293.472 158.795C293.472 220.352 243.391 270.433 181.834 270.433ZM181.834 48.5094C121.022 48.5094 71.5485 97.9832 71.5485 158.795C71.5485 219.606 121.022 269.08 181.834 269.08C242.645 269.08 292.119 219.606 292.119 158.795C292.119 97.9832 242.645 48.5094 181.834 48.5094Z" fill="#3F3D56"/>
<circle cx="356.69" cy="225.417" r="104.19" fill="#66618A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M316.53 191.683C326.307 186.317 345.983 184.337 357.278 184.344C368.897 184.35 387.79 186.504 398.152 191.683C395.865 192.684 390.496 194.781 390.555 205.018C390.6 212.834 396.475 215.831 398.27 216.667C396.959 257.22 368.309 273.181 357.278 277.658C347.609 273.765 318.013 258.715 316.344 216.57C317.864 215.697 323.798 213.427 324.039 205.021C324.314 195.463 318.699 192.803 316.53 191.683Z" fill="#1D1D1D"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M315.454 189.614C325.494 184.107 345.683 181.993 357.282 182C369.187 182.006 388.535 184.269 399.152 189.572L399.044 193.806C398.117 194.212 396.539 194.803 395.225 196.367C393.853 197.997 392.833 200.633 392.858 204.96C392.895 211.362 397.741 213.797 399.211 214.481L400.612 215.133L400.562 216.677C399.207 258.561 369.561 275.021 358.16 279.645L357.284 280L356.406 279.647C346.415 275.627 315.781 260.119 314.056 216.597L314 215.183L315.228 214.477C316.496 213.749 321.54 211.919 321.742 204.91C321.835 201.67 321.176 199.356 320.177 197.696C318.718 195.27 316.582 194.297 315.506 193.742L315.454 189.614ZM321.426 192.014C322.389 192.844 323.359 193.907 324.189 195.287C325.543 197.537 326.546 200.651 326.42 205.044C326.186 213.197 321.407 216.428 318.802 217.864C320.957 256.185 347.291 270.726 357.276 274.946C368.327 270.231 393.976 254.969 395.824 217.995C393.003 216.388 388.222 212.646 388.177 204.987C388.143 199.097 389.774 195.578 391.641 193.358C392.068 192.85 392.511 192.407 392.957 192.02C382.527 188.247 367.183 186.682 357.279 186.677C347.604 186.671 331.582 188.102 321.426 192.014ZM349.758 234.419H332.574V219.385H349.758V202.213H364.802V219.385H381.986V234.419H364.802V251.591H349.758V234.419Z" fill="white"/>
<circle opacity="0.8" cx="181.833" cy="158.794" r="104.192" fill="#DACDFB"/>
<path d="M148.326 167.994C147.111 167.994 146.022 167.764 145.059 167.306C144.119 166.824 143.374 166.183 142.824 165.38C142.297 164.578 142.033 163.672 142.033 162.663C142.033 161.426 142.354 160.451 142.996 159.741C143.638 159.007 144.681 158.48 146.125 158.159C147.57 157.838 149.507 157.677 151.937 157.677H153.14V156.955C153.14 155.809 152.888 154.984 152.384 154.479C151.88 153.975 151.031 153.723 149.839 153.723C148.899 153.723 147.936 153.872 146.951 154.17C145.965 154.445 144.968 154.88 143.959 155.476L142.721 152.553C143.317 152.141 144.016 151.785 144.819 151.487C145.644 151.166 146.504 150.926 147.398 150.765C148.315 150.582 149.174 150.49 149.977 150.49C152.43 150.49 154.252 151.063 155.444 152.21C156.637 153.333 157.233 155.087 157.233 157.471V167.65H153.209V164.967C152.82 165.907 152.201 166.652 151.352 167.203C150.504 167.73 149.495 167.994 148.326 167.994ZM149.22 165.036C150.344 165.036 151.272 164.647 152.006 163.867C152.762 163.088 153.14 162.102 153.14 160.91V160.153H151.971C149.816 160.153 148.315 160.325 147.466 160.669C146.641 160.99 146.229 161.586 146.229 162.457C146.229 163.214 146.492 163.833 147.019 164.314C147.547 164.796 148.28 165.036 149.22 165.036Z" fill="#1E1743"/>
<path d="M169.436 174.183C167.877 174.183 166.41 174 165.034 173.633C163.682 173.289 162.49 172.751 161.458 172.017L162.696 169.025C163.659 169.667 164.691 170.137 165.791 170.435C166.891 170.756 167.992 170.917 169.092 170.917C172.164 170.917 173.7 169.438 173.7 166.481V164.177C173.219 165.116 172.474 165.862 171.465 166.412C170.479 166.962 169.379 167.237 168.164 167.237C166.651 167.237 165.332 166.893 164.209 166.205C163.086 165.495 162.215 164.509 161.596 163.248C160.977 161.987 160.667 160.52 160.667 158.846C160.667 157.173 160.977 155.717 161.596 154.479C162.215 153.218 163.086 152.244 164.209 151.556C165.332 150.846 166.651 150.49 168.164 150.49C169.425 150.49 170.548 150.777 171.534 151.35C172.52 151.9 173.242 152.645 173.7 153.585V150.834H177.895V165.965C177.895 168.693 177.173 170.745 175.729 172.12C174.285 173.496 172.187 174.183 169.436 174.183ZM169.333 163.97C170.663 163.97 171.717 163.512 172.497 162.595C173.276 161.678 173.666 160.428 173.666 158.846C173.666 157.265 173.276 156.027 172.497 155.133C171.717 154.216 170.663 153.757 169.333 153.757C168.003 153.757 166.949 154.216 166.169 155.133C165.39 156.027 165 157.265 165 158.846C165 160.428 165.39 161.678 166.169 162.595C166.949 163.512 168.003 163.97 169.333 163.97Z" fill="#1E1743"/>
<path d="M190.018 167.994C188.275 167.994 186.762 167.638 185.479 166.928C184.195 166.217 183.197 165.208 182.487 163.901C181.776 162.572 181.421 161.013 181.421 159.225C181.421 157.437 181.776 155.889 182.487 154.582C183.197 153.276 184.195 152.267 185.479 151.556C186.762 150.846 188.275 150.49 190.018 150.49C191.76 150.49 193.273 150.846 194.557 151.556C195.841 152.267 196.838 153.276 197.549 154.582C198.259 155.889 198.615 157.437 198.615 159.225C198.615 161.013 198.259 162.572 197.549 163.901C196.838 165.208 195.841 166.217 194.557 166.928C193.273 167.638 191.76 167.994 190.018 167.994ZM190.018 164.727C191.302 164.727 192.333 164.268 193.113 163.351C193.892 162.411 194.282 161.036 194.282 159.225C194.282 157.391 193.892 156.027 193.113 155.133C192.333 154.216 191.302 153.757 190.018 153.757C188.734 153.757 187.702 154.216 186.923 155.133C186.143 156.027 185.754 157.391 185.754 159.225C185.754 161.036 186.143 162.411 186.923 163.351C187.702 164.268 188.734 164.727 190.018 164.727Z" fill="#1E1743"/>
<path d="M206.779 167.65L199.488 150.834H204.062L208.739 162.595L213.587 150.834H217.886L210.493 167.65H206.779Z" fill="#1E1743"/>
<path d="M237.001 167.994C235.236 167.994 233.7 167.638 232.393 166.928C231.087 166.194 230.078 165.162 229.367 163.833C228.657 162.503 228.301 160.944 228.301 159.156C228.301 157.368 228.657 155.832 229.367 154.548C230.078 153.241 231.087 152.244 232.393 151.556C233.7 150.846 235.236 150.49 237.001 150.49C238.079 150.49 239.145 150.662 240.199 151.006C241.254 151.35 242.125 151.831 242.813 152.45L241.541 155.442C240.944 154.915 240.268 154.514 239.512 154.238C238.778 153.963 238.067 153.826 237.38 153.826C235.889 153.826 234.732 154.296 233.906 155.236C233.104 156.153 232.703 157.471 232.703 159.19C232.703 160.887 233.104 162.228 233.906 163.214C234.732 164.177 235.889 164.658 237.38 164.658C238.044 164.658 238.755 164.52 239.512 164.245C240.268 163.97 240.944 163.558 241.541 163.007L242.813 166.033C242.125 166.63 241.242 167.111 240.165 167.478C239.11 167.822 238.056 167.994 237.001 167.994Z" fill="#1E1743"/>
<path d="M245.45 167.65V143.406H249.748V153.276C250.321 152.359 251.089 151.671 252.052 151.212C253.015 150.731 254.081 150.49 255.25 150.49C259.216 150.49 261.199 152.794 261.199 157.402V167.65H256.901V157.608C256.901 156.302 256.649 155.35 256.144 154.754C255.663 154.158 254.906 153.86 253.875 153.86C252.614 153.86 251.605 154.261 250.849 155.064C250.115 155.843 249.748 156.886 249.748 158.193V167.65H245.45Z" fill="#1E1743"/>
<path d="M218.27 161.734H224.132V167.597H218.27V161.734Z" fill="#501EB6"/>
<path d="M131.937 173.858H102.461V144.383H131.937V173.858ZM107.367 149.25V168.9H127.018V162.778H131.932V159.094H127.018V159.075H123.333V165.216H111.052V152.935H123.333V155.391H127.018V149.25H107.367Z" fill="#501EB6"/>
<path d="M357.416 337.027C295.858 337.027 245.777 286.946 245.777 225.388C245.777 163.831 295.858 113.75 357.416 113.75C418.973 113.75 469.054 163.831 469.054 225.388C469.054 286.946 418.973 337.027 357.416 337.027ZM357.416 115.103C296.604 115.103 247.131 164.577 247.131 225.388C247.131 286.2 296.604 335.673 357.416 335.673C418.227 335.673 467.701 286.2 467.701 225.388C467.701 164.577 418.227 115.103 357.416 115.103Z" fill="#3F3D56"/>
<path d="M159.244 208.301L154.039 218.41L159.178 221.355C159.178 221.355 162.703 210.001 162.807 209.57C163.339 209.353 163.792 208.98 164.107 208.499C164.421 208.019 164.583 207.454 164.569 206.88C164.556 206.306 164.369 205.75 164.033 205.284C163.696 204.819 163.227 204.466 162.686 204.274C162.145 204.081 161.558 204.057 161.003 204.205C160.448 204.353 159.951 204.666 159.578 205.103C159.205 205.539 158.974 206.079 158.914 206.65C158.854 207.221 158.969 207.797 159.244 208.301Z" fill="#A0616A"/>
<path d="M132.531 209.672C134.853 218.273 143.198 223.736 150.127 230.286C150.98 230.585 151.887 230.704 152.788 230.633C153.69 230.562 154.566 230.304 155.363 229.875C156.159 229.446 156.856 228.855 157.411 228.141C157.966 227.427 158.366 226.605 158.585 225.728L160.921 216.588L154.985 216.429L152.528 219.099L144.579 213.435L132.531 209.672Z" fill="#3F3D56"/>
<path d="M375.366 265.028C376.39 265.328 377.257 266.016 377.781 266.945C378.306 267.874 378.447 268.971 378.176 270.003C378.117 270.212 378.041 270.415 377.949 270.612L388.089 280.679L380.922 282.108L372.391 272.329C371.607 271.884 370.992 271.191 370.642 270.36C370.292 269.528 370.228 268.604 370.458 267.732C370.594 267.237 370.827 266.774 371.142 266.369C371.457 265.963 371.849 265.624 372.295 265.37C372.741 265.116 373.233 264.953 373.742 264.889C374.251 264.825 374.768 264.863 375.263 264.999C375.298 265.008 375.332 265.018 375.366 265.028Z" fill="#FFB6B6"/>
<path d="M379.99 292.034L376.658 298.042L388.068 306.306C388.879 306.899 389.829 307.274 390.827 307.396C391.824 307.519 392.836 307.384 393.767 307.005C394.899 306.538 395.848 305.715 396.472 304.662C397.096 303.608 397.36 302.38 397.225 301.163L394.594 279.038C394.421 277.491 393.661 276.068 392.471 275.064C391.281 274.059 389.752 273.548 388.197 273.637C386.668 273.72 385.234 274.406 384.211 275.546C383.188 276.685 382.659 278.185 382.742 279.714C382.745 279.774 382.749 279.833 382.754 279.893C382.772 280.105 382.801 280.316 382.841 280.525L386.173 296.34L379.99 292.034Z" fill="#6C63FF"/>
<path d="M377.692 318.474L394.609 319.406L395.541 302.489L378.624 301.557L377.692 318.474Z" fill="#FFB8B8"/>
<path d="M335.763 349.165L329.422 346.636L324.855 364.024L329.152 365.738L335.763 349.165Z" fill="#FFB6B6"/>
<path d="M347.407 346.459L340.687 347.663L345.998 364.838L350.552 364.022L347.407 346.459Z" fill="#FFB6B6"/>
<path d="M393.758 323.793C395.904 346.584 351.486 330.733 351.486 330.733L336.253 349.483L328.047 347.519C328.047 347.519 332.423 336 339.949 320.65C343.291 313.833 376.784 317.388 376.784 317.388L377.783 311.954L397.018 312.635L393.758 323.793Z" fill="#2F2E41"/>
<path d="M350.329 325.802L338.016 325.408C339.053 342.473 340.418 349.332 340.418 349.332L347.701 347.466L350.329 325.802Z" fill="#2F2E41"/>
<path d="M386.787 274.429L390.433 270.239L395.302 270.296L395.56 274.44L397.905 275.682C399.806 284.944 399.651 294.511 397.452 303.707C397.113 303.993 396.856 304.364 396.708 304.782C396.56 305.201 396.527 305.651 396.611 306.086L396.732 306.717L396.717 306.739C396.16 307.519 395.933 308.486 396.083 309.433L397.12 311.538C397.492 312.295 397.695 313.125 397.714 313.968C397.733 314.811 397.568 315.649 397.231 316.422C396.893 317.195 396.392 317.886 395.761 318.446C395.129 319.005 394.384 319.421 393.576 319.663C386.37 321.835 379.694 322.424 375.19 314.968L375.029 289.841L386.787 274.429Z" fill="#6C63FF"/>
<path d="M390.53 271.417C395.49 271.691 399.733 267.891 400.006 262.931C400.279 257.971 396.48 253.729 391.52 253.456C386.56 253.182 382.318 256.982 382.044 261.942C381.771 266.902 385.57 271.144 390.53 271.417Z" fill="#FFB8B8"/>
<path d="M396.128 251.852C399.927 252.135 402.748 255.828 402.43 260.101C405.083 263.193 403.954 266.734 401.391 270.447C397.063 270.709 396.047 270.862 392.19 272.192L391.821 269.843L390.528 272.805C389.545 273.194 388.567 273.627 387.594 274.103C387.087 270.954 387.422 267.938 389.391 265.403C391.14 263.152 387.35 260.155 384.509 260.393L384.669 258.245L383.843 260.343C382.699 261.09 381.5 260.731 380.285 260.079C378.842 249.46 394.653 247.449 396.128 251.852Z" fill="#2F2E41"/>
<path d="M330.976 368.824L328.118 368.289L328.113 365.496L326.302 367.95L318.722 366.532C318.359 366.464 318.027 366.282 317.774 366.011C317.522 365.741 317.363 365.398 317.319 365.031C317.276 364.664 317.351 364.292 317.534 363.971C317.717 363.65 317.998 363.395 318.335 363.245L325.17 360.197L325.68 357.469L331.976 359.04L330.976 368.824Z" fill="#2F2E41"/>
<path d="M351.964 368.398L349.064 368.609L348.347 365.91L347.221 368.744L339.531 369.306C339.162 369.333 338.794 369.242 338.481 369.045C338.169 368.848 337.927 368.556 337.791 368.212C337.656 367.869 337.634 367.49 337.729 367.133C337.823 366.776 338.03 366.458 338.318 366.227L344.149 361.536L343.947 358.769L350.435 358.682L351.964 368.398Z" fill="#2F2E41"/>
<path d="M144.324 315.127L147.922 316.75L155.894 303.645L150.584 301.25L144.324 315.127Z" fill="#A0616A"/>
<path d="M142.508 318.821L153.571 323.812L153.634 323.672C154.149 322.53 154.19 321.23 153.746 320.058C153.303 318.886 152.413 317.939 151.271 317.423L149.941 314.978L145.479 314.811L144.514 314.375L142.508 318.821Z" fill="#2F2E41"/>
<path d="M188.959 297.114L192.758 296.047L190.452 280.883L184.844 282.457L188.959 297.114Z" fill="#A0616A"/>
<path d="M189.936 301.118L201.621 297.838L201.579 297.69C201.24 296.484 200.436 295.462 199.344 294.848C198.252 294.235 196.96 294.08 195.754 294.419L193.165 293.398L189.637 296.136L188.617 296.422L189.936 301.118Z" fill="#2F2E41"/>
<path d="M131.376 252.999C131.473 255.81 137.452 263.395 140.596 264.482C141.131 264.667 141.443 264.769 141.443 264.769L142.537 264.438L155.79 260.429C158.111 261.794 165.034 262.488 170.714 262.835C175.235 263.11 177.755 265.474 177.755 265.474C179.089 275.618 182.934 283.013 187.368 292.101L192.69 291.176L187.662 257.321C187.554 256.59 187.233 255.907 186.739 255.357C186.246 254.807 185.601 254.414 184.886 254.227L148.722 244.767C148.722 244.767 146.727 244.406 142.521 246.435C135.596 249.776 131.306 250.954 131.376 252.999Z" fill="#2F2E41"/>
<path d="M138.281 252.456C137.068 254.994 138.865 264.482 141.151 266.9L141.758 267.313L141.963 267.419C143.335 272.058 158.051 285.625 158.051 285.625C153.08 291.957 148.65 299.682 146.673 308.338L152.421 310.438L168.6 286.285C169.024 285.652 169.246 284.906 169.238 284.145C169.23 283.384 168.991 282.643 168.554 282.019L161.953 272.617L151.198 251.785C143.513 251.548 139.165 250.61 138.281 252.456Z" fill="#2F2E41"/>
<path d="M131.593 254.101C131.575 254.101 131.154 252.998 131.145 252.996C131.002 252.956 129.063 252.764 129.499 249.554L130.057 246.021L129.512 242.901L128.596 241.985L130.068 240.512L129.166 233.834L128.82 220.464C127.95 215.871 128.177 211.67 132.389 209.647L137.219 205.168L142.714 205.102L148.948 208.798L151.969 214.819L153.14 231.139L154.015 233.18L153.94 233.248C153.934 233.253 153.352 233.78 153.09 234.07C152.963 234.25 153.201 235.595 153.495 236.737L153.871 239.556L152.922 240.234L154.156 241.692L157.522 247.381L157.32 247.331C157.093 247.274 154.977 250.451 131.748 253.983C131.641 253.999 131.637 254.101 131.593 254.101Z" fill="#3F3D56"/>
<path d="M141.205 203.901C145.544 203.901 149.061 200.384 149.061 196.044C149.061 191.705 145.544 188.188 141.205 188.188C136.865 188.188 133.348 191.705 133.348 196.044C133.348 200.384 136.865 203.901 141.205 203.901Z" fill="#A0616A"/>
<path d="M137.341 201.103C136.997 200.829 136.567 200.684 136.127 200.695C135.99 200.717 135.86 200.769 135.745 200.845C135.63 200.922 135.532 201.022 135.458 201.139C135.418 201.19 135.364 201.231 135.304 201.257C135.243 201.282 135.177 201.292 135.112 201.286C134.274 201.317 132.487 199.762 132.365 196.761C132.306 195.335 131.453 192.921 132.812 191.614C132.903 191.087 133.963 185.635 138.745 185.485C143.64 185.329 146.899 186.313 147.681 188.178C148.225 189.659 148.638 191.185 148.917 192.738L149.081 193.662L148.697 192.806C148.69 192.79 147.99 191.257 146.693 190.746C146.672 190.996 146.609 191.24 146.506 191.468C146.082 192.385 145.015 192.984 143.787 192.993C142.939 192.967 142.102 192.787 141.317 192.462C141.406 192.59 141.456 192.741 141.461 192.897C141.466 193.053 141.425 193.207 141.345 193.34C141.264 193.474 141.147 193.581 141.007 193.649C140.866 193.718 140.709 193.744 140.555 193.725L140.328 193.697C140.256 193.688 140.184 193.704 140.123 193.743C140.062 193.782 140.017 193.841 139.995 193.909C139.973 193.978 139.976 194.052 140.003 194.119C140.03 194.186 140.08 194.241 140.144 194.275L140.344 194.382L140.101 194.499C139.124 194.935 138.319 195.682 137.812 196.624C137.305 197.566 137.125 198.649 137.299 199.704L137.581 201.296L137.341 201.103Z" fill="#2F2E41"/>
<path d="M117.615 246.524L123.457 236.77L118.517 233.501C118.517 233.501 114.272 244.605 114.14 245.029C113.596 245.212 113.12 245.555 112.775 246.014C112.43 246.474 112.233 247.027 112.209 247.6C112.186 248.174 112.337 248.742 112.642 249.228C112.948 249.714 113.395 250.095 113.922 250.322C114.45 250.549 115.034 250.611 115.597 250.499C116.16 250.386 116.676 250.106 117.076 249.694C117.476 249.282 117.742 248.759 117.839 248.193C117.935 247.627 117.857 247.045 117.615 246.524Z" fill="#A0616A"/>
<path d="M116.309 233.705L129.714 212.258V224.258L120.522 242.514L116.309 233.705Z" fill="#3F3D56" stroke="#3F3D56"/>
<path d="M409.578 319.451L403.394 309.911L408.214 306.468C408.214 306.468 412.851 317.415 412.997 317.834C413.548 317.997 414.036 318.324 414.397 318.77C414.758 319.217 414.975 319.763 415.019 320.335C415.063 320.908 414.932 321.48 414.643 321.977C414.355 322.473 413.923 322.871 413.403 323.116C412.884 323.362 412.303 323.444 411.736 323.352C411.169 323.26 410.644 322.998 410.229 322.6C409.814 322.203 409.53 321.689 409.414 321.127C409.298 320.564 409.355 319.98 409.578 319.451Z" fill="#F7ACAF"/>
<path d="M409.203 307.755L399.083 284.576L397.326 296.447L403.744 315.852L409.203 307.755Z" fill="#6C63FF" stroke="#6C63FF"/>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,51 @@
document.addEventListener('DOMContentLoaded', () => {
const form = document.querySelector('form');
const confirmButton = document.querySelector('agov-button[data-id="confirm"]');
const cancelButton = document.querySelector('agov-button[data-id="cancel"]');
const agovCheckbox = document.querySelector('agov-checkbox[data-id="confirm-data"]');
const label = document.querySelector('#confirmLabel');
const errorBanner = document.querySelector('.error');
const hiddenInput = document.createElement('input');
hiddenInput.type = 'hidden';
hiddenInput.name = 'confirmIdentity';
form.appendChild(hiddenInput);
const showError = () => {
errorBanner.classList.toggle('hidden');
label.classList.remove('text-space-blue', 'dark:text-white');
label.classList.add('text-error', 'dark:!text-error-input-dark');
};
const hideError = () => {
errorBanner.classList.add('hidden');
label.classList.remove('text-error', 'dark:!text-error-input-dark');
label.classList.add('text-space-blue', 'dark:text-white');
agovCheckbox.validity = true;
};
confirmButton.addEventListener('click', (e) => {
e.preventDefault();
if (!agovCheckbox.checkboxTag.checked) {
hiddenInput.value = '';
agovCheckbox.validity = false;
showError();
}
else {
hiddenInput.value = 'yes';
agovCheckbox.validity = true;
hideError();
form.submit();
}
});
cancelButton.addEventListener('click', () => {
hiddenInput.value = '';
});
agovCheckbox.checkboxTag.addEventListener('change', () => {
if (agovCheckbox.checkboxTag.checked) {
hideError();
}
});
});

View File

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

View File

@ -0,0 +1,8 @@
document.addEventListener('DOMContentLoaded', function() {
document.dispatchEvent(new Event('initQRCode'));
document.dispatchEvent(new Event('initDrawer'));
document.dispatchEvent(new Event('initCancelOnboarding'));
const accessApp = document.querySelector('#accessAppModal');
accessApp.classList.remove('hidden');
});

View File

@ -1 +1 @@
(()=>{var e={3847:()=>{!function(){const e=window.matchMedia("(prefers-color-scheme: dark)").matches,t=function(){const e=document.cookie.split(";").map((e=>e.split("="))).find((e=>"THEME"===e[0].trim()));return e?e[1]:""}();("dark"===t||!t&&e)&&document.documentElement.classList.add("dark")}()}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(3847)})()})();
(()=>{var e={3847:()=>{!function(){const e=window.matchMedia("(prefers-color-scheme: dark)").matches,t=function(){const e=document.cookie.split(";").map(e=>e.split("=")).find(e=>"THEME"===e[0].trim());return e?e[1]:""}();("dark"===t||!t&&e)&&document.documentElement.classList.add("dark")}()}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(3847)})()})();

View File

@ -1,7 +1,4 @@
<!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 h-full mx-4 flex sm:block min-h-100" lang="$login.language">
<html class="relative min-h-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
#set($title = $utils.getConfigParameter("page.title"))
#if(!$title || $title == '')
@ -14,14 +11,50 @@
<link href="${login.appDataPath}/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="${login.appDataPath}/static/tailwind.css" rel="stylesheet" type="text/css"/>
</head>
<body class="flex flex-col flex-auto sm:block">
<body class="flex flex-col flex-auto min-w-0 h-full relative">
<header class="flex flew-row relative">
<nav class="w-full md:max-w-[1240px] lg:max-w-[1440px] mx-auto flex items-center justify-between h-20 mt-4 sm:mt-10 mb-4">
<span class="flex-1 sm:flex-initial sm:hidden"></span>
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 dark:hidden" src="${login.appDataPath}/static/images/agov-logo.svg">
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 hidden dark:block" src="${login.appDataPath}/static/images/agov-logo-dark.svg">
<div class="flex items-center flex-1 sm:flex-initial justify-end">
#set ($langMenu = '')
## NOTE/2025-06-30/haburger: using hard coded, sorted array instead of $login.locales
#set($localeList = ["de", "fr", "it", "rm", "en"])
#foreach ($locale in $localeList)
## 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 = '?language=' + $utils.escapeHtmlAttribute($locale))
#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 class="whitespace-nowrap 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></a></li>')
#end
#end ## end foreach
<agov-canary-cookie class="hidden sm:inline-block px-6">
</agov-canary-cookie>
<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 class="cursor-pointer hidden sm:inline-block" href="$text.get("general.help.link")" target="_blank">
<div class="mx-6 flex items-center">
@ -30,41 +63,38 @@
</div>
</a>
<agov-darkmode
class="hidden sm:inline-block"
data-aria_label='$text.get("darkModeSwitch.aria.label")'
data-domain='$utils.getConfigParameter("application.language.cookie.en")'>
</agov-darkmode>
<agov-mobile-menu
data-help='help'
data-lang='$login.localeCode.toUpperCase()'
data-links='$langMenu'
data-help='$text.get("general.help")'
data-helplink='$text.get("general.help.link")'
data-filepath='${login.appDataPath}'
data-language_aria_label='$text.get("languageDropdown.aria.label")'
data-dark_mode_aria_label='$text.get("darkModeSwitch.aria.label")'
data-dark_mode_domain='$utils.getConfigParameter("application.language.cookie.en")'
></agov-mobile-menu>
</div>
<div class="sm:hidden absolute bottom-0 mt-4 -left-4 -right-4 h-px bg-light-grey dark:bg-silver"></div>
</nav>
#parse("${templatePath}/envBanner.vm")
</header>
#parse("${templatePath}/backdrop.vm")
#parse("${templatePath}/backdrop.vm")
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/403.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/403-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6 mt-10">
<main id="mainContent"
class="container mx-auto sm:max-w-full flex sm:flex-auto flex-col sm:block">
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/403.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/403-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6">
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Non autorisé</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Vous n'êtes pas autorisé à accéder à cette
application.</p>
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">$text.get("error_403.title")</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">$text.get("error_403.description")</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Keine Berechtigung</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Sie sind nicht berechtigt, auf diese
Anwendung zuzugreifen.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Non autorizzato</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Non siete autorizzati ad accedere a questa
applicazione.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Not authorised</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">You are not authorised to access this
application.</p>
</div>
</div>
#parse("${templatePath}/footer.vm")
</main>
#parse("${templatePath}/footer.vm")

View File

@ -1,6 +1,3 @@
<!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-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
#set($title = $utils.getConfigParameter("page.title"))
@ -15,13 +12,50 @@
<link href="${login.appDataPath}/static/tailwind.css" rel="stylesheet" type="text/css"/>
</head>
<body class="flex flex-col flex-auto sm:block">
<body class="flex flex-col flex-auto min-w-0 h-full relative">
<header class="flex flew-row relative">
<nav class="w-full md:max-w-[1240px] lg:max-w-[1440px] mx-auto flex items-center justify-between h-20 mt-4 sm:mt-10 mb-4">
<span class="flex-1 sm:flex-initial sm:hidden"></span>
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 dark:hidden" src="${login.appDataPath}/static/images/agov-logo.svg">
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 hidden dark:block" src="${login.appDataPath}/static/images/agov-logo-dark.svg">
<div class="flex items-center flex-1 sm:flex-initial justify-end">
#set ($langMenu = '')
## NOTE/2025-06-30/haburger: using hard coded, sorted array instead of $login.locales
#set($localeList = ["de", "fr", "it", "rm", "en"])
#foreach ($locale in $localeList)
## 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 = '?language=' + $utils.escapeHtmlAttribute($locale))
#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 class="whitespace-nowrap 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></a></li>')
#end
#end ## end foreach
<agov-canary-cookie class="hidden sm:inline-block px-6">
</agov-canary-cookie>
<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 class="cursor-pointer hidden sm:inline-block" href="$text.get("general.help.link")" target="_blank">
<div class="mx-6 flex items-center">
@ -30,39 +64,38 @@
</div>
</a>
<agov-darkmode
class="hidden sm:inline-block"
data-aria_label='$text.get("darkModeSwitch.aria.label")'
data-domain='$utils.getConfigParameter("application.language.cookie.en")'>
</agov-darkmode>
<agov-mobile-menu
data-help='help'
data-lang='$login.localeCode.toUpperCase()'
data-links='$langMenu'
data-help='$text.get("general.help")'
data-helplink='$text.get("general.help.link")'
data-filepath='${login.appDataPath}'
data-language_aria_label='$text.get("languageDropdown.aria.label")'
data-dark_mode_aria_label='$text.get("darkModeSwitch.aria.label")'
data-dark_mode_domain='$utils.getConfigParameter("application.language.cookie.en")'
></agov-mobile-menu>
</div>
<div class="sm:hidden absolute bottom-0 mt-4 -left-4 -right-4 h-px bg-light-grey dark:bg-silver"></div>
</nav>
#parse("${templatePath}/envBanner.vm")
</header>
#parse("${templatePath}/backdrop.vm")
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/404.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/404-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6">
<main id="mainContent"
class="container mx-auto sm:max-w-full flex sm:flex-auto flex-col sm:block">
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/404.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/404-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6">
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Page introuvable</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">La page recherchée n'existe pas.</p>
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">$text.get("error_404.title")</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">$text.get("error_404.description")</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Seite nicht gefunden</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Die gewünschte Seite existiert nicht.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Pagina non trovata</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">La pagina che stai cercando non
esiste.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Page not found</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">The page you are looking for does not
exist.</p>
</div>
</div>
</main>
#parse("${templatePath}/footer.vm")

View File

@ -1,27 +1,60 @@
<!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-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
#set($title = $utils.getConfigParameter("page.title"))
#if(!$title || $title == '')
#set($title = 'AGOV')
#end
<title>${title}</title> <meta charset="UTF-8">
<title>${title}</title>
<meta charset="UTF-8">
<script src="${login.appDataPath}/static/preload.js"></script>
<meta content="width=device-width, initial-scale=1" name="viewport">
<link href="${login.appDataPath}/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="${login.appDataPath}/static/tailwind.css" rel="stylesheet" type="text/css"/>
</head>
<body class="flex flex-col flex-auto sm:block">
<body class="flex flex-col flex-auto min-w-0 h-full relative">
<header class="flex flew-row relative">
<nav class="w-full md:max-w-[1240px] lg:max-w-[1440px] mx-auto flex items-center justify-between h-20 mt-4 sm:mt-10 mb-4">
<span class="flex-1 sm:flex-initial sm:hidden"></span>
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 dark:hidden" src="${login.appDataPath}/static/images/agov-logo.svg">
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 hidden dark:block" src="${login.appDataPath}/static/images/agov-logo-dark.svg">
<div class="flex items-center flex-1 sm:flex-initial justify-end">
#set ($langMenu = '')
## NOTE/2025-06-30/haburger: using hard coded, sorted array instead of $login.locales
#set($localeList = ["de", "fr", "it", "rm", "en"])
#foreach ($locale in $localeList)
## 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 = '?language=' + $utils.escapeHtmlAttribute($locale))
#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 class="whitespace-nowrap 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></a></li>')
#end
#end ## end foreach
<agov-canary-cookie class="hidden sm:inline-block px-6">
</agov-canary-cookie>
<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 class="cursor-pointer hidden sm:inline-block" href="$text.get("general.help.link")" target="_blank">
<div class="mx-6 flex items-center">
@ -30,40 +63,38 @@
</div>
</a>
<agov-darkmode
class="hidden sm:inline-block"
data-aria_label='$text.get("darkModeSwitch.aria.label")'
data-domain='$utils.getConfigParameter("application.language.cookie.en")'>
</agov-darkmode>
<agov-mobile-menu
data-help='help'
data-lang='$login.localeCode.toUpperCase()'
data-links='$langMenu'
data-help='$text.get("general.help")'
data-helplink='$text.get("general.help.link")'
data-filepath='${login.appDataPath}'
data-language_aria_label='$text.get("languageDropdown.aria.label")'
data-dark_mode_aria_label='$text.get("darkModeSwitch.aria.label")'
data-dark_mode_domain='$utils.getConfigParameter("application.language.cookie.en")'
></agov-mobile-menu>
</div>
<div class="sm:hidden absolute bottom-0 mt-4 -left-4 -right-4 h-px bg-light-grey dark:bg-silver"></div>
</nav>
#parse("${templatePath}/envBanner.vm")
</header>
#parse("${templatePath}/backdrop.vm")
#parse("${templatePath}/backdrop.vm")
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/500.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/500-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6 mt-10">
<main id="mainContent"
class="container mx-auto sm:max-w-full flex sm:flex-auto flex-col sm:block">
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/500.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/500-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6">
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Quelque chose n'a pas fonctionné.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Il y a actuellement une panne. Nous y
travaillons.</p>
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">$text.get("error_500.title")</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">$text.get("error_500.description")</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Etwas ist schief gelaufen.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Zurzeit gibt es eine Störung. Wir arbeiten
daran.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Qualcosa è andato storto.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Stiamo lavorando. Riprova più tardi.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Something went wrong.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">We are working on it. Please try again
later.</p>
</div>
</div>
#parse("${templatePath}/footer.vm")
</main>
#parse("${templatePath}/footer.vm")

View File

@ -1,6 +1,3 @@
<!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-100 h-full mx-4 flex sm:block" lang="$login.language">
<head>
#set($title = $utils.getConfigParameter("page.title"))
@ -14,14 +11,50 @@
<link href="${login.appDataPath}/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="${login.appDataPath}/static/tailwind.css" rel="stylesheet" type="text/css"/>
</head>
<body class="flex flex-col flex-auto sm:block">
<body class="flex flex-col flex-auto min-w-0 h-full relative">
<header class="flex flew-row relative">
<nav class="w-full md:max-w-[1240px] lg:max-w-[1440px] mx-auto flex items-center justify-between h-20 mt-4 sm:mt-10 mb-4">
<span class="flex-1 sm:flex-initial sm:hidden"></span>
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 dark:hidden" src="${login.appDataPath}/static/images/agov-logo.svg">
<img alt="agov Logo" class="h-8 sm:h-10 mr-6 hidden dark:block" src="${login.appDataPath}/static/images/agov-logo-dark.svg">
<div class="flex items-center flex-1 sm:flex-initial justify-end">
#set ($langMenu = '')
## NOTE/2025-06-30/haburger: using hard coded, sorted array instead of $login.locales
#set($localeList = ["de", "fr", "it", "rm", "en"])
#foreach ($locale in $localeList)
## 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 = '?language=' + $utils.escapeHtmlAttribute($locale))
#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 class="whitespace-nowrap 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></a></li>')
#end
#end ## end foreach
<agov-canary-cookie class="hidden sm:inline-block px-6">
</agov-canary-cookie>
<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 class="cursor-pointer hidden sm:inline-block" href="$text.get("general.help.link")" target="_blank">
<div class="mx-6 flex items-center">
@ -30,40 +63,38 @@
</div>
</a>
<agov-darkmode
class="hidden sm:inline-block"
data-aria_label='$text.get("darkModeSwitch.aria.label")'
data-domain='$utils.getConfigParameter("application.language.cookie.en")'>
</agov-darkmode>
<agov-mobile-menu
data-help='help'
data-lang='$login.localeCode.toUpperCase()'
data-links='$langMenu'
data-help='$text.get("general.help")'
data-helplink='$text.get("general.help.link")'
data-filepath='${login.appDataPath}'
data-language_aria_label='$text.get("languageDropdown.aria.label")'
data-dark_mode_aria_label='$text.get("darkModeSwitch.aria.label")'
data-dark_mode_domain='$utils.getConfigParameter("application.language.cookie.en")'
></agov-mobile-menu>
</div>
<div class="sm:hidden absolute bottom-0 mt-4 -left-4 -right-4 h-px bg-light-grey dark:bg-silver"></div>
</nav>
#parse("${templatePath}/envBanner.vm")
</header>
#parse("${templatePath}/backdrop.vm")
#parse("${templatePath}/backdrop.vm")
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/something_wrong.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/something_wrong-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6 mt-10">
<main id="mainContent"
class="container mx-auto sm:max-w-full flex sm:flex-auto flex-col sm:block">
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/something_wrong.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/something_wrong-dark.svg">
<div class="flex flex-col md:flex-row justify-evenly gap-6">
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Quelque chose n'a pas fonctionné.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Nous y travaillons. Veuillez réessayer
plus tard.</p>
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">$text.get("error_502.title")</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">$text.get("error_502.description")</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Etwas ist schief gelaufen.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Wir arbeiten daran. Bitte versuchen Sie es
später noch einmal.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Qualcosa è andato storto.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">Stiamo lavorando. Riprova più tardi.</p>
</div>
<div class="mb-10">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">Something went wrong.</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">We are working on it. Please try again
later.</p>
</div>
</div>
#parse("${templatePath}/footer.vm")
</main>
#parse("${templatePath}/footer.vm")

View File

@ -38,7 +38,7 @@
#parse("${templatePath}/envBanner.vm")
</header>
#parse("${templatePath}/backdrop.vm")
#parse("${templatePath}/backdrop.vm")
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/logout-img.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/logout-img-dark.svg">
@ -72,13 +72,13 @@
</agov-button>
</div>
</div>
<footer class="hidden sm:flex mt-auto font-body text-body-s text-disabled-grey dark:text-silver w-full p-2 justify-between">
<footer class="hidden sm:flex mt-auto font-body text-body-s text-disabled-grey dark:text-silver w-full p-2 justify-between">
<div>
$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 data-test="footer.info.right">1.12.0.0.3113-20250818T085306Z</p>
</footer>
<p data-test="footer.info.right">1.12.0.4.3313-20251006T143355Z</p>
</footer>
</body>
<script src="${login.appDataPath}/static/bundle.js"></script>
<script>

View File

@ -73,7 +73,7 @@
<img alt="" src="${login.appDataPath}/static/images/accessApp_dark.svg" class="h-12 mr-4 hidden dark:block">
<p id="labelQRCodeInstructions"
class="font-header sm:text-h5 text-body-m text-space-blue dark:text-white">
$text.get("mauth_usernameless.instructions")
$qrLabelVariable
</p>
</div>
</div>
@ -101,10 +101,10 @@
<agov-button
id="showQR"
class="block basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"
data-id="EID"
data-style="$showQRButtonStyle"
data-name="qr-code"
data-value="qr-code"
data-id="qr-code"
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")"
data-type="button"
@ -113,10 +113,10 @@
<agov-button
id="hideQR"
class="hidden basis-full"
data-style="frameless"
data-name="EID"
data-value="EID"
data-id="EID"
data-style="$showQRButtonStyle"
data-name="qr-code"
data-value="qr-code"
data-id="qr-code"
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")"
data-type="button"

View File

@ -1,5 +1,3 @@
## modern login template
#set($jsValidation = 1) ## enable JS validation, client-side
#set($useFormEncryption = $gui.encryption && ($gui.encryption.length() > 0))

View File

@ -0,0 +1,116 @@
#parse("${templatePath}/header.vm")
#parse("${templatePath}/backdrop.vm")
<div id="mainContent" class="container mx-auto sm:mt-12 sm:max-w-full flex flex-auto sm:block">
<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 sm:mb-8 mb-6 items-baseline">
<h3 class="font-header text-h3 text-space-blue dark:text-white mr-3">$text.get("dimilar.confirm_identity.title")</h3>
</div>
<div class="error hidden flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-8">
<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("dimilar.confirm_identity.error")
</p>
</div>
<div class="flex flex-col gap-4">
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("dimilar.confirm_identity.description")
</p>
<div>
<p class="text-space-blue text-body-l dark:text-white font-body-semi">
$text.get("general.data.firstname")
</p>
<p class="text-space-blue text-body-l dark:text-white font-body" data-test="dimilar.firstname">
$gui.getGuiElem('firstName').value
</p>
</div>
<div>
<p class="text-space-blue text-body-l dark:text-white font-body-semi">
$text.get("general.data.lastname")
</p>
<p class="text-space-blue text-body-l dark:text-white font-body" data-test="dimilar.lastname">
$gui.getGuiElem('lastName').value
</p>
</div>
<div class="flex flex-col gap-2">
<p class="text-space-blue text-body-l dark:text-white font-body-semi">
$text.get("general.data.birthDate")
</p>
<div class="flex flex-col justify-center items-start -space-y-[5px]">
<p class="text-disabled-grey text-body-m dark:text-silver font-body">
$text.get("general.data.birthDateFormat")
</p>
<p class="text-space-blue text-body-l dark:text-white font-body" data-test="dimilar.birthdate">
$gui.getGuiElem('birthDate').value
</p>
</div>
</div>
<div>
<p class="text-space-blue text-body-l dark:text-white font-body-semi">
$text.get("general.data.enrollmentNumber")
</p>
<p class="text-space-blue text-body-l dark:text-white font-body" data-test="dimilar.militaryid">
$gui.getGuiElem('militaryId').value
</p>
</div>
</div>
<div class="flex items-center my-6" id="confirmData">
<agov-checkbox
data-test="dimilar.confirmdatacb"
data-value="confirmIdentity"
data-id="confirm-data"
data-name="yes">
</agov-checkbox>
<label id="confirmLabel" class="font-body text-body-l text-space-blue dark:text-white cursor-pointer">
$text.get("dimilar.confirm_identity.checkbox")
</label>
</div>
<p class="font-body text-body-l text-space-blue dark:text-white pb-8">
$text.get("dimilar.confirm_identity.link")
</p>
#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 ">
<div class="w-full sm:static mt-auto mb-6 sm:mb-0 flex flex-col sm:flex-row-reverse gap-4">
<agov-button
data-id="confirm"
class="block basis-full"
data-name="confirmIdentity"
data-label="$text.get("general.confirm")"
data-style="primary"
data-type="button"
data-fullwidth="true">
</agov-button>
<agov-button
class="block basis-full"
data-name="confirmIdentity"
data-value="no"
data-id="cancel"
data-label="$text.get("general.cancel")"
data-type="submit"
data-style="secondary"
data-fullwidth="true">
</agov-button>
</div>
<input class="hidden" name="authRequestId" type="hidden" value="$gui.getGuiElem('authRequestId').value"/>
</form>
</div>
<img alt="" src="${login.appDataPath}/static/images/dimilar.svg"
class="md:max-w-[538px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 dark:hidden hidden md:block">
<img alt="" src="${login.appDataPath}/static/images/dimilar-dark.svg"
class="md:max-w-[538px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 hidden dark:md:block">
</div>
</div>
<script src="${login.appDataPath}/static/js-code/dimilar_confirm_identity.js">
</script>
#parse("${templatePath}/footer.vm")

View File

@ -0,0 +1,18 @@
#parse("${templatePath}/header.vm")
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
#parse("${templatePath}/backdrop.vm")
<div id="mainContent" class="container mx-auto sm:mt-12 sm:max-w-full flex flex-col flex-auto sm:block">
<img alt="" class="mx-auto mt-16 block dark:hidden" src="${login.appDataPath}/static/images/something_wrong.svg">
<img alt="" class="mx-auto mt-16 hidden dark:block" src="${login.appDataPath}/static/images/something_wrong-dark.svg">
<div class="flex flex-col justify-center mt-8">
<h3 class="font-header text-h3 text-black dark:text-white mb-4 mx-auto text-center">
$text.get("dimilar.token_error.token_expired")
</h3>
<p class="font-body text-body-l text-black dark:text-white mx-auto text-center">
$text.get("dimilar.token_error.support")
</p>
</div>
</div>
#parse("${templatePath}/footer.vm")

View File

@ -0,0 +1,12 @@
import { parsedTranslations } from './mock-defaults';
const translations = parsedTranslations.get('en');
module.exports = {
...require('./mock-defaults'),
utils: {
escapeHtmlAttribute: key => key
},
text: {
get: key => translations[key] ?? key
}
};

View File

@ -0,0 +1,210 @@
#parse("${templatePath}/header.vm")
#set ($formTarget = $utils.escapeHtmlAttribute($gui.target.replaceAll('&?language=[^&]*','')))
#set( $qrLabelVariable = $text.get("onboard_linking_account_auth.instructions") )
#set( $showQRButtonStyle ="secondary")
#parse("${templatePath}/backdrop.vm")
<main id="mainContent"
class="h-[calc(100svh-200px)] overflow-y-auto sm:h-full sm:flex mx-auto sm:mt-2 sm:max-w-full md:max-w-[1200px] sm:w-full flex items-start sm:items-center">
<div class="flex flex-col-reverse sm:flex-row justify-evenly items-center gap-5 w-full">
<div class="flex flex-col md:flex-row gap-6">
<div id="loginModal"
class="flex flex-col sm:bg-white sm:dark:bg-surface-black sm:rounded-[20px] sm:min-h-[684px] grow sm:p-6 sm:pb-8
sm:pt-10
sm:px-10
max-w-[550px] w-full">
<div class="flex flex-col mb-6 sm:mb-6 items-baseline">
<h1 class="font-header text-h4 sm:text-h3 text-space-blue dark:text-white mr-3">
$text.get("onboarding.with-agov.title")
</h1>
<h2 class="font-header text-h5 sm:text-h4 text-disabled-grey mr-3">
$text.get("onboarding.login-factor")
</h2>
</div>
<agov-login-toggle
class="inline-block mb-6"
data-aria_label='$text.get("mauth_usernameless.useSecurityKey")'
data-access_app_img='${login.appDataPath}/static/images/access-app.svg'
data-security_key_img='${login.appDataPath}/static/images/fido-key.svg'
data-access_app_text='$text.get("general.AGOVAccessApp")'
data-security_key_text='$text.get("general.securityKey")'>
</agov-login-toggle>
#parse("${templatePath}/accessAppLogin.vm")
<div id="securityKeyModal" class="hidden mt-auto">
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-4 mb-6 text-center">
$text.get("onboarding_account_auth.useSecurityKey")
</h2>
<p class="font-body text-body-l text-space-blue dark:text-white text-center my-6">
$text.get("onboard_linking_account_auth.fido_instructions")
</p>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8">
<agov-button
class="mt-6 block"
data-name="fallback"
data-value="fallback"
data-id="fallback"
data-label="$text.get("onboarding_account_auth.loginSecurityKey")"
data-type="submit"
data-fullwidth="true"
data-icon="left">
</agov-button>
<input class="hidden" name="authRequestId" type="hidden" value="$gui.getGuiElem('authRequestId').value"/>
</form>
</div>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8" class="block sm:hidden pt-4">
<button class="hidden" id="onReload" name="onReload"></button>
<agov-button
data-style="frameless"
data-name="fallback"
data-value="back"
data-label="$text.get("general.back")"
data-fullwidth="true"
data-type="submit"
class="block">
</agov-button>
<input class="hidden" name="authRequestId" type="hidden" value="$gui.getGuiElem('authRequestId').value"/>
</form>
<div id="desktopMenu" class="hidden sm:block mt-auto">
<div class="flex items-center mt-4 mb-6">
<span class="h-px w-full bg-silver"></span>
</div>
<h2 class="font-header text-h5 text-space-blue dark:text-white mt-4 mb-4 text-left">
$text.get("mauth_usernameless.cannotLogin")
</h2>
<agov-button
id="recovery-btn"
data-style="secondary"
data-label="<i class='fa-regular fa-suitcase-medical text-indigo dark:text-lilac mr-2'></i>$text.get(
"mauth_usernameless.startRecovery")"
data-type="button"
data-fullwidth="true"
class="block mb-4">
</agov-button>
<form id="$gui.name" name="$gui.name" method="POST" target="_self" action="$formTarget" autocomplete="off"
accept-charset="UTF-8">
<button class="hidden" id="onReload" name="onReload"></button>
<agov-button
data-style="frameless"
data-name="fallback"
data-value="back"
data-label="$text.get("general.back")"
data-fullwidth="true"
data-type="submit"
class="block">
</agov-button>
<input class="hidden" name="authRequestId" type="hidden" value="$gui.getGuiElem('authRequestId').value"/>
</form>
</div>
</div>
</div>
</div>
<img alt="" src="${login.appDataPath}/static/images/dimilar.svg"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 dark:hidden hidden md:block">
<img alt="" src="${login.appDataPath}/static/images/dimilar-dark.svg"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 hidden dark:md:block">
<agov-modal class="hidden"
id="cancelOnboardingModal"
data-title="$text.get("onboarding.cancel-onboarding")"
data-description="$text.get("onboarding.cancel-onboarding-description")"
data-cancel-button-label="$text.get("general.back")"
data-submit-button-label="$text.get("onboarding.cancel-proceed-recovery")"
data-submit-button-event-name="cancelOnboardingModalSubmitEvent"
data-cancel-button-event-name="cancelOnboardingModalCancelEvent">
</agov-modal>
<form class="hidden"
id="$gui.name"
name="$gui.name"
method="POST"
target="_self"
action="$formTarget"
autocomplete="off"
accept-charset="UTF-8">
<agov-button
class="block basis-full"
data-name="fallback"
data-id="submit"
data-value="recovery"
data-type="submit"
data-label="$text.get("general.continue")"
data-fullwidth="true">
</agov-button>
<input class="hidden" name="authRequestId" type="hidden" value="$gui.getGuiElem('authRequestId').value"/>
</form>
</main>
<div class="w-full z-30 fixed left-0 pointer-events-none formDrawer sm:hidden" 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">
<div class="w-10 h-1 rounded-full bg-silver dark:bg-ash mx-auto"></div>
</div>
<div class="flex items-center justify-center mb-6">
<span class="px-2 text-disabled-grey dark:text-white font-body-semi font-semibold text-body-l
whitespace-nowrap">
$text.get("general.moreOptions")
</span>
</div>
<div class="flex flex-col flex-wrap justify-center items-center mb-6 gap-1">
<p class="font-body-semi font-semibold text-body-l text-space-blue
dark:text-white">$text.get("mauth_usernameless.cannotLogin")</p>
<agov-button
data-style="frameless"
data-name="fallback"
data-value="recovery"
id="recovery-btn"
data-label="<i class='fa-regular fa-suitcase-medical text-indigo dark:text-lilac mr-2'></i>
$text.get("mauth_usernameless.startRecovery")"
data-fullwidth="true"
class="block w-full">
</agov-button>
</div>
<div class="font-body text-body-s text-disabled-grey dark:text-silver text-center">
$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>
</div>
</div>
</div>
<agov-modal
class="hidden"
id="QRCodeModal"
ishidden="true"
data-title="$text.get("general.login.accessApp")"
data-cancel-button-label="$text.get("general.back")"
data-cancel-button-event-name="closeQRModal"
data-cancel-button-style="frameless">
<div id="QRCodeHolderModal">
<div class="relative">
<canvas role="img" aria-labelledby="labelQRCodeInstructions" id="mauth_qrcode_modal"
class="mb-6 mx-auto"></canvas>
<div class="hidden" id="QRcodeHiddenLink"></div>
</div>
<div class="accessAppInstructions flex bg-indigo-light rounded-xl p-4 sm:mb-0 mb-2 items-center dark:bg-purple-black">
<img alt="" src="${login.appDataPath}/static/images/accessApp.svg" class="h-12 mr-4 block dark:hidden">
<img alt="" src="${login.appDataPath}/static/images/accessApp_dark.svg"
class="h-12 mr-4 hidden dark:block">
<p id="labelQRCodeInstructions"
class="font-header text-h5 text-space-blue dark:text-white">
$text.get("onboard_linking_account_auth.instructions")
</p>
</div>
</div>
</agov-modal>
<script src="${login.appDataPath}/static/js-code/direct_onboarding.js" defer>
</script>
#parse("${templatePath}/footer.vm")

View File

@ -0,0 +1,38 @@
#parse("${templatePath}/header.vm")
#parse("${templatePath}/backdrop.vm")
<div id="mainContent" class="container mx-auto sm:mt-12 sm:max-w-full flex flex-auto sm:block">
<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-[552px] w-full
basis-full md:basis-1/2">
<h2 class="font-header text-h3 text-space-blue dark:text-white sm:mb-8 mb-6">
$text.get("dimilar_onboarding.title")
</h2>
<div class="error flex rounded-xl bg-error-background dark:bg-dark-error-background items-center p-4 mb-8 sm:mb-72">
<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>
<div class="flex flex-col">
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("dimilar_onboarding.aborted.message")
</p>
<p class="font-body text-body-l text-space-blue dark:text-white">
$text.get("dimilar_onboarding.aborted.link")
</p>
</div>
</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 ">
</form>
</div>
<img alt="" src="${login.appDataPath}/static/images/dimilar.svg"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 dark:hidden hidden md:block">
<img alt="" src="${login.appDataPath}/static/images/dimilar-dark.svg"
class="md:max-w-[520px] max-w-[350px] sm:max-w-[300px] w-full md:basis-1/2 hidden dark:md:block">
</div>
</div>
#parse("${templatePath}/footer.vm")

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