If you didn''t create this account, just ignore this message.
+emailUpdateConfirmationSubject=Verify new email
+emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
+emailUpdateConfirmationBodyHtml=
To update your {2} account with email address {1}, click the link below
If you don''t want to proceed with this modification, just ignore this message.
+emailTestSubject=[KEYCLOAK] - SMTP test message
+emailTestBody=This is a test message. Test Only.
+emailTestBodyHtml=
This is a test message
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
+identityProviderLinkBodyHtml=
Someone wants to link your {1} account with {0} account of user {2}. If this was you, click the link below to link accounts
If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
+passwordResetSubject=Reset password
+passwordResetBody=Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your password, just ignore this message and nothing will be changed.
+passwordResetBodyHtml=
Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.
If you don''t want to reset your password, just ignore this message and nothing will be changed.
+executeActionsSubject=Update Your Account
+executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
+executeActionsBodyHtml=
Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.
If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
+eventLoginErrorSubject=Login error
+eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
+eventLoginErrorBodyHtml=
A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
+eventRemoveTotpSubject=Remove OTP
+eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
+eventRemoveTotpBodyHtml=
OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdatePasswordSubject=Update password
+eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdatePasswordBodyHtml=
Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdateTotpSubject=Update OTP
+eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdateTotpBodyHtml=
OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2Please verify your email address by entering in the following code.
{0}
+
diff --git a/dev/config/keycloak/themes/ltt/email/theme.properties b/dev/config/keycloak/themes/ltt/email/theme.properties
new file mode 100644
index 0000000..93d3b28
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/email/theme.properties
@@ -0,0 +1,2 @@
+parent=keycloak
+
diff --git a/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl b/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl
new file mode 100644
index 0000000..d609182
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl
@@ -0,0 +1,31 @@
+<#ftl output_format="plainText">
+${msg("loginTotpIntro")}
+
+${msg("loginTotpStep1")}
+
+<#list totp.policy.supportedApplications as app>
+* ${app}
+#list>
+
+${msg("loginTotpManualStep2")}
+
+ ${totp.totpSecretEncoded}
+
+
+${msg("loginTotpManualStep3")}
+
+- ${msg("loginTotpType")}: ${msg("loginTotp." + totp.policy.type)}
+- ${msg("loginTotpAlgorithm")}: ${totp.policy.getAlgorithmKey()}
+- ${msg("loginTotpDigits")}: ${totp.policy.digits}
+<#if totp.policy.type = "totp">
+- ${msg("loginTotpInterval")}: ${totp.policy.period}
+
+<#elseif totp.policy.type = "hotp">
+- ${msg("loginTotpCounter")}: ${totp.policy.initialCounter}
+
+#if>
+
+Enter in your one time password so we can verify you have installed it correctly.
+
+
+
diff --git a/dev/config/keycloak/themes/ltt/login/login-update-password.ftl b/dev/config/keycloak/themes/ltt/login/login-update-password.ftl
new file mode 100644
index 0000000..5c70fe0
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-update-password.ftl
@@ -0,0 +1,45 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true; section>
+ <#if section = "header">
+ ${msg("updatePasswordTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl b/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl
new file mode 100644
index 0000000..d87a90f
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl
@@ -0,0 +1,61 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+ <#if section = "header">
+ ${msg("loginProfileTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/login-username.ftl b/dev/config/keycloak/themes/ltt/login/login-username.ftl
new file mode 100644
index 0000000..6d5737e
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-username.ftl
@@ -0,0 +1,60 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=social.displayInfo displayWide=(realm.password && social.providers??); section>
+ <#if section = "header">
+ ${msg("doLogIn")}
+ <#elseif section = "form">
+
+ #if>
+ #if>
+
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties b/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
new file mode 100644
index 0000000..60405bb
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
@@ -0,0 +1,442 @@
+doLogIn=Sign In
+doRegister=Register
+doCancel=Cancel
+doSubmit=Submit
+doBack=Back
+doYes=Yes
+doNo=No
+doContinue=Continue
+doIgnore=Ignore
+doAccept=Accept
+doDecline=Decline
+doForgotPassword=First time using, or forgot password?
+doClickHere=Click here
+doImpersonate=Impersonate
+doTryAgain=Try again
+doTryAnotherWay=Try Another Way
+doConfirmDelete=Confirm deletion
+errorDeletingAccount=Error happened while deleting account
+deletingAccountForbidden=You do not have enough permissions to delete your own account, contact admin.
+kerberosNotConfigured=Kerberos Not Configured
+kerberosNotConfiguredTitle=Kerberos Not Configured
+bypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login. Please click continue to login in through other means
+kerberosNotSetUp=Kerberos is not set up. You cannot login.
+registerTitle=Register
+loginAccountTitle=Sign in to your account
+loginTitle=Sign in to {0}
+loginTitleHtml={0}
+impersonateTitle={0} Impersonate User
+impersonateTitleHtml={0} Impersonate User
+realmChoice=Realm
+unknownUser=Unknown user
+loginTotpTitle=Mobile Authenticator Setup
+loginProfileTitle=Update Account Information
+loginIdpReviewProfileTitle=Update Account Information
+loginTimeout=Your login attempt timed out. Login will start from the beginning.
+oauthGrantTitle=Grant Access to {0}
+oauthGrantTitleHtml={0}
+errorTitle=We are sorry...
+errorTitleHtml=We are sorry ...
+emailVerifyTitle=Email verification
+emailForgotTitle=First time using, or forgot password?
+updatePasswordTitle=Update password
+codeSuccessTitle=Success code
+codeErrorTitle=Error code\: {0}
+displayUnsupported=Requested display type unsupported
+browserRequired=Browser required to login
+browserContinue=Browser required to complete login
+browserContinuePrompt=Open browser and continue login? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Terms and Conditions
+termsText=
Terms and conditions to be defined
+termsPlainText=Terms and conditions to be defined.
+
+recaptchaFailed=Invalid Recaptcha
+recaptchaNotConfigured=Recaptcha is required, but not configured
+consentDenied=Consent denied.
+
+noAccount=New user?
+username=Username
+usernameOrEmail=Username or email
+firstName=First name
+givenName=Given name
+fullName=Full name
+lastName=Last name
+familyName=Family name
+email=Email
+password=Password
+passwordConfirm=Confirm password
+passwordNew=New Password
+passwordNewConfirm=New Password confirmation
+passwordPolicy=
Password must:
Include at least one upper case letter, one lower case letter, and one number
Be at least 8 characters long
Have not been used recently
+rememberMe=Remember me
+authenticatorCode=One-time code
+address=Address
+street=Street
+locality=City or Locality
+region=State, Province, or Region
+postal_code=Zip or Postal code
+country=Country
+emailVerified=Email verified
+website=Web page
+phoneNumber=Phone number
+phoneNumberVerified=Phone number verified
+gender=Gender
+birthday=Birthdate
+zoneinfo=Time zone
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=Sign out from other devices
+
+profileScopeConsentText=User profile
+emailScopeConsentText=Email address
+addressScopeConsentText=Address
+phoneScopeConsentText=Phone number
+offlineAccessScopeConsentText=Offline Access
+samlRoleListScopeConsentText=My Roles
+rolesScopeConsentText=User roles
+
+restartLoginTooltip=Restart login
+
+loginTotpIntro=You need to set up a One Time Password generator to access this account
+loginTotpStep1=Install one of the following applications on your mobile:
+loginTotpStep2=Open the application and scan the barcode:
+loginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.
+loginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
+loginTotpManualStep2=Open the application and enter the key:
+loginTotpManualStep3=Use the following configuration values if the application allows setting them:
+loginTotpUnableToScan=Unable to scan?
+loginTotpScanBarcode=Scan barcode?
+loginCredential=Credential
+loginOtpOneTime=One-time code
+loginTotpType=Type
+loginTotpAlgorithm=Algorithm
+loginTotpDigits=Digits
+loginTotpInterval=Interval
+loginTotpCounter=Counter
+loginTotpDeviceName=Device Name
+
+loginTotp.totp=Time-based
+loginTotp.hotp=Counter-based
+
+loginChooseAuthenticator=Select login method
+
+oauthGrantRequest=Do you grant these access privileges?
+inResource=in
+
+oauth2DeviceVerificationTitle=Device Login
+verifyOAuth2DeviceUserCode=Enter the code provided by your device and click Submit
+oauth2DeviceInvalidUserCodeMessage=Invalid code, please try again.
+oauth2DeviceExpiredUserCodeMessage=The code has expired. Please go back to your device and try connecting again.
+oauth2DeviceVerificationCompleteHeader=Device Login Successful
+oauth2DeviceVerificationCompleteMessage=You may close this browser window and go back to your device.
+oauth2DeviceVerificationFailedHeader=Device Login Failed
+oauth2DeviceVerificationFailedMessage=You may close this browser window and go back to your device and try connecting again.
+oauth2DeviceConsentDeniedMessage=Consent denied for connecting the device.
+oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
+
+emailVerifyInstruction1=An email with instructions to verify your email address has been sent to you.
+emailVerifyInstruction2=Haven''t received a verification code in your email?
+emailVerifyInstruction3=to re-send the email.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.
+emailLinkIdp2=Haven''t received a verification code in your email?
+emailLinkIdp3=to re-send the email.
+emailLinkIdp4=If you already verified the email in different browser
+emailLinkIdp5=to continue.
+
+backToLogin=« Back to Login
+
+emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
+
+copyCodeInstruction=Please copy this code and paste it into your application:
+
+pageExpiredTitle=Page has expired
+pageExpiredMsg1=To restart the login process
+pageExpiredMsg2=To continue the login process
+
+personalInfo=Personal Info:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Create realm
+role_create-client=Create client
+role_view-realm=View realm
+role_view-users=View users
+role_view-applications=View applications
+role_view-clients=View clients
+role_view-events=View events
+role_view-identity-providers=View identity providers
+role_manage-realm=Manage realm
+role_manage-users=Manage users
+role_manage-applications=Manage applications
+role_manage-identity-providers=Manage identity providers
+role_manage-clients=Manage clients
+role_manage-events=Manage events
+role_view-profile=View profile
+role_manage-account=Manage account
+role_manage-account-links=Manage account links
+role_read-token=Read token
+role_offline-access=Offline access
+client_account=Account
+client_account-console=Account Console
+client_security-admin-console=Security Admin Console
+client_admin-cli=Admin CLI
+client_realm-management=Realm Management
+client_broker=Broker
+
+requiredFields=Required fields
+
+invalidUserMessage=Invalid username or password.
+invalidUsernameMessage=Invalid username.
+invalidUsernameOrEmailMessage=Invalid username or email.
+invalidPasswordMessage=Invalid password.
+invalidEmailMessage=Invalid email address.
+accountDisabledMessage=Account is disabled, contact your administrator.
+accountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.
+expiredCodeMessage=Login timeout. Please sign in again.
+expiredActionMessage=Action expired. Please continue with login now.
+expiredActionTokenNoSessionMessage=Action expired.
+expiredActionTokenSessionExistsMessage=Action expired. Please start again.
+
+missingFirstNameMessage=Please specify first name.
+missingLastNameMessage=Please specify last name.
+missingEmailMessage=Please specify email.
+missingUsernameMessage=Please specify username.
+missingPasswordMessage=Please specify password.
+missingTotpMessage=Please specify authenticator code.
+missingTotpDeviceNameMessage=Please specify device name.
+notMatchPasswordMessage=Passwords don''t match.
+
+error-invalid-value=Invalid value.
+error-invalid-blank=Please specify value.
+error-empty=Please specify value.
+error-invalid-length=Length must be between {1} and {2}.
+error-invalid-length-too-short=Minimal length is {1}.
+error-invalid-length-too-long=Maximal length is {2}.
+error-invalid-email=Invalid email address.
+error-invalid-number=Invalid number.
+error-number-out-of-range=Number must be between {1} and {2}.
+error-number-out-of-range-too-small=Number must have minimal value of {1}.
+error-number-out-of-range-too-big=Number must have maximal value of {2}.
+error-pattern-no-match=Invalid value.
+error-invalid-uri=Invalid URL.
+error-invalid-uri-scheme=Invalid URL scheme.
+error-invalid-uri-fragment=Invalid URL fragment.
+error-user-attribute-required=Please specify this field.
+error-invalid-date=Invalid date.
+error-user-attribute-read-only=This field is read only.
+error-username-invalid-character=Value contains invalid character.
+error-person-name-invalid-character=Value contains invalid character.
+
+invalidPasswordExistingMessage=Invalid existing password.
+invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
+invalidPasswordConfirmMessage=Password confirmation doesn''t match.
+invalidTotpMessage=Invalid authenticator code.
+
+usernameExistsMessage=Username already exists.
+emailExistsMessage=Email already exists.
+
+federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.
+federatedIdentityUnavailableMessage=User {0} authenticated with identity provider {1} does not exists. Please contact your administrator.
+
+confirmLinkIdpTitle=Account already exists
+federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
+federatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}
+nestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.
+confirmLinkIdpReviewProfile=Review profile
+confirmLinkIdpContinue=Add to existing account
+
+configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
+updateProfileMessage=You need to update your user profile to activate your account.
+updatePasswordMessage=You need to change your password to activate your account.
+resetPasswordMessage=You need to change your password.
+verifyEmailMessage=You need to verify your email address to activate your account.
+linkIdpMessage=You need to verify your email address to link your account with {0}.
+
+emailSentMessage=You should receive an email shortly with further instructions.
+emailSendErrorMessage=Failed to send email, please try again later.
+
+accountUpdatedMessage=Your account has been updated.
+accountPasswordUpdatedMessage=Your password has been updated.
+
+delegationCompleteHeader=Login Successful
+delegationCompleteMessage=You may close this browser window and go back to your console application.
+delegationFailedHeader=Login Failed
+delegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.
+
+noAccessMessage=No access
+
+invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
+invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
+invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
+invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
+invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
+invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
+invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
+invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
+invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
+invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
+
+failedToProcessResponseMessage=Failed to process response
+httpsRequiredMessage=HTTPS required
+realmNotEnabledMessage=Realm not enabled
+invalidRequestMessage=Invalid Request
+failedLogout=Logout failed
+unknownLoginRequesterMessage=Unknown login requester
+loginRequesterNotEnabledMessage=Login requester not enabled
+bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login
+standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
+implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
+invalidRedirectUriMessage=Invalid redirect uri
+unsupportedNameIdFormatMessage=Unsupported NameIDFormat
+invalidRequesterMessage=Invalid requester
+registrationNotAllowedMessage=Registration not allowed
+resetCredentialNotAllowedMessage=Reset Credential not allowed
+
+permissionNotApprovedMessage=Permission not approved.
+noRelayStateInResponseMessage=No relay state in response from identity provider.
+insufficientPermissionMessage=Insufficient permissions to link identities.
+couldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.
+couldNotObtainTokenMessage=Could not obtain token from identity provider.
+unexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.
+unexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.
+identityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.
+couldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.
+unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.
+invalidAccessCodeMessage=Invalid access code.
+sessionNotActiveMessage=Session not active.
+invalidCodeMessage=An error occurred, please login again through your application.
+identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider
+identityProviderMissingStateMessage=Missing state parameter in response from identity provider.
+identityProviderNotFoundMessage=Could not find an identity provider with the identifier.
+identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.
+staleCodeMessage=This page is no longer valid, please go back to your application and sign in again
+realmSupportsNoCredentialsMessage=Realm does not support any credential type.
+credentialSetupRequired=Cannot login, credential setup required.
+identityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.
+emailVerifiedMessage=Your email address has been verified.
+staleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid. Maybe you have already verified your email.
+identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
+confirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.
+confirmEmailAddressVerification=Confirm validity of e-mail address {0}.
+confirmExecutionOfActions=Perform the following action(s)
+
+locale_ca=Catal\u00E0
+locale_cs=\u010Ce\u0161tina
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Espa\u00F1ol
+locale_fr=Fran\u00E7ais
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=\u65E5\u672C\u8A9E
+locale_lt=Lietuvi\u0173
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Portugu\u00EAs (Brasil)
+locale_pt-BR=Portugu\u00EAs (Brasil)
+locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
+locale_sk=Sloven\u010Dina
+locale_sv=Svenska
+locale_tr=T\u00FCrk\u00E7e
+locale_zh-CN=\u4E2D\u6587\u7B80\u4F53
+
+backToApplication=« Back to Application
+missingParameterMessage=Missing parameters\: {0}
+clientNotFoundMessage=Client not found.
+clientDisabledMessage=Client disabled.
+invalidParameterMessage=Invalid parameter\: {0}
+alreadyLoggedIn=You are already logged in.
+differentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please sign out first.
+brokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.
+proceedWithAction=» Click here to proceed
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.terms_and_conditions=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+
+doX509Login=You will be logged in as\:
+clientCertificate=X509 client certificate\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=Page not found
+internalServerError=An internal server error has occurred
+
+console-username=Username:
+console-password=Password:
+console-otp=One Time Password:
+console-new-password=New Password:
+console-confirm-password=Confirm Password:
+console-update-password=Update of your password is required.
+console-verify-email=You need to verify your email address. We sent an email to {0} that contains a verification code. Please enter this code into the input below.
+console-email-code=Email Code:
+console-accept-terms=Accept Terms? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=User information
+openshift.scope.user_check-access=User access information
+openshift.scope.user_full=Full Access
+openshift.scope.list-projects=List projects
+
+# SAML authentication
+saml.post-form.title=Authentication Redirect
+saml.post-form.message=Redirecting, please wait.
+saml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue.
+saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
+
+#authenticators
+otp-display-name=Authenticator Application
+otp-help-text=Enter a verification code from authenticator application.
+password-display-name=Password
+password-help-text=Sign in by entering your password.
+auth-username-form-display-name=Username
+auth-username-form-help-text=Start sign in by entering your username
+auth-username-password-form-display-name=Username and password
+auth-username-password-form-help-text=Sign in by entering your username and password.
+
+# WebAuthn
+webauthn-display-name=Security Key
+webauthn-help-text=Use your security key to sign in.
+webauthn-passwordless-display-name=Security Key
+webauthn-passwordless-help-text=Use your security key for passwordless sign in.
+webauthn-login-title=Security Key login
+webauthn-registration-title=Security Key Registration
+webauthn-available-authenticators=Available authenticators
+webauthn-unsupported-browser-text=WebAuthn is not supported by this browser. Try another one or contact your administrator.
+webauthn-doAuthenticate=Sign in with Security Key
+
+# WebAuthn Error
+webauthn-error-title=Security Key Error
+webauthn-error-registration=Failed to register your Security key. {0}
+webauthn-error-api-get=Failed to authenticate by the Security key. {0}
+webauthn-error-different-user=First authenticated user is not the one authenticated by the Security key.
+webauthn-error-auth-verification=Security key authentication result is invalid. {0}
+webauthn-error-register-verification=Security key registration result is invalid. {0}
+webauthn-error-user-not-found=Unknown user authenticated by the Security key.
+
+# Identity provider
+identity-provider-redirector=Connect with another Identity Provider
+identity-provider-login-label=Or sign in with
+
+finalDeletionConfirmation=If you delete your account, it cannot be restored. To keep your account, click Cancel.
+irreversibleAction=This action is irreversible
+deleteAccountConfirm=Delete account confirmation
+
+deletingImplies=Deleting your account implies:
+errasingData=Erasing all your data
+loggingOutImmediately=Logging you out immediately
+accountUnusable=Any subsequent use of the application will not be possible with this account
+userDeletedSuccessfully=User deleted successfully
+
+access-denied=Access denied
+
+systemType={0} System
diff --git a/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl b/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
new file mode 100644
index 0000000..e0d533b
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
@@ -0,0 +1,74 @@
+<#import "template.ftl" as layout>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+ <#if section = "header">
+ ${msg("registerTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
\ No newline at end of file
diff --git a/dev/config/keycloak/themes/ltt/login/register.ftl b/dev/config/keycloak/themes/ltt/login/register.ftl
new file mode 100644
index 0000000..07829a0
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/register.ftl
@@ -0,0 +1,88 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+ <#if section = "header">
+ ${msg("registerTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/resources/css/styles.css b/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
new file mode 100644
index 0000000..7b94eb2
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
@@ -0,0 +1,384 @@
+:root {
+ --body-bg-color: #325c33;
+ --primary-color: #325c33;
+ --primary-hover-color: #254325;
+ --section-border-color: #dcdfdc;
+ --button-primary-color: #af4507;
+ --button-primary-hover-color: #883505;
+ --title-color: #325c33;
+ --label-color: #71757b;
+ --link-color: #1994d0;
+ --link-hover-color: #126994;
+ --highlight-bg-color: #f9e4d3;
+ --text-default-color: #444;
+ --default-body-font-size: 16px;
+}
+body {
+ font-family: "Roboto", "Helvetica", "Arial", sans-serif;
+ font-size: var(--default-body-font-size);
+}
+.pf-c-alert__title {
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+
+html.login-pf {
+ background: var(--body-bg-color);
+}
+
+#header {
+ position: fixed;
+ z-index: 10000;
+ left: 0;
+ top: 0;
+ width: 100%;
+ background-color: var(--body-bg-color);
+ color: #fff;
+ line-height: 3em;
+ box-shadow: 0 0 0.15em 0 rgba(0, 0, 0, 0.1);
+ margin-bottom: 1em;
+ display: flex;
+ align-items: center;
+ height: 4em;
+}
+
+#header img {
+ height: 2em;
+ padding-left: 1em;
+}
+
+#kc-header {
+ margin-top: 4em;
+}
+
+.login-pf-page {
+ background-color: var(--body-bg-color);
+ height: 100%;
+ padding-top: 4em;
+ padding-bottom: 24px;
+ background-color: var(--body-bg-color);
+}
+@media (min-width: 768px) {
+ .login-pf-page {
+ padding-top: 3em;
+ }
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 600;
+ color: inherit;
+ /* letter-spacing: -0.0325em; */
+}
+
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+ul, p {
+ line-height: 1.4;
+}
+
+.alert {
+ padding-left: 16px;
+ padding-right: 16px;
+}
+.alert-error {
+ color: #9b0202;
+}
+input[type="text"],
+input[type="password"] {
+ display: block;
+ width: 100%;
+ height: 32px;
+ padding: 2px 6px;
+ font-size: var(--default-body-font-size);
+ line-height: 1.66666667;
+ color: #363636;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #bbb;
+ border-top-color: rgb(187, 187, 187);
+ border-right-color: rgb(187, 187, 187);
+ border-bottom-color: rgb(187, 187, 187);
+ border-left-color: rgb(187, 187, 187);
+ border-radius: 0;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+ margin-bottom: 24px;
+ box-sizing: border-box;
+}
+input[type="submit"] {
+ background-image: none;
+ background-color: var(--primary-color);
+ padding: 16px;
+ width: 100%;
+ font-size: var(--default-body-font-size);
+ color: #fff;
+ box-sizing: border-box;
+ box-shadow: none;
+ border: 0;
+ display: block;
+}
+input[type="submit"]:hover {
+ background-color: var(--primary-hover-color);
+}
+a {
+ color: var(--link-color);
+ text-decoration: none;
+}
+a:hover {
+ color: var(--link-hover-color);
+}
+[class*="pf-c-"],
+[class*="pf-c-"]::before,
+[class*="pf-c-"]::after {
+ padding: 4px 0;
+}
+label {
+ font-weight: 500;
+ display: inline-block;
+ font-size: 14px;
+ margin-bottom: 4px;
+ color: var(--label-color);
+}
+.btn {
+ border-radius: 8px;
+}
+.btn-primary,
+.pf-c-button.pf-m-primary {
+ background-image: none;
+ background-color: var(--button-primary-color);
+ border: 0;
+ border-radius: 8px;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.pf-c-button.pf-m-primary:hover,
+.pf-c-button.pf-m-primary:focus,
+.pf-c-button.pf-m-primary:active {
+ background-color: var(--button-primary-hover-color);
+}
+
+.login-pf body {
+ font-family: "Roboto", "Helvetica", "Arial", sans-serif;
+ background-color: var(--body-bg-color);
+ background-image: none;
+ font-size: var(--default-body-font-size);
+}
+.login-pf-page .card-pf {
+ margin-bottom: 32px;
+}
+@media (min-width: 768px) {
+ .login-pf-page .card-pf {
+ padding: 16px 32px 48px 32px;
+ }
+}
+.login-pf-page .card-pf p {
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .login-pf-page .login-pf-header {
+ margin-bottom: 10px;
+ }
+}
+@media (max-width: 767px) {
+ .login-pf-page .card-pf {
+ max-width: 100%;
+ margin-left: 16px;
+ margin-right: 16px;
+ padding: 4px 16px 24px;
+ }
+}
+.login-pf-page .login-pf-header h1 {
+ font-size: 1.75em;
+}
+#kc-info-wrapper {
+ background-color: transparent;
+ padding: 0;
+ text-align: left;
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+#kc-header-wrapper {
+ font-weight: 500;
+ text-transform: capitalize;
+ line-height: 1.5;
+ font-weight: 500;
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ align-items: center;
+ justify-content: center;
+}
+@media (max-width: 767px) {
+ #kc-header-wrapper {
+ color: #fff;
+ padding: 0;
+ }
+}
+#kc-site-name,
+#kc-system-type {
+ color: #fff;
+ text-align: center;
+ text-transform: capitalize;
+ font-size: 1.8rem;
+}
+#kc-login-info-message {
+ max-width: 100%;
+ margin: auto;
+ line-height: 1.55;
+ background: var(--highlight-bg-color);
+ color: var(--text-default-color);
+ padding: 16px;
+ font-size: 1rem;
+ font-weight: 500;
+}
+@media (min-width: 768px) {
+ #kc-login-info-message {
+ max-width: 60%;
+ margin: auto;
+ }
+}
+#kc-content-wrapper {
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+}
+#kc-header {
+ margin-top: 0;
+ margin-bottom: 24px;
+}
+#kc-page-title {
+ text-align: center;
+ font-weight: 600;
+ color: var(--title-color);
+ padding-bottom: 4px;
+ font-size: 1.75em;
+}
+h1#kc-page-title {
+ margin-top: 24px;
+}
+#kc-form {
+ width: 100%;
+}
+#kc-form-buttons {
+ margin-top: 24px;
+ text-align: center;
+}
+#kc-form-options .checkbox {
+ display: none;
+}
+#kc-info {
+ margin-top: 0;
+ margin-bottom: 8px;
+ margin-left: 0;
+ margin-right: 0;
+ color: #777;
+}
+.card-pf {
+ background: #fff;
+ margin: 0 auto;
+ margin-bottom: 0px;
+ padding: 0 20px;
+ max-width: 420px;
+ border-top: 0;
+ box-shadow: 0 0 0;
+ padding: 0 40px 40px;
+ margin-top: 28px;
+ margin-bottom: 32px;
+}
+.card-pf form.form-actions .btn {
+ margin-bottom: 16px;
+}
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico b/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..62de3a266ec8c9991463b5d4bf230679a4ee71c3
GIT binary patch
literal 4286
zcmeH~K~BOz6oy9^ZcL0yf(C(Nv=LbdmMG#vU3mhdCgN2*j^Yhmz`|3wGwwYBBz64%
z!fOXZfdZCIAs^FDJM+EwW(q;6CA;Re0Z`lVj-~;epb8foYfNr+DJ`Fz@_X4(n@8$u|fd#%m*xby!Gva#K
zIJ2KIyn=xka6XBjZq~(|Pp1woojKjpxpRB4|L=Xlxx}zdZ-o41O$I!h@Y7wnuSAWZ
z3BOkd#sMras{Y~rx~;1XM;}WJhzWCzL+T(g%EYb(;Cn89)**TfW<0}={rtJ-g^i-6v;F<&=igrko=Y9%
z{%P8NO+0_Pva7STeVskCd(>=gUzfafALjS=U^o`UUrI
BO-%p*
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f2d9d2aeb1c1461767988a042aae50492d454bc
GIT binary patch
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..0dd500445d7249ddd1b1dea7dc79d5e2f75cf223
GIT binary patch
literal 343
zcmV-d0jU0oP)Rb^f-HfiA|a#ZS&BN>m{U!Bf9XBlP=AUsPhep
z0;u>nQCxb~G6c;4tOM)aDVebC2LF?__!*$Y%|S5$e;ZcIdR+o#XrlC>L#@3RFZO+y
z4ac0_$8S?_3L#)o1cV>wsb|~_2qr}-{Xy0sk1ddFrS2NjYBy!#lv@hhf%T~P1a2ls
zg9cR!$Y8{U0euD81vt(&PyxuVl0?xy+oT=qfZ(
zU<;qzo;L~X{8Dl*OuQ;g6C?jcvTY4MH)UgY@3N+I%Y&B-aM#Gmz4*K9-@h9B>+j#Q
z@1I{-{^;BJ=zrF!cK!}Pr!g=bh|HcT>Z=m}wDHmbyC0nDaV#gVm&uycGotW
zpv;r|b9e9Fzj)!!_FHF``Wx|qb*+1{*5LE=)%xG0rlsBtdT?-dwR{mlor@ArQ!T)1>sQ|BRGRy6pUXk5Eq%Jj
zt#hDSUl#1`1Hp4rtdp{v4HrVu6{1-oD!M}vd
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..640bd71cab7bdfc7a8adcf28ffaf6db736a1c008
GIT binary patch
literal 410
zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2comSQK*5Dp-y;YjHK@;M7UB8!3Q
zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E9oo-U3d
z7QI&|@AYC16lmSQ(|nzi6W2vA0hQiX{shsj9%4*QVx6m7=T11}S0g4pTOrBJ(L2zj
zqqUbmAu&;Tnwis)`FE;yFXbH4TM_-V#F%}bS9C7N)nccy^_%s?ydQOE$UA=bQASGdP
zUS5*^?Y}eFBd=Y%8?p303zx;a-hVOO%tz8T)jmnDmV3_E#n4nO@i}MX#=5_=rbOm!
z*!s=OFZw-8%CQyiuZC^?Jc-4l;#4*gQu&X%Q~loCIB2_
BsrLW?
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f2d9d2aeb1c1461767988a042aae50492d454bc
GIT binary patch
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9392a356fd3b383997c1ef289b48d02be96c351
GIT binary patch
literal 646
zcmV;10(t$3P)5ebW)JIb`v2;&5sUEt7(pdR?_rqvF~(w
z&wHPH?%{G}o6t%tD3-YcoIt#ZimsMn=fj5~SV}0ANdw)$JIs+vm8VEr5vY*RCc!0O
zJeKiMnQmZjF~P}|ITC|_fPR3sChh|hh#}5v^?!j1No^OL5!{Yt{P|l#ojGW*>A`F%
zG;=oe?E0{aNj(7$L<2hJOpDEg;c-0Uu3}QpfZdv9Yul(xOFAm{YCmuc7-<=Hz6#rb
zwStWR%+Uk1dKH(KznaJbxtT_8h1rkY@F&AK;#}dXHiv>reL9ZVhZt;6c{&UPfawRU
z3PX!QX+>?W8zy57-1{e1nf<%`Ip2$C{RJ2WP8EB!V*#i*Ll@AAxI)U6d9kg;Tft2N
zvI|T#k_Ga${UDcC6K25hA)et;?S`pV)*0TbLbSFYPx%LC5OMf>LI(kYhG{MW?Gclt
z?kz+j>;xV-pszlvScx&iWL1nHDUdjgc-@-yi~8Zf?-uKCu&$j
zmGV@tHY^&3ufPQiVR|G&lMFKJqcV3b2BIPt0$RTQ1o3gEnU}InzE6h&(}7s>n+PkJ
gT)C0w?I}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl b/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
new file mode 100644
index 0000000..0225cf9
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
@@ -0,0 +1,42 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true; section>
+ <#if section = "header" || section = "show-username">
+
+ <#if section = "header">
+ ${msg("loginChooseAuthenticator")}
+ #if>
+ <#elseif section = "form">
+
+
+
+ #if>
+@layout.registrationLayout>
+
diff --git a/dev/config/keycloak/themes/ltt/login/template.ftl b/dev/config/keycloak/themes/ltt/login/template.ftl
new file mode 100644
index 0000000..042f887
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/template.ftl
@@ -0,0 +1,159 @@
+<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
+
+ lang="${locale.currentLanguageTag}"#if>>
+
+
+
+
+
+
+ <#if properties.meta?has_content>
+ <#list properties.meta?split(' ') as meta>
+
+ #list>
+ #if>
+ ${msg("loginTitle",(realm.displayName!''))}
+
+ <#if properties.stylesCommon?has_content>
+ <#list properties.stylesCommon?split(' ') as style>
+
+ #list>
+ #if>
+ <#if properties.styles?has_content>
+ <#list properties.styles?split(' ') as style>
+
+ #list>
+ #if>
+ <#if properties.scripts?has_content>
+ <#list properties.scripts?split(' ') as script>
+
+ #list>
+ #if>
+ <#if scripts??>
+ <#list scripts as script>
+
+ #list>
+ #if>
+
+
+
+
+ <#-- App-initiated actions should not see warning messages about the need to complete the action -->
+ <#-- during login. -->
+ <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
+
If you didn''t create this account, just ignore this message.
+emailUpdateConfirmationSubject=Verify new email
+emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
+emailUpdateConfirmationBodyHtml=
To update your {2} account with email address {1}, click the link below
If you don''t want to proceed with this modification, just ignore this message.
+emailTestSubject=[KEYCLOAK] - SMTP test message
+emailTestBody=This is a test message. Test Only.
+emailTestBodyHtml=
This is a test message
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
+identityProviderLinkBodyHtml=
Someone wants to link your {1} account with {0} account of user {2}. If this was you, click the link below to link accounts
If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
+passwordResetSubject=Reset password
+passwordResetBody=Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your password, just ignore this message and nothing will be changed.
+passwordResetBodyHtml=
Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.
If you don''t want to reset your password, just ignore this message and nothing will be changed.
+executeActionsSubject=Update Your Account
+executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
+executeActionsBodyHtml=
Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.
If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
+eventLoginErrorSubject=Login error
+eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
+eventLoginErrorBodyHtml=
A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
+eventRemoveTotpSubject=Remove OTP
+eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
+eventRemoveTotpBodyHtml=
OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdatePasswordSubject=Update password
+eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdatePasswordBodyHtml=
Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdateTotpSubject=Update OTP
+eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdateTotpBodyHtml=
OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2Please verify your email address by entering in the following code.
{0}
+
diff --git a/dev/config/keycloak/themes/ltt/email/theme.properties b/dev/config/keycloak/themes/ltt/email/theme.properties
new file mode 100644
index 0000000..93d3b28
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/email/theme.properties
@@ -0,0 +1,2 @@
+parent=keycloak
+
diff --git a/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl b/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl
new file mode 100644
index 0000000..d609182
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-config-totp-text.ftl
@@ -0,0 +1,31 @@
+<#ftl output_format="plainText">
+${msg("loginTotpIntro")}
+
+${msg("loginTotpStep1")}
+
+<#list totp.policy.supportedApplications as app>
+* ${app}
+#list>
+
+${msg("loginTotpManualStep2")}
+
+ ${totp.totpSecretEncoded}
+
+
+${msg("loginTotpManualStep3")}
+
+- ${msg("loginTotpType")}: ${msg("loginTotp." + totp.policy.type)}
+- ${msg("loginTotpAlgorithm")}: ${totp.policy.getAlgorithmKey()}
+- ${msg("loginTotpDigits")}: ${totp.policy.digits}
+<#if totp.policy.type = "totp">
+- ${msg("loginTotpInterval")}: ${totp.policy.period}
+
+<#elseif totp.policy.type = "hotp">
+- ${msg("loginTotpCounter")}: ${totp.policy.initialCounter}
+
+#if>
+
+Enter in your one time password so we can verify you have installed it correctly.
+
+
+
diff --git a/dev/config/keycloak/themes/ltt/login/login-update-password.ftl b/dev/config/keycloak/themes/ltt/login/login-update-password.ftl
new file mode 100644
index 0000000..5c70fe0
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-update-password.ftl
@@ -0,0 +1,45 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true; section>
+ <#if section = "header">
+ ${msg("updatePasswordTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl b/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl
new file mode 100644
index 0000000..d87a90f
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-update-profile.ftl
@@ -0,0 +1,61 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+ <#if section = "header">
+ ${msg("loginProfileTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/login-username.ftl b/dev/config/keycloak/themes/ltt/login/login-username.ftl
new file mode 100644
index 0000000..6d5737e
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/login-username.ftl
@@ -0,0 +1,60 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=social.displayInfo displayWide=(realm.password && social.providers??); section>
+ <#if section = "header">
+ ${msg("doLogIn")}
+ <#elseif section = "form">
+
+ #if>
+ #if>
+
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties b/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
new file mode 100644
index 0000000..60405bb
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
@@ -0,0 +1,442 @@
+doLogIn=Sign In
+doRegister=Register
+doCancel=Cancel
+doSubmit=Submit
+doBack=Back
+doYes=Yes
+doNo=No
+doContinue=Continue
+doIgnore=Ignore
+doAccept=Accept
+doDecline=Decline
+doForgotPassword=First time using, or forgot password?
+doClickHere=Click here
+doImpersonate=Impersonate
+doTryAgain=Try again
+doTryAnotherWay=Try Another Way
+doConfirmDelete=Confirm deletion
+errorDeletingAccount=Error happened while deleting account
+deletingAccountForbidden=You do not have enough permissions to delete your own account, contact admin.
+kerberosNotConfigured=Kerberos Not Configured
+kerberosNotConfiguredTitle=Kerberos Not Configured
+bypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login. Please click continue to login in through other means
+kerberosNotSetUp=Kerberos is not set up. You cannot login.
+registerTitle=Register
+loginAccountTitle=Sign in to your account
+loginTitle=Sign in to {0}
+loginTitleHtml={0}
+impersonateTitle={0} Impersonate User
+impersonateTitleHtml={0} Impersonate User
+realmChoice=Realm
+unknownUser=Unknown user
+loginTotpTitle=Mobile Authenticator Setup
+loginProfileTitle=Update Account Information
+loginIdpReviewProfileTitle=Update Account Information
+loginTimeout=Your login attempt timed out. Login will start from the beginning.
+oauthGrantTitle=Grant Access to {0}
+oauthGrantTitleHtml={0}
+errorTitle=We are sorry...
+errorTitleHtml=We are sorry ...
+emailVerifyTitle=Email verification
+emailForgotTitle=First time using, or forgot password?
+updatePasswordTitle=Update password
+codeSuccessTitle=Success code
+codeErrorTitle=Error code\: {0}
+displayUnsupported=Requested display type unsupported
+browserRequired=Browser required to login
+browserContinue=Browser required to complete login
+browserContinuePrompt=Open browser and continue login? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Terms and Conditions
+termsText=
Terms and conditions to be defined
+termsPlainText=Terms and conditions to be defined.
+
+recaptchaFailed=Invalid Recaptcha
+recaptchaNotConfigured=Recaptcha is required, but not configured
+consentDenied=Consent denied.
+
+noAccount=New user?
+username=Username
+usernameOrEmail=Username or email
+firstName=First name
+givenName=Given name
+fullName=Full name
+lastName=Last name
+familyName=Family name
+email=Email
+password=Password
+passwordConfirm=Confirm password
+passwordNew=New Password
+passwordNewConfirm=New Password confirmation
+passwordPolicy=
Password must:
Include at least one upper case letter, one lower case letter, and one number
Be at least 8 characters long
Have not been used recently
+rememberMe=Remember me
+authenticatorCode=One-time code
+address=Address
+street=Street
+locality=City or Locality
+region=State, Province, or Region
+postal_code=Zip or Postal code
+country=Country
+emailVerified=Email verified
+website=Web page
+phoneNumber=Phone number
+phoneNumberVerified=Phone number verified
+gender=Gender
+birthday=Birthdate
+zoneinfo=Time zone
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=Sign out from other devices
+
+profileScopeConsentText=User profile
+emailScopeConsentText=Email address
+addressScopeConsentText=Address
+phoneScopeConsentText=Phone number
+offlineAccessScopeConsentText=Offline Access
+samlRoleListScopeConsentText=My Roles
+rolesScopeConsentText=User roles
+
+restartLoginTooltip=Restart login
+
+loginTotpIntro=You need to set up a One Time Password generator to access this account
+loginTotpStep1=Install one of the following applications on your mobile:
+loginTotpStep2=Open the application and scan the barcode:
+loginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.
+loginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
+loginTotpManualStep2=Open the application and enter the key:
+loginTotpManualStep3=Use the following configuration values if the application allows setting them:
+loginTotpUnableToScan=Unable to scan?
+loginTotpScanBarcode=Scan barcode?
+loginCredential=Credential
+loginOtpOneTime=One-time code
+loginTotpType=Type
+loginTotpAlgorithm=Algorithm
+loginTotpDigits=Digits
+loginTotpInterval=Interval
+loginTotpCounter=Counter
+loginTotpDeviceName=Device Name
+
+loginTotp.totp=Time-based
+loginTotp.hotp=Counter-based
+
+loginChooseAuthenticator=Select login method
+
+oauthGrantRequest=Do you grant these access privileges?
+inResource=in
+
+oauth2DeviceVerificationTitle=Device Login
+verifyOAuth2DeviceUserCode=Enter the code provided by your device and click Submit
+oauth2DeviceInvalidUserCodeMessage=Invalid code, please try again.
+oauth2DeviceExpiredUserCodeMessage=The code has expired. Please go back to your device and try connecting again.
+oauth2DeviceVerificationCompleteHeader=Device Login Successful
+oauth2DeviceVerificationCompleteMessage=You may close this browser window and go back to your device.
+oauth2DeviceVerificationFailedHeader=Device Login Failed
+oauth2DeviceVerificationFailedMessage=You may close this browser window and go back to your device and try connecting again.
+oauth2DeviceConsentDeniedMessage=Consent denied for connecting the device.
+oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
+
+emailVerifyInstruction1=An email with instructions to verify your email address has been sent to you.
+emailVerifyInstruction2=Haven''t received a verification code in your email?
+emailVerifyInstruction3=to re-send the email.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.
+emailLinkIdp2=Haven''t received a verification code in your email?
+emailLinkIdp3=to re-send the email.
+emailLinkIdp4=If you already verified the email in different browser
+emailLinkIdp5=to continue.
+
+backToLogin=« Back to Login
+
+emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
+
+copyCodeInstruction=Please copy this code and paste it into your application:
+
+pageExpiredTitle=Page has expired
+pageExpiredMsg1=To restart the login process
+pageExpiredMsg2=To continue the login process
+
+personalInfo=Personal Info:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Create realm
+role_create-client=Create client
+role_view-realm=View realm
+role_view-users=View users
+role_view-applications=View applications
+role_view-clients=View clients
+role_view-events=View events
+role_view-identity-providers=View identity providers
+role_manage-realm=Manage realm
+role_manage-users=Manage users
+role_manage-applications=Manage applications
+role_manage-identity-providers=Manage identity providers
+role_manage-clients=Manage clients
+role_manage-events=Manage events
+role_view-profile=View profile
+role_manage-account=Manage account
+role_manage-account-links=Manage account links
+role_read-token=Read token
+role_offline-access=Offline access
+client_account=Account
+client_account-console=Account Console
+client_security-admin-console=Security Admin Console
+client_admin-cli=Admin CLI
+client_realm-management=Realm Management
+client_broker=Broker
+
+requiredFields=Required fields
+
+invalidUserMessage=Invalid username or password.
+invalidUsernameMessage=Invalid username.
+invalidUsernameOrEmailMessage=Invalid username or email.
+invalidPasswordMessage=Invalid password.
+invalidEmailMessage=Invalid email address.
+accountDisabledMessage=Account is disabled, contact your administrator.
+accountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.
+expiredCodeMessage=Login timeout. Please sign in again.
+expiredActionMessage=Action expired. Please continue with login now.
+expiredActionTokenNoSessionMessage=Action expired.
+expiredActionTokenSessionExistsMessage=Action expired. Please start again.
+
+missingFirstNameMessage=Please specify first name.
+missingLastNameMessage=Please specify last name.
+missingEmailMessage=Please specify email.
+missingUsernameMessage=Please specify username.
+missingPasswordMessage=Please specify password.
+missingTotpMessage=Please specify authenticator code.
+missingTotpDeviceNameMessage=Please specify device name.
+notMatchPasswordMessage=Passwords don''t match.
+
+error-invalid-value=Invalid value.
+error-invalid-blank=Please specify value.
+error-empty=Please specify value.
+error-invalid-length=Length must be between {1} and {2}.
+error-invalid-length-too-short=Minimal length is {1}.
+error-invalid-length-too-long=Maximal length is {2}.
+error-invalid-email=Invalid email address.
+error-invalid-number=Invalid number.
+error-number-out-of-range=Number must be between {1} and {2}.
+error-number-out-of-range-too-small=Number must have minimal value of {1}.
+error-number-out-of-range-too-big=Number must have maximal value of {2}.
+error-pattern-no-match=Invalid value.
+error-invalid-uri=Invalid URL.
+error-invalid-uri-scheme=Invalid URL scheme.
+error-invalid-uri-fragment=Invalid URL fragment.
+error-user-attribute-required=Please specify this field.
+error-invalid-date=Invalid date.
+error-user-attribute-read-only=This field is read only.
+error-username-invalid-character=Value contains invalid character.
+error-person-name-invalid-character=Value contains invalid character.
+
+invalidPasswordExistingMessage=Invalid existing password.
+invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
+invalidPasswordConfirmMessage=Password confirmation doesn''t match.
+invalidTotpMessage=Invalid authenticator code.
+
+usernameExistsMessage=Username already exists.
+emailExistsMessage=Email already exists.
+
+federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.
+federatedIdentityUnavailableMessage=User {0} authenticated with identity provider {1} does not exists. Please contact your administrator.
+
+confirmLinkIdpTitle=Account already exists
+federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
+federatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}
+nestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.
+confirmLinkIdpReviewProfile=Review profile
+confirmLinkIdpContinue=Add to existing account
+
+configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
+updateProfileMessage=You need to update your user profile to activate your account.
+updatePasswordMessage=You need to change your password to activate your account.
+resetPasswordMessage=You need to change your password.
+verifyEmailMessage=You need to verify your email address to activate your account.
+linkIdpMessage=You need to verify your email address to link your account with {0}.
+
+emailSentMessage=You should receive an email shortly with further instructions.
+emailSendErrorMessage=Failed to send email, please try again later.
+
+accountUpdatedMessage=Your account has been updated.
+accountPasswordUpdatedMessage=Your password has been updated.
+
+delegationCompleteHeader=Login Successful
+delegationCompleteMessage=You may close this browser window and go back to your console application.
+delegationFailedHeader=Login Failed
+delegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.
+
+noAccessMessage=No access
+
+invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
+invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
+invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
+invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
+invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
+invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
+invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
+invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
+invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
+invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
+
+failedToProcessResponseMessage=Failed to process response
+httpsRequiredMessage=HTTPS required
+realmNotEnabledMessage=Realm not enabled
+invalidRequestMessage=Invalid Request
+failedLogout=Logout failed
+unknownLoginRequesterMessage=Unknown login requester
+loginRequesterNotEnabledMessage=Login requester not enabled
+bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login
+standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
+implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
+invalidRedirectUriMessage=Invalid redirect uri
+unsupportedNameIdFormatMessage=Unsupported NameIDFormat
+invalidRequesterMessage=Invalid requester
+registrationNotAllowedMessage=Registration not allowed
+resetCredentialNotAllowedMessage=Reset Credential not allowed
+
+permissionNotApprovedMessage=Permission not approved.
+noRelayStateInResponseMessage=No relay state in response from identity provider.
+insufficientPermissionMessage=Insufficient permissions to link identities.
+couldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.
+couldNotObtainTokenMessage=Could not obtain token from identity provider.
+unexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.
+unexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.
+identityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.
+couldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.
+unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.
+invalidAccessCodeMessage=Invalid access code.
+sessionNotActiveMessage=Session not active.
+invalidCodeMessage=An error occurred, please login again through your application.
+identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider
+identityProviderMissingStateMessage=Missing state parameter in response from identity provider.
+identityProviderNotFoundMessage=Could not find an identity provider with the identifier.
+identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.
+staleCodeMessage=This page is no longer valid, please go back to your application and sign in again
+realmSupportsNoCredentialsMessage=Realm does not support any credential type.
+credentialSetupRequired=Cannot login, credential setup required.
+identityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.
+emailVerifiedMessage=Your email address has been verified.
+staleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid. Maybe you have already verified your email.
+identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
+confirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.
+confirmEmailAddressVerification=Confirm validity of e-mail address {0}.
+confirmExecutionOfActions=Perform the following action(s)
+
+locale_ca=Catal\u00E0
+locale_cs=\u010Ce\u0161tina
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Espa\u00F1ol
+locale_fr=Fran\u00E7ais
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=\u65E5\u672C\u8A9E
+locale_lt=Lietuvi\u0173
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Portugu\u00EAs (Brasil)
+locale_pt-BR=Portugu\u00EAs (Brasil)
+locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
+locale_sk=Sloven\u010Dina
+locale_sv=Svenska
+locale_tr=T\u00FCrk\u00E7e
+locale_zh-CN=\u4E2D\u6587\u7B80\u4F53
+
+backToApplication=« Back to Application
+missingParameterMessage=Missing parameters\: {0}
+clientNotFoundMessage=Client not found.
+clientDisabledMessage=Client disabled.
+invalidParameterMessage=Invalid parameter\: {0}
+alreadyLoggedIn=You are already logged in.
+differentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please sign out first.
+brokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.
+proceedWithAction=» Click here to proceed
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.terms_and_conditions=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+
+doX509Login=You will be logged in as\:
+clientCertificate=X509 client certificate\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=Page not found
+internalServerError=An internal server error has occurred
+
+console-username=Username:
+console-password=Password:
+console-otp=One Time Password:
+console-new-password=New Password:
+console-confirm-password=Confirm Password:
+console-update-password=Update of your password is required.
+console-verify-email=You need to verify your email address. We sent an email to {0} that contains a verification code. Please enter this code into the input below.
+console-email-code=Email Code:
+console-accept-terms=Accept Terms? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=User information
+openshift.scope.user_check-access=User access information
+openshift.scope.user_full=Full Access
+openshift.scope.list-projects=List projects
+
+# SAML authentication
+saml.post-form.title=Authentication Redirect
+saml.post-form.message=Redirecting, please wait.
+saml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue.
+saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
+
+#authenticators
+otp-display-name=Authenticator Application
+otp-help-text=Enter a verification code from authenticator application.
+password-display-name=Password
+password-help-text=Sign in by entering your password.
+auth-username-form-display-name=Username
+auth-username-form-help-text=Start sign in by entering your username
+auth-username-password-form-display-name=Username and password
+auth-username-password-form-help-text=Sign in by entering your username and password.
+
+# WebAuthn
+webauthn-display-name=Security Key
+webauthn-help-text=Use your security key to sign in.
+webauthn-passwordless-display-name=Security Key
+webauthn-passwordless-help-text=Use your security key for passwordless sign in.
+webauthn-login-title=Security Key login
+webauthn-registration-title=Security Key Registration
+webauthn-available-authenticators=Available authenticators
+webauthn-unsupported-browser-text=WebAuthn is not supported by this browser. Try another one or contact your administrator.
+webauthn-doAuthenticate=Sign in with Security Key
+
+# WebAuthn Error
+webauthn-error-title=Security Key Error
+webauthn-error-registration=Failed to register your Security key. {0}
+webauthn-error-api-get=Failed to authenticate by the Security key. {0}
+webauthn-error-different-user=First authenticated user is not the one authenticated by the Security key.
+webauthn-error-auth-verification=Security key authentication result is invalid. {0}
+webauthn-error-register-verification=Security key registration result is invalid. {0}
+webauthn-error-user-not-found=Unknown user authenticated by the Security key.
+
+# Identity provider
+identity-provider-redirector=Connect with another Identity Provider
+identity-provider-login-label=Or sign in with
+
+finalDeletionConfirmation=If you delete your account, it cannot be restored. To keep your account, click Cancel.
+irreversibleAction=This action is irreversible
+deleteAccountConfirm=Delete account confirmation
+
+deletingImplies=Deleting your account implies:
+errasingData=Erasing all your data
+loggingOutImmediately=Logging you out immediately
+accountUnusable=Any subsequent use of the application will not be possible with this account
+userDeletedSuccessfully=User deleted successfully
+
+access-denied=Access denied
+
+systemType={0} System
diff --git a/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl b/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
new file mode 100644
index 0000000..e0d533b
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
@@ -0,0 +1,74 @@
+<#import "template.ftl" as layout>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+ <#if section = "header">
+ ${msg("registerTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
\ No newline at end of file
diff --git a/dev/config/keycloak/themes/ltt/login/register.ftl b/dev/config/keycloak/themes/ltt/login/register.ftl
new file mode 100644
index 0000000..07829a0
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/register.ftl
@@ -0,0 +1,88 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+ <#if section = "header">
+ ${msg("registerTitle")}
+ <#elseif section = "form">
+
+ #if>
+@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/resources/css/styles.css b/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
new file mode 100644
index 0000000..7b94eb2
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
@@ -0,0 +1,384 @@
+:root {
+ --body-bg-color: #325c33;
+ --primary-color: #325c33;
+ --primary-hover-color: #254325;
+ --section-border-color: #dcdfdc;
+ --button-primary-color: #af4507;
+ --button-primary-hover-color: #883505;
+ --title-color: #325c33;
+ --label-color: #71757b;
+ --link-color: #1994d0;
+ --link-hover-color: #126994;
+ --highlight-bg-color: #f9e4d3;
+ --text-default-color: #444;
+ --default-body-font-size: 16px;
+}
+body {
+ font-family: "Roboto", "Helvetica", "Arial", sans-serif;
+ font-size: var(--default-body-font-size);
+}
+.pf-c-alert__title {
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+
+html.login-pf {
+ background: var(--body-bg-color);
+}
+
+#header {
+ position: fixed;
+ z-index: 10000;
+ left: 0;
+ top: 0;
+ width: 100%;
+ background-color: var(--body-bg-color);
+ color: #fff;
+ line-height: 3em;
+ box-shadow: 0 0 0.15em 0 rgba(0, 0, 0, 0.1);
+ margin-bottom: 1em;
+ display: flex;
+ align-items: center;
+ height: 4em;
+}
+
+#header img {
+ height: 2em;
+ padding-left: 1em;
+}
+
+#kc-header {
+ margin-top: 4em;
+}
+
+.login-pf-page {
+ background-color: var(--body-bg-color);
+ height: 100%;
+ padding-top: 4em;
+ padding-bottom: 24px;
+ background-color: var(--body-bg-color);
+}
+@media (min-width: 768px) {
+ .login-pf-page {
+ padding-top: 3em;
+ }
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 600;
+ color: inherit;
+ /* letter-spacing: -0.0325em; */
+}
+
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+ul, p {
+ line-height: 1.4;
+}
+
+.alert {
+ padding-left: 16px;
+ padding-right: 16px;
+}
+.alert-error {
+ color: #9b0202;
+}
+input[type="text"],
+input[type="password"] {
+ display: block;
+ width: 100%;
+ height: 32px;
+ padding: 2px 6px;
+ font-size: var(--default-body-font-size);
+ line-height: 1.66666667;
+ color: #363636;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #bbb;
+ border-top-color: rgb(187, 187, 187);
+ border-right-color: rgb(187, 187, 187);
+ border-bottom-color: rgb(187, 187, 187);
+ border-left-color: rgb(187, 187, 187);
+ border-radius: 0;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+ margin-bottom: 24px;
+ box-sizing: border-box;
+}
+input[type="submit"] {
+ background-image: none;
+ background-color: var(--primary-color);
+ padding: 16px;
+ width: 100%;
+ font-size: var(--default-body-font-size);
+ color: #fff;
+ box-sizing: border-box;
+ box-shadow: none;
+ border: 0;
+ display: block;
+}
+input[type="submit"]:hover {
+ background-color: var(--primary-hover-color);
+}
+a {
+ color: var(--link-color);
+ text-decoration: none;
+}
+a:hover {
+ color: var(--link-hover-color);
+}
+[class*="pf-c-"],
+[class*="pf-c-"]::before,
+[class*="pf-c-"]::after {
+ padding: 4px 0;
+}
+label {
+ font-weight: 500;
+ display: inline-block;
+ font-size: 14px;
+ margin-bottom: 4px;
+ color: var(--label-color);
+}
+.btn {
+ border-radius: 8px;
+}
+.btn-primary,
+.pf-c-button.pf-m-primary {
+ background-image: none;
+ background-color: var(--button-primary-color);
+ border: 0;
+ border-radius: 8px;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.pf-c-button.pf-m-primary:hover,
+.pf-c-button.pf-m-primary:focus,
+.pf-c-button.pf-m-primary:active {
+ background-color: var(--button-primary-hover-color);
+}
+
+.login-pf body {
+ font-family: "Roboto", "Helvetica", "Arial", sans-serif;
+ background-color: var(--body-bg-color);
+ background-image: none;
+ font-size: var(--default-body-font-size);
+}
+.login-pf-page .card-pf {
+ margin-bottom: 32px;
+}
+@media (min-width: 768px) {
+ .login-pf-page .card-pf {
+ padding: 16px 32px 48px 32px;
+ }
+}
+.login-pf-page .card-pf p {
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .login-pf-page .login-pf-header {
+ margin-bottom: 10px;
+ }
+}
+@media (max-width: 767px) {
+ .login-pf-page .card-pf {
+ max-width: 100%;
+ margin-left: 16px;
+ margin-right: 16px;
+ padding: 4px 16px 24px;
+ }
+}
+.login-pf-page .login-pf-header h1 {
+ font-size: 1.75em;
+}
+#kc-info-wrapper {
+ background-color: transparent;
+ padding: 0;
+ text-align: left;
+ font-size: var(--default-body-font-size);
+ line-height: 1.4;
+}
+#kc-header-wrapper {
+ font-weight: 500;
+ text-transform: capitalize;
+ line-height: 1.5;
+ font-weight: 500;
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ align-items: center;
+ justify-content: center;
+}
+@media (max-width: 767px) {
+ #kc-header-wrapper {
+ color: #fff;
+ padding: 0;
+ }
+}
+#kc-site-name,
+#kc-system-type {
+ color: #fff;
+ text-align: center;
+ text-transform: capitalize;
+ font-size: 1.8rem;
+}
+#kc-login-info-message {
+ max-width: 100%;
+ margin: auto;
+ line-height: 1.55;
+ background: var(--highlight-bg-color);
+ color: var(--text-default-color);
+ padding: 16px;
+ font-size: 1rem;
+ font-weight: 500;
+}
+@media (min-width: 768px) {
+ #kc-login-info-message {
+ max-width: 60%;
+ margin: auto;
+ }
+}
+#kc-content-wrapper {
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+}
+#kc-header {
+ margin-top: 0;
+ margin-bottom: 24px;
+}
+#kc-page-title {
+ text-align: center;
+ font-weight: 600;
+ color: var(--title-color);
+ padding-bottom: 4px;
+ font-size: 1.75em;
+}
+h1#kc-page-title {
+ margin-top: 24px;
+}
+#kc-form {
+ width: 100%;
+}
+#kc-form-buttons {
+ margin-top: 24px;
+ text-align: center;
+}
+#kc-form-options .checkbox {
+ display: none;
+}
+#kc-info {
+ margin-top: 0;
+ margin-bottom: 8px;
+ margin-left: 0;
+ margin-right: 0;
+ color: #777;
+}
+.card-pf {
+ background: #fff;
+ margin: 0 auto;
+ margin-bottom: 0px;
+ padding: 0 20px;
+ max-width: 420px;
+ border-top: 0;
+ box-shadow: 0 0 0;
+ padding: 0 40px 40px;
+ margin-top: 28px;
+ margin-bottom: 32px;
+}
+.card-pf form.form-actions .btn {
+ margin-bottom: 16px;
+}
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico b/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..62de3a266ec8c9991463b5d4bf230679a4ee71c3
GIT binary patch
literal 4286
zcmeH~K~BOz6oy9^ZcL0yf(C(Nv=LbdmMG#vU3mhdCgN2*j^Yhmz`|3wGwwYBBz64%
z!fOXZfdZCIAs^FDJM+EwW(q;6CA;Re0Z`lVj-~;epb8foYfNr+DJ`Fz@_X4(n@8$u|fd#%m*xby!Gva#K
zIJ2KIyn=xka6XBjZq~(|Pp1woojKjpxpRB4|L=Xlxx}zdZ-o41O$I!h@Y7wnuSAWZ
z3BOkd#sMras{Y~rx~;1XM;}WJhzWCzL+T(g%EYb(;Cn89)**TfW<0}={rtJ-g^i-6v;F<&=igrko=Y9%
z{%P8NO+0_Pva7STeVskCd(>=gUzfafALjS=U^o`UUrI
BO-%p*
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f2d9d2aeb1c1461767988a042aae50492d454bc
GIT binary patch
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..0dd500445d7249ddd1b1dea7dc79d5e2f75cf223
GIT binary patch
literal 343
zcmV-d0jU0oP)Rb^f-HfiA|a#ZS&BN>m{U!Bf9XBlP=AUsPhep
z0;u>nQCxb~G6c;4tOM)aDVebC2LF?__!*$Y%|S5$e;ZcIdR+o#XrlC>L#@3RFZO+y
z4ac0_$8S?_3L#)o1cV>wsb|~_2qr}-{Xy0sk1ddFrS2NjYBy!#lv@hhf%T~P1a2ls
zg9cR!$Y8{U0euD81vt(&PyxuVl0?xy+oT=qfZ(
zU<;qzo;L~X{8Dl*OuQ;g6C?jcvTY4MH)UgY@3N+I%Y&B-aM#Gmz4*K9-@h9B>+j#Q
z@1I{-{^;BJ=zrF!cK!}Pr!g=bh|HcT>Z=m}wDHmbyC0nDaV#gVm&uycGotW
zpv;r|b9e9Fzj)!!_FHF``Wx|qb*+1{*5LE=)%xG0rlsBtdT?-dwR{mlor@ArQ!T)1>sQ|BRGRy6pUXk5Eq%Jj
zt#hDSUl#1`1Hp4rtdp{v4HrVu6{1-oD!M}vd
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..640bd71cab7bdfc7a8adcf28ffaf6db736a1c008
GIT binary patch
literal 410
zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2comSQK*5Dp-y;YjHK@;M7UB8!3Q
zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E9oo-U3d
z7QI&|@AYC16lmSQ(|nzi6W2vA0hQiX{shsj9%4*QVx6m7=T11}S0g4pTOrBJ(L2zj
zqqUbmAu&;Tnwis)`FE;yFXbH4TM_-V#F%}bS9C7N)nccy^_%s?ydQOE$UA=bQASGdP
zUS5*^?Y}eFBd=Y%8?p303zx;a-hVOO%tz8T)jmnDmV3_E#n4nO@i}MX#=5_=rbOm!
z*!s=OFZw-8%CQyiuZC^?Jc-4l;#4*gQu&X%Q~loCIB2_
BsrLW?
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f2d9d2aeb1c1461767988a042aae50492d454bc
GIT binary patch
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
literal 0
HcmV?d00001
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9392a356fd3b383997c1ef289b48d02be96c351
GIT binary patch
literal 646
zcmV;10(t$3P)5ebW)JIb`v2;&5sUEt7(pdR?_rqvF~(w
z&wHPH?%{G}o6t%tD3-YcoIt#ZimsMn=fj5~SV}0ANdw)$JIs+vm8VEr5vY*RCc!0O
zJeKiMnQmZjF~P}|ITC|_fPR3sChh|hh#}5v^?!j1No^OL5!{Yt{P|l#ojGW*>A`F%
zG;=oe?E0{aNj(7$L<2hJOpDEg;c-0Uu3}QpfZdv9Yul(xOFAm{YCmuc7-<=Hz6#rb
zwStWR%+Uk1dKH(KznaJbxtT_8h1rkY@F&AK;#}dXHiv>reL9ZVhZt;6c{&UPfawRU
z3PX!QX+>?W8zy57-1{e1nf<%`Ip2$C{RJ2WP8EB!V*#i*Ll@AAxI)U6d9kg;Tft2N
zvI|T#k_Ga${UDcC6K25hA)et;?S`pV)*0TbLbSFYPx%LC5OMf>LI(kYhG{MW?Gclt
z?kz+j>;xV-pszlvScx&iWL1nHDUdjgc-@-yi~8Zf?-uKCu&$j
zmGV@tHY^&3ufPQiVR|G&lMFKJqcV3b2BIPt0$RTQ1o3gEnU}InzE6h&(}7s>n+PkJ
gT)C0w?I}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl b/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
new file mode 100644
index 0000000..0225cf9
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
@@ -0,0 +1,42 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true; section>
+ <#if section = "header" || section = "show-username">
+
+ <#if section = "header">
+ ${msg("loginChooseAuthenticator")}
+ #if>
+ <#elseif section = "form">
+
+
+
+ #if>
+@layout.registrationLayout>
+
diff --git a/dev/config/keycloak/themes/ltt/login/template.ftl b/dev/config/keycloak/themes/ltt/login/template.ftl
new file mode 100644
index 0000000..042f887
--- /dev/null
+++ b/dev/config/keycloak/themes/ltt/login/template.ftl
@@ -0,0 +1,159 @@
+<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
+
+ lang="${locale.currentLanguageTag}"#if>>
+
+
+
+
+
+
+ <#if properties.meta?has_content>
+ <#list properties.meta?split(' ') as meta>
+
+ #list>
+ #if>
+ ${msg("loginTitle",(realm.displayName!''))}
+
+ <#if properties.stylesCommon?has_content>
+ <#list properties.stylesCommon?split(' ') as style>
+
+ #list>
+ #if>
+ <#if properties.styles?has_content>
+ <#list properties.styles?split(' ') as style>
+
+ #list>
+ #if>
+ <#if properties.scripts?has_content>
+ <#list properties.scripts?split(' ') as script>
+
+ #list>
+ #if>
+ <#if scripts??>
+ <#list scripts as script>
+
+ #list>
+ #if>
+
+
+
+
+ <#-- App-initiated actions should not see warning messages about the need to complete the action -->
+ <#-- during login. -->
+ <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
+
If you didn''t create this account, just ignore this message.
-emailUpdateConfirmationSubject=Verify new email
-emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
-emailUpdateConfirmationBodyHtml=
To update your {2} account with email address {1}, click the link below
If you don''t want to proceed with this modification, just ignore this message.
-emailTestSubject=[KEYCLOAK] - SMTP test message
-emailTestBody=This is a test message. Test Only.
-emailTestBodyHtml=
This is a test message
-identityProviderLinkSubject=Link {0}
-identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
-identityProviderLinkBodyHtml=
Someone wants to link your {1} account with {0} account of user {2}. If this was you, click the link below to link accounts
If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
-passwordResetSubject=Reset password
-passwordResetBody=Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your password, just ignore this message and nothing will be changed.
-passwordResetBodyHtml=
Someone just requested to change your {2} account''s password. If this was you, click on the link below to reset them.
If you don''t want to reset your password, just ignore this message and nothing will be changed.
-executeActionsSubject=Update Your Account
-executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
-executeActionsBodyHtml=
Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.
If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
-eventLoginErrorSubject=Login error
-eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
-eventLoginErrorBodyHtml=
A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
-eventRemoveTotpSubject=Remove OTP
-eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
-eventRemoveTotpBodyHtml=
OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
-eventUpdatePasswordSubject=Update password
-eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
-eventUpdatePasswordBodyHtml=
Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
-eventUpdateTotpSubject=Update OTP
-eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
-eventUpdateTotpBodyHtml=
OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
-
-requiredAction.CONFIGURE_TOTP=Configure OTP
-requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
-requiredAction.UPDATE_PASSWORD=Update Password
-requiredAction.UPDATE_PROFILE=Update Profile
-requiredAction.VERIFY_EMAIL=Verify Email
-requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
-
-# units for link expiration timeout formatting
-# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2Please verify your email address by entering in the following code.
- #if>
- #if>
-
-@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties b/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
deleted file mode 100644
index 60405bb..0000000
--- a/dev/config/keycloak/themes/ltt/login/messages/messages_en.properties
+++ /dev/null
@@ -1,442 +0,0 @@
-doLogIn=Sign In
-doRegister=Register
-doCancel=Cancel
-doSubmit=Submit
-doBack=Back
-doYes=Yes
-doNo=No
-doContinue=Continue
-doIgnore=Ignore
-doAccept=Accept
-doDecline=Decline
-doForgotPassword=First time using, or forgot password?
-doClickHere=Click here
-doImpersonate=Impersonate
-doTryAgain=Try again
-doTryAnotherWay=Try Another Way
-doConfirmDelete=Confirm deletion
-errorDeletingAccount=Error happened while deleting account
-deletingAccountForbidden=You do not have enough permissions to delete your own account, contact admin.
-kerberosNotConfigured=Kerberos Not Configured
-kerberosNotConfiguredTitle=Kerberos Not Configured
-bypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login. Please click continue to login in through other means
-kerberosNotSetUp=Kerberos is not set up. You cannot login.
-registerTitle=Register
-loginAccountTitle=Sign in to your account
-loginTitle=Sign in to {0}
-loginTitleHtml={0}
-impersonateTitle={0} Impersonate User
-impersonateTitleHtml={0} Impersonate User
-realmChoice=Realm
-unknownUser=Unknown user
-loginTotpTitle=Mobile Authenticator Setup
-loginProfileTitle=Update Account Information
-loginIdpReviewProfileTitle=Update Account Information
-loginTimeout=Your login attempt timed out. Login will start from the beginning.
-oauthGrantTitle=Grant Access to {0}
-oauthGrantTitleHtml={0}
-errorTitle=We are sorry...
-errorTitleHtml=We are sorry ...
-emailVerifyTitle=Email verification
-emailForgotTitle=First time using, or forgot password?
-updatePasswordTitle=Update password
-codeSuccessTitle=Success code
-codeErrorTitle=Error code\: {0}
-displayUnsupported=Requested display type unsupported
-browserRequired=Browser required to login
-browserContinue=Browser required to complete login
-browserContinuePrompt=Open browser and continue login? [y/n]:
-browserContinueAnswer=y
-
-
-termsTitle=Terms and Conditions
-termsText=
Terms and conditions to be defined
-termsPlainText=Terms and conditions to be defined.
-
-recaptchaFailed=Invalid Recaptcha
-recaptchaNotConfigured=Recaptcha is required, but not configured
-consentDenied=Consent denied.
-
-noAccount=New user?
-username=Username
-usernameOrEmail=Username or email
-firstName=First name
-givenName=Given name
-fullName=Full name
-lastName=Last name
-familyName=Family name
-email=Email
-password=Password
-passwordConfirm=Confirm password
-passwordNew=New Password
-passwordNewConfirm=New Password confirmation
-passwordPolicy=
Password must:
Include at least one upper case letter, one lower case letter, and one number
Be at least 8 characters long
Have not been used recently
-rememberMe=Remember me
-authenticatorCode=One-time code
-address=Address
-street=Street
-locality=City or Locality
-region=State, Province, or Region
-postal_code=Zip or Postal code
-country=Country
-emailVerified=Email verified
-website=Web page
-phoneNumber=Phone number
-phoneNumberVerified=Phone number verified
-gender=Gender
-birthday=Birthdate
-zoneinfo=Time zone
-gssDelegationCredential=GSS Delegation Credential
-logoutOtherSessions=Sign out from other devices
-
-profileScopeConsentText=User profile
-emailScopeConsentText=Email address
-addressScopeConsentText=Address
-phoneScopeConsentText=Phone number
-offlineAccessScopeConsentText=Offline Access
-samlRoleListScopeConsentText=My Roles
-rolesScopeConsentText=User roles
-
-restartLoginTooltip=Restart login
-
-loginTotpIntro=You need to set up a One Time Password generator to access this account
-loginTotpStep1=Install one of the following applications on your mobile:
-loginTotpStep2=Open the application and scan the barcode:
-loginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.
-loginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
-loginTotpManualStep2=Open the application and enter the key:
-loginTotpManualStep3=Use the following configuration values if the application allows setting them:
-loginTotpUnableToScan=Unable to scan?
-loginTotpScanBarcode=Scan barcode?
-loginCredential=Credential
-loginOtpOneTime=One-time code
-loginTotpType=Type
-loginTotpAlgorithm=Algorithm
-loginTotpDigits=Digits
-loginTotpInterval=Interval
-loginTotpCounter=Counter
-loginTotpDeviceName=Device Name
-
-loginTotp.totp=Time-based
-loginTotp.hotp=Counter-based
-
-loginChooseAuthenticator=Select login method
-
-oauthGrantRequest=Do you grant these access privileges?
-inResource=in
-
-oauth2DeviceVerificationTitle=Device Login
-verifyOAuth2DeviceUserCode=Enter the code provided by your device and click Submit
-oauth2DeviceInvalidUserCodeMessage=Invalid code, please try again.
-oauth2DeviceExpiredUserCodeMessage=The code has expired. Please go back to your device and try connecting again.
-oauth2DeviceVerificationCompleteHeader=Device Login Successful
-oauth2DeviceVerificationCompleteMessage=You may close this browser window and go back to your device.
-oauth2DeviceVerificationFailedHeader=Device Login Failed
-oauth2DeviceVerificationFailedMessage=You may close this browser window and go back to your device and try connecting again.
-oauth2DeviceConsentDeniedMessage=Consent denied for connecting the device.
-oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
-
-emailVerifyInstruction1=An email with instructions to verify your email address has been sent to you.
-emailVerifyInstruction2=Haven''t received a verification code in your email?
-emailVerifyInstruction3=to re-send the email.
-
-emailLinkIdpTitle=Link {0}
-emailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.
-emailLinkIdp2=Haven''t received a verification code in your email?
-emailLinkIdp3=to re-send the email.
-emailLinkIdp4=If you already verified the email in different browser
-emailLinkIdp5=to continue.
-
-backToLogin=« Back to Login
-
-emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
-
-copyCodeInstruction=Please copy this code and paste it into your application:
-
-pageExpiredTitle=Page has expired
-pageExpiredMsg1=To restart the login process
-pageExpiredMsg2=To continue the login process
-
-personalInfo=Personal Info:
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Create realm
-role_create-client=Create client
-role_view-realm=View realm
-role_view-users=View users
-role_view-applications=View applications
-role_view-clients=View clients
-role_view-events=View events
-role_view-identity-providers=View identity providers
-role_manage-realm=Manage realm
-role_manage-users=Manage users
-role_manage-applications=Manage applications
-role_manage-identity-providers=Manage identity providers
-role_manage-clients=Manage clients
-role_manage-events=Manage events
-role_view-profile=View profile
-role_manage-account=Manage account
-role_manage-account-links=Manage account links
-role_read-token=Read token
-role_offline-access=Offline access
-client_account=Account
-client_account-console=Account Console
-client_security-admin-console=Security Admin Console
-client_admin-cli=Admin CLI
-client_realm-management=Realm Management
-client_broker=Broker
-
-requiredFields=Required fields
-
-invalidUserMessage=Invalid username or password.
-invalidUsernameMessage=Invalid username.
-invalidUsernameOrEmailMessage=Invalid username or email.
-invalidPasswordMessage=Invalid password.
-invalidEmailMessage=Invalid email address.
-accountDisabledMessage=Account is disabled, contact your administrator.
-accountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.
-expiredCodeMessage=Login timeout. Please sign in again.
-expiredActionMessage=Action expired. Please continue with login now.
-expiredActionTokenNoSessionMessage=Action expired.
-expiredActionTokenSessionExistsMessage=Action expired. Please start again.
-
-missingFirstNameMessage=Please specify first name.
-missingLastNameMessage=Please specify last name.
-missingEmailMessage=Please specify email.
-missingUsernameMessage=Please specify username.
-missingPasswordMessage=Please specify password.
-missingTotpMessage=Please specify authenticator code.
-missingTotpDeviceNameMessage=Please specify device name.
-notMatchPasswordMessage=Passwords don''t match.
-
-error-invalid-value=Invalid value.
-error-invalid-blank=Please specify value.
-error-empty=Please specify value.
-error-invalid-length=Length must be between {1} and {2}.
-error-invalid-length-too-short=Minimal length is {1}.
-error-invalid-length-too-long=Maximal length is {2}.
-error-invalid-email=Invalid email address.
-error-invalid-number=Invalid number.
-error-number-out-of-range=Number must be between {1} and {2}.
-error-number-out-of-range-too-small=Number must have minimal value of {1}.
-error-number-out-of-range-too-big=Number must have maximal value of {2}.
-error-pattern-no-match=Invalid value.
-error-invalid-uri=Invalid URL.
-error-invalid-uri-scheme=Invalid URL scheme.
-error-invalid-uri-fragment=Invalid URL fragment.
-error-user-attribute-required=Please specify this field.
-error-invalid-date=Invalid date.
-error-user-attribute-read-only=This field is read only.
-error-username-invalid-character=Value contains invalid character.
-error-person-name-invalid-character=Value contains invalid character.
-
-invalidPasswordExistingMessage=Invalid existing password.
-invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
-invalidPasswordConfirmMessage=Password confirmation doesn''t match.
-invalidTotpMessage=Invalid authenticator code.
-
-usernameExistsMessage=Username already exists.
-emailExistsMessage=Email already exists.
-
-federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.
-federatedIdentityUnavailableMessage=User {0} authenticated with identity provider {1} does not exists. Please contact your administrator.
-
-confirmLinkIdpTitle=Account already exists
-federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
-federatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}
-nestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.
-confirmLinkIdpReviewProfile=Review profile
-confirmLinkIdpContinue=Add to existing account
-
-configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
-updateProfileMessage=You need to update your user profile to activate your account.
-updatePasswordMessage=You need to change your password to activate your account.
-resetPasswordMessage=You need to change your password.
-verifyEmailMessage=You need to verify your email address to activate your account.
-linkIdpMessage=You need to verify your email address to link your account with {0}.
-
-emailSentMessage=You should receive an email shortly with further instructions.
-emailSendErrorMessage=Failed to send email, please try again later.
-
-accountUpdatedMessage=Your account has been updated.
-accountPasswordUpdatedMessage=Your password has been updated.
-
-delegationCompleteHeader=Login Successful
-delegationCompleteMessage=You may close this browser window and go back to your console application.
-delegationFailedHeader=Login Failed
-delegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.
-
-noAccessMessage=No access
-
-invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
-invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
-invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
-invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
-invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
-invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
-invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
-invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
-invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
-invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
-invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
-
-failedToProcessResponseMessage=Failed to process response
-httpsRequiredMessage=HTTPS required
-realmNotEnabledMessage=Realm not enabled
-invalidRequestMessage=Invalid Request
-failedLogout=Logout failed
-unknownLoginRequesterMessage=Unknown login requester
-loginRequesterNotEnabledMessage=Login requester not enabled
-bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login
-standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
-implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
-invalidRedirectUriMessage=Invalid redirect uri
-unsupportedNameIdFormatMessage=Unsupported NameIDFormat
-invalidRequesterMessage=Invalid requester
-registrationNotAllowedMessage=Registration not allowed
-resetCredentialNotAllowedMessage=Reset Credential not allowed
-
-permissionNotApprovedMessage=Permission not approved.
-noRelayStateInResponseMessage=No relay state in response from identity provider.
-insufficientPermissionMessage=Insufficient permissions to link identities.
-couldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.
-couldNotObtainTokenMessage=Could not obtain token from identity provider.
-unexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.
-unexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.
-identityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.
-couldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.
-unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.
-invalidAccessCodeMessage=Invalid access code.
-sessionNotActiveMessage=Session not active.
-invalidCodeMessage=An error occurred, please login again through your application.
-identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider
-identityProviderMissingStateMessage=Missing state parameter in response from identity provider.
-identityProviderNotFoundMessage=Could not find an identity provider with the identifier.
-identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.
-staleCodeMessage=This page is no longer valid, please go back to your application and sign in again
-realmSupportsNoCredentialsMessage=Realm does not support any credential type.
-credentialSetupRequired=Cannot login, credential setup required.
-identityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.
-emailVerifiedMessage=Your email address has been verified.
-staleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid. Maybe you have already verified your email.
-identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
-confirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.
-confirmEmailAddressVerification=Confirm validity of e-mail address {0}.
-confirmExecutionOfActions=Perform the following action(s)
-
-locale_ca=Catal\u00E0
-locale_cs=\u010Ce\u0161tina
-locale_da=Dansk
-locale_de=Deutsch
-locale_en=English
-locale_es=Espa\u00F1ol
-locale_fr=Fran\u00E7ais
-locale_hu=Magyar
-locale_it=Italiano
-locale_ja=\u65E5\u672C\u8A9E
-locale_lt=Lietuvi\u0173
-locale_nl=Nederlands
-locale_no=Norsk
-locale_pl=Polski
-locale_pt_BR=Portugu\u00EAs (Brasil)
-locale_pt-BR=Portugu\u00EAs (Brasil)
-locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
-locale_sk=Sloven\u010Dina
-locale_sv=Svenska
-locale_tr=T\u00FCrk\u00E7e
-locale_zh-CN=\u4E2D\u6587\u7B80\u4F53
-
-backToApplication=« Back to Application
-missingParameterMessage=Missing parameters\: {0}
-clientNotFoundMessage=Client not found.
-clientDisabledMessage=Client disabled.
-invalidParameterMessage=Invalid parameter\: {0}
-alreadyLoggedIn=You are already logged in.
-differentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please sign out first.
-brokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.
-proceedWithAction=» Click here to proceed
-
-requiredAction.CONFIGURE_TOTP=Configure OTP
-requiredAction.terms_and_conditions=Terms and Conditions
-requiredAction.UPDATE_PASSWORD=Update Password
-requiredAction.UPDATE_PROFILE=Update Profile
-requiredAction.VERIFY_EMAIL=Verify Email
-
-doX509Login=You will be logged in as\:
-clientCertificate=X509 client certificate\:
-noCertificate=[No Certificate]
-
-
-pageNotFound=Page not found
-internalServerError=An internal server error has occurred
-
-console-username=Username:
-console-password=Password:
-console-otp=One Time Password:
-console-new-password=New Password:
-console-confirm-password=Confirm Password:
-console-update-password=Update of your password is required.
-console-verify-email=You need to verify your email address. We sent an email to {0} that contains a verification code. Please enter this code into the input below.
-console-email-code=Email Code:
-console-accept-terms=Accept Terms? [y/n]:
-console-accept=y
-
-# Openshift messages
-openshift.scope.user_info=User information
-openshift.scope.user_check-access=User access information
-openshift.scope.user_full=Full Access
-openshift.scope.list-projects=List projects
-
-# SAML authentication
-saml.post-form.title=Authentication Redirect
-saml.post-form.message=Redirecting, please wait.
-saml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue.
-saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
-
-#authenticators
-otp-display-name=Authenticator Application
-otp-help-text=Enter a verification code from authenticator application.
-password-display-name=Password
-password-help-text=Sign in by entering your password.
-auth-username-form-display-name=Username
-auth-username-form-help-text=Start sign in by entering your username
-auth-username-password-form-display-name=Username and password
-auth-username-password-form-help-text=Sign in by entering your username and password.
-
-# WebAuthn
-webauthn-display-name=Security Key
-webauthn-help-text=Use your security key to sign in.
-webauthn-passwordless-display-name=Security Key
-webauthn-passwordless-help-text=Use your security key for passwordless sign in.
-webauthn-login-title=Security Key login
-webauthn-registration-title=Security Key Registration
-webauthn-available-authenticators=Available authenticators
-webauthn-unsupported-browser-text=WebAuthn is not supported by this browser. Try another one or contact your administrator.
-webauthn-doAuthenticate=Sign in with Security Key
-
-# WebAuthn Error
-webauthn-error-title=Security Key Error
-webauthn-error-registration=Failed to register your Security key. {0}
-webauthn-error-api-get=Failed to authenticate by the Security key. {0}
-webauthn-error-different-user=First authenticated user is not the one authenticated by the Security key.
-webauthn-error-auth-verification=Security key authentication result is invalid. {0}
-webauthn-error-register-verification=Security key registration result is invalid. {0}
-webauthn-error-user-not-found=Unknown user authenticated by the Security key.
-
-# Identity provider
-identity-provider-redirector=Connect with another Identity Provider
-identity-provider-login-label=Or sign in with
-
-finalDeletionConfirmation=If you delete your account, it cannot be restored. To keep your account, click Cancel.
-irreversibleAction=This action is irreversible
-deleteAccountConfirm=Delete account confirmation
-
-deletingImplies=Deleting your account implies:
-errasingData=Erasing all your data
-loggingOutImmediately=Logging you out immediately
-accountUnusable=Any subsequent use of the application will not be possible with this account
-userDeletedSuccessfully=User deleted successfully
-
-access-denied=Access denied
-
-systemType={0} System
diff --git a/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl b/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
deleted file mode 100644
index e0d533b..0000000
--- a/dev/config/keycloak/themes/ltt/login/register-user-profile.ftl
+++ /dev/null
@@ -1,74 +0,0 @@
-<#import "template.ftl" as layout>
-<#import "user-profile-commons.ftl" as userProfileCommons>
-<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
- <#if section = "header">
- ${msg("registerTitle")}
- <#elseif section = "form">
-
- #if>
-@layout.registrationLayout>
\ No newline at end of file
diff --git a/dev/config/keycloak/themes/ltt/login/register.ftl b/dev/config/keycloak/themes/ltt/login/register.ftl
deleted file mode 100644
index 07829a0..0000000
--- a/dev/config/keycloak/themes/ltt/login/register.ftl
+++ /dev/null
@@ -1,88 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.registrationLayout; section>
- <#if section = "header">
- ${msg("registerTitle")}
- <#elseif section = "form">
-
- #if>
-@layout.registrationLayout>
diff --git a/dev/config/keycloak/themes/ltt/login/resources/css/styles.css b/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
deleted file mode 100644
index 7b94eb2..0000000
--- a/dev/config/keycloak/themes/ltt/login/resources/css/styles.css
+++ /dev/null
@@ -1,384 +0,0 @@
-:root {
- --body-bg-color: #325c33;
- --primary-color: #325c33;
- --primary-hover-color: #254325;
- --section-border-color: #dcdfdc;
- --button-primary-color: #af4507;
- --button-primary-hover-color: #883505;
- --title-color: #325c33;
- --label-color: #71757b;
- --link-color: #1994d0;
- --link-hover-color: #126994;
- --highlight-bg-color: #f9e4d3;
- --text-default-color: #444;
- --default-body-font-size: 16px;
-}
-body {
- font-family: "Roboto", "Helvetica", "Arial", sans-serif;
- font-size: var(--default-body-font-size);
-}
-.pf-c-alert__title {
- font-size: var(--default-body-font-size);
- line-height: 1.4;
-}
-
-html.login-pf {
- background: var(--body-bg-color);
-}
-
-#header {
- position: fixed;
- z-index: 10000;
- left: 0;
- top: 0;
- width: 100%;
- background-color: var(--body-bg-color);
- color: #fff;
- line-height: 3em;
- box-shadow: 0 0 0.15em 0 rgba(0, 0, 0, 0.1);
- margin-bottom: 1em;
- display: flex;
- align-items: center;
- height: 4em;
-}
-
-#header img {
- height: 2em;
- padding-left: 1em;
-}
-
-#kc-header {
- margin-top: 4em;
-}
-
-.login-pf-page {
- background-color: var(--body-bg-color);
- height: 100%;
- padding-top: 4em;
- padding-bottom: 24px;
- background-color: var(--body-bg-color);
-}
-@media (min-width: 768px) {
- .login-pf-page {
- padding-top: 3em;
- }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-weight: 600;
- color: inherit;
- /* letter-spacing: -0.0325em; */
-}
-
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
-}
-
-ul, p {
- line-height: 1.4;
-}
-
-.alert {
- padding-left: 16px;
- padding-right: 16px;
-}
-.alert-error {
- color: #9b0202;
-}
-input[type="text"],
-input[type="password"] {
- display: block;
- width: 100%;
- height: 32px;
- padding: 2px 6px;
- font-size: var(--default-body-font-size);
- line-height: 1.66666667;
- color: #363636;
- background-color: #fff;
- background-image: none;
- border: 1px solid #bbb;
- border-top-color: rgb(187, 187, 187);
- border-right-color: rgb(187, 187, 187);
- border-bottom-color: rgb(187, 187, 187);
- border-left-color: rgb(187, 187, 187);
- border-radius: 0;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
- margin-bottom: 24px;
- box-sizing: border-box;
-}
-input[type="submit"] {
- background-image: none;
- background-color: var(--primary-color);
- padding: 16px;
- width: 100%;
- font-size: var(--default-body-font-size);
- color: #fff;
- box-sizing: border-box;
- box-shadow: none;
- border: 0;
- display: block;
-}
-input[type="submit"]:hover {
- background-color: var(--primary-hover-color);
-}
-a {
- color: var(--link-color);
- text-decoration: none;
-}
-a:hover {
- color: var(--link-hover-color);
-}
-[class*="pf-c-"],
-[class*="pf-c-"]::before,
-[class*="pf-c-"]::after {
- padding: 4px 0;
-}
-label {
- font-weight: 500;
- display: inline-block;
- font-size: 14px;
- margin-bottom: 4px;
- color: var(--label-color);
-}
-.btn {
- border-radius: 8px;
-}
-.btn-primary,
-.pf-c-button.pf-m-primary {
- background-image: none;
- background-color: var(--button-primary-color);
- border: 0;
- border-radius: 8px;
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.pf-c-button.pf-m-primary:hover,
-.pf-c-button.pf-m-primary:focus,
-.pf-c-button.pf-m-primary:active {
- background-color: var(--button-primary-hover-color);
-}
-
-.login-pf body {
- font-family: "Roboto", "Helvetica", "Arial", sans-serif;
- background-color: var(--body-bg-color);
- background-image: none;
- font-size: var(--default-body-font-size);
-}
-.login-pf-page .card-pf {
- margin-bottom: 32px;
-}
-@media (min-width: 768px) {
- .login-pf-page .card-pf {
- padding: 16px 32px 48px 32px;
- }
-}
-.login-pf-page .card-pf p {
- font-size: var(--default-body-font-size);
- line-height: 1.4;
-}
-@media (min-width: 768px) {
- .login-pf-page .login-pf-header {
- margin-bottom: 10px;
- }
-}
-@media (max-width: 767px) {
- .login-pf-page .card-pf {
- max-width: 100%;
- margin-left: 16px;
- margin-right: 16px;
- padding: 4px 16px 24px;
- }
-}
-.login-pf-page .login-pf-header h1 {
- font-size: 1.75em;
-}
-#kc-info-wrapper {
- background-color: transparent;
- padding: 0;
- text-align: left;
- font-size: var(--default-body-font-size);
- line-height: 1.4;
-}
-#kc-header-wrapper {
- font-weight: 500;
- text-transform: capitalize;
- line-height: 1.5;
- font-weight: 500;
- display: flex;
- flex-direction: column;
- gap: 16px;
- align-items: center;
- justify-content: center;
-}
-@media (max-width: 767px) {
- #kc-header-wrapper {
- color: #fff;
- padding: 0;
- }
-}
-#kc-site-name,
-#kc-system-type {
- color: #fff;
- text-align: center;
- text-transform: capitalize;
- font-size: 1.8rem;
-}
-#kc-login-info-message {
- max-width: 100%;
- margin: auto;
- line-height: 1.55;
- background: var(--highlight-bg-color);
- color: var(--text-default-color);
- padding: 16px;
- font-size: 1rem;
- font-weight: 500;
-}
-@media (min-width: 768px) {
- #kc-login-info-message {
- max-width: 60%;
- margin: auto;
- }
-}
-#kc-content-wrapper {
- display: flex;
- justify-content: center;
- flex-direction: column;
-}
-#kc-header {
- margin-top: 0;
- margin-bottom: 24px;
-}
-#kc-page-title {
- text-align: center;
- font-weight: 600;
- color: var(--title-color);
- padding-bottom: 4px;
- font-size: 1.75em;
-}
-h1#kc-page-title {
- margin-top: 24px;
-}
-#kc-form {
- width: 100%;
-}
-#kc-form-buttons {
- margin-top: 24px;
- text-align: center;
-}
-#kc-form-options .checkbox {
- display: none;
-}
-#kc-info {
- margin-top: 0;
- margin-bottom: 8px;
- margin-left: 0;
- margin-right: 0;
- color: #777;
-}
-.card-pf {
- background: #fff;
- margin: 0 auto;
- margin-bottom: 0px;
- padding: 0 20px;
- max-width: 420px;
- border-top: 0;
- box-shadow: 0 0 0;
- padding: 0 40px 40px;
- margin-top: 28px;
- margin-bottom: 32px;
-}
-.card-pf form.form-actions .btn {
- margin-bottom: 16px;
-}
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico b/dev/config/keycloak/themes/ltt/login/resources/img/favicon.ico
deleted file mode 100644
index 62de3a266ec8c9991463b5d4bf230679a4ee71c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4286
zcmeH~K~BOz6oy9^ZcL0yf(C(Nv=LbdmMG#vU3mhdCgN2*j^Yhmz`|3wGwwYBBz64%
z!fOXZfdZCIAs^FDJM+EwW(q;6CA;Re0Z`lVj-~;epb8foYfNr+DJ`Fz@_X4(n@8$u|fd#%m*xby!Gva#K
zIJ2KIyn=xka6XBjZq~(|Pp1woojKjpxpRB4|L=Xlxx}zdZ-o41O$I!h@Y7wnuSAWZ
z3BOkd#sMras{Y~rx~;1XM;}WJhzWCzL+T(g%EYb(;Cn89)**TfW<0}={rtJ-g^i-6v;F<&=igrko=Y9%
z{%P8NO+0_Pva7STeVskCd(>=gUzfafALjS=U^o`UUrI
BO-%p*
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-arrow-down.png
deleted file mode 100644
index 6f2d9d2aeb1c1461767988a042aae50492d454bc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-error-sign.png
deleted file mode 100644
index 0dd500445d7249ddd1b1dea7dc79d5e2f75cf223..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 343
zcmV-d0jU0oP)Rb^f-HfiA|a#ZS&BN>m{U!Bf9XBlP=AUsPhep
z0;u>nQCxb~G6c;4tOM)aDVebC2LF?__!*$Y%|S5$e;ZcIdR+o#XrlC>L#@3RFZO+y
z4ac0_$8S?_3L#)o1cV>wsb|~_2qr}-{Xy0sk1ddFrS2NjYBy!#lv@hhf%T~P1a2ls
zg9cR!$Y8{U0euD81vt(&PyxuVl0?xy+oT=qfZ(
zU<;qzo;L~X{8Dl*OuQ;g6C?jcvTY4MH)UgY@3N+I%Y&B-aM#Gmz4*K9-@h9B>+j#Q
z@1I{-{^;BJ=zrF!cK!}Pr!g=bh|HcT>Z=m}wDHmbyC0nDaV#gVm&uycGotW
zpv;r|b9e9Fzj)!!_FHF``Wx|qb*+1{*5LE=)%xG0rlsBtdT?-dwR{mlor@ArQ!T)1>sQ|BRGRy6pUXk5Eq%Jj
zt#hDSUl#1`1Hp4rtdp{v4HrVu6{1-oD!M}vd
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-success-sign.png
deleted file mode 100644
index 640bd71cab7bdfc7a8adcf28ffaf6db736a1c008..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 410
zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2comSQK*5Dp-y;YjHK@;M7UB8!3Q
zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E9oo-U3d
z7QI&|@AYC16lmSQ(|nzi6W2vA0hQiX{shsj9%4*QVx6m7=T11}S0g4pTOrBJ(L2zj
zqqUbmAu&;Tnwis)`FE;yFXbH4TM_-V#F%}bS9C7N)nccy^_%s?ydQOE$UA=bQASGdP
zUS5*^?Y}eFBd=Y%8?p303zx;a-hVOO%tz8T)jmnDmV3_E#n4nO@i}MX#=5_=rbOm!
z*!s=OFZw-8%CQyiuZC^?Jc-4l;#4*gQu&X%Q~loCIB2_
BsrLW?
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-arrow-down.png
deleted file mode 100644
index 6f2d9d2aeb1c1461767988a042aae50492d454bc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 513
zcmV+c0{;DpP)pbFH`>7=NJimT8HPR1b>!7GRq%%D)H?|Wo%
zC@Pq9$n!u*^5*>k`A#3+kZfF(`zJ152&b=J2><{9!0hZbO_;oR8NR%F9kLkE@5Z(}
z|9X+Rqj^|(^f2UQ`B&qbstQ}zSHs@7Mx_7%0O*T*Sywa1;J+C|`oj73Q8;qyTvEs3fk{(-JWjQ|4!;N?Hk9Wu}T8~06?E)T~0nO
z$|9aN^E2gq`rLgk&kqde>9h9ceYG2J7l(CKD-8eu0DaQs4ti*V_8>1|L40001@p8^a34>6V-IeVqb00000NkvXXu0mjf
D@HyfE
diff --git a/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png b/dev/config/keycloak/themes/ltt/login/resources/img/feedback-warning-sign.png
deleted file mode 100644
index f9392a356fd3b383997c1ef289b48d02be96c351..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 646
zcmV;10(t$3P)5ebW)JIb`v2;&5sUEt7(pdR?_rqvF~(w
z&wHPH?%{G}o6t%tD3-YcoIt#ZimsMn=fj5~SV}0ANdw)$JIs+vm8VEr5vY*RCc!0O
zJeKiMnQmZjF~P}|ITC|_fPR3sChh|hh#}5v^?!j1No^OL5!{Yt{P|l#ojGW*>A`F%
zG;=oe?E0{aNj(7$L<2hJOpDEg;c-0Uu3}QpfZdv9Yul(xOFAm{YCmuc7-<=Hz6#rb
zwStWR%+Uk1dKH(KznaJbxtT_8h1rkY@F&AK;#}dXHiv>reL9ZVhZt;6c{&UPfawRU
z3PX!QX+>?W8zy57-1{e1nf<%`Ip2$C{RJ2WP8EB!V*#i*Ll@AAxI)U6d9kg;Tft2N
zvI|T#k_Ga${UDcC6K25hA)et;?S`pV)*0TbLbSFYPx%LC5OMf>LI(kYhG{MW?Gclt
z?kz+j>;xV-pszlvScx&iWL1nHDUdjgc-@-yi~8Zf?-uKCu&$j
zmGV@tHY^&3ufPQiVR|G&lMFKJqcV3b2BIPt0$RTQ1o3gEnU}InzE6h&(}7s>n+PkJ
gT)C0w?I}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl b/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
deleted file mode 100644
index 0225cf9..0000000
--- a/dev/config/keycloak/themes/ltt/login/select-authenticator.ftl
+++ /dev/null
@@ -1,42 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.registrationLayout displayInfo=true; section>
- <#if section = "header" || section = "show-username">
-
- <#if section = "header">
- ${msg("loginChooseAuthenticator")}
- #if>
- <#elseif section = "form">
-
-
-
- #if>
-@layout.registrationLayout>
-
diff --git a/dev/config/keycloak/themes/ltt/login/template.ftl b/dev/config/keycloak/themes/ltt/login/template.ftl
deleted file mode 100644
index 042f887..0000000
--- a/dev/config/keycloak/themes/ltt/login/template.ftl
+++ /dev/null
@@ -1,159 +0,0 @@
-<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
-
- lang="${locale.currentLanguageTag}"#if>>
-
-
-
-
-
-
- <#if properties.meta?has_content>
- <#list properties.meta?split(' ') as meta>
-
- #list>
- #if>
- ${msg("loginTitle",(realm.displayName!''))}
-
- <#if properties.stylesCommon?has_content>
- <#list properties.stylesCommon?split(' ') as style>
-
- #list>
- #if>
- <#if properties.styles?has_content>
- <#list properties.styles?split(' ') as style>
-
- #list>
- #if>
- <#if properties.scripts?has_content>
- <#list properties.scripts?split(' ') as script>
-
- #list>
- #if>
- <#if scripts??>
- <#list scripts as script>
-
- #list>
- #if>
-
-
-
-
- <#-- App-initiated actions should not see warning messages about the need to complete the action -->
- <#-- during login. -->
- <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
-