i18n for code.ftl
i18n for login-oauth-grant.ftl i18n for account.ftl i18n for account.ftl i18n for federatedIdentity.ftl i18n for log.ftl i18n for password.ftl i18n for sessions.ftl i18n for template.ftl i18n for totp.ftl i18nfix i18n messages cleanup advanced message formater for claim and role
This commit is contained in:
parent
abb22296b7
commit
06e02e8026
24 changed files with 264 additions and 131 deletions
|
@ -0,0 +1,36 @@
|
||||||
|
package org.keycloak.freemarker.beans;
|
||||||
|
|
||||||
|
import freemarker.template.TemplateMethodModelEx;
|
||||||
|
import freemarker.template.TemplateModelException;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
|
||||||
|
*/
|
||||||
|
public class AdvancedMessageFormatterMethod implements TemplateMethodModelEx {
|
||||||
|
private final Properties messages;
|
||||||
|
private final Locale locale;
|
||||||
|
|
||||||
|
public AdvancedMessageFormatterMethod(Locale locale, Properties messages) {
|
||||||
|
this.locale = locale;
|
||||||
|
this.messages = messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object exec(List list) throws TemplateModelException {
|
||||||
|
if (list.size() >= 1) {
|
||||||
|
String key = list.get(0).toString();
|
||||||
|
if (key.startsWith("${") && key.endsWith("}")) {
|
||||||
|
key = key.substring(2, key.length() - 1);
|
||||||
|
return new MessageFormat(messages.getProperty(key, key), locale).format(list.subList(1, list.size()).toArray());
|
||||||
|
} else {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,8 +22,8 @@ public class MessageFormatterMethod implements TemplateMethodModelEx {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object exec(List list) throws TemplateModelException {
|
public Object exec(List list) throws TemplateModelException {
|
||||||
String key = list.get(0).toString();
|
|
||||||
if (list.size() >= 1) {
|
if (list.size() >= 1) {
|
||||||
|
String key = list.get(0).toString();
|
||||||
return new MessageFormat(messages.getProperty(key,key),locale).format(list.subList(1, list.size()).toArray());
|
return new MessageFormat(messages.getProperty(key,key),locale).format(list.subList(1, list.size()).toArray());
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h2>Edit Account</h2>
|
<h2>${msg("editAccountHtmlTtile")}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2 subtitle">
|
<div class="col-md-2 subtitle">
|
||||||
<span class="subtitle"><span class="required">*</span> Required fields</span>
|
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -104,9 +104,9 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
||||||
<div class="">
|
<div class="">
|
||||||
<#if url.referrerURI??><a href="${url.referrerURI}">Back to application</a></#if>
|
<#if url.referrerURI??><a href="${url.referrerURI}">${msg("backToApplication")}/a></#if>
|
||||||
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">Save</button>
|
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">${msg("doSave")}</button>
|
||||||
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">Cancel</button>
|
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">${msg("doCancel")}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h2>Federated Identities</h2>
|
<h2>${msg("federatedIdentitiesHtmlTitle")}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -19,10 +19,10 @@
|
||||||
<div class="col-sm-5 col-md-5">
|
<div class="col-sm-5 col-md-5">
|
||||||
<#if identity.connected>
|
<#if identity.connected>
|
||||||
<#if federatedIdentity.removeLinkPossible>
|
<#if federatedIdentity.removeLinkPossible>
|
||||||
<a href="${identity.actionUrl}" type="submit" id="remove-${identity.providerId!}" class="btn btn-primary btn-lg">Remove ${identity.providerName!}</a>
|
<a href="${identity.actionUrl}" type="submit" id="remove-${identity.providerId!}" class="btn btn-primary btn-lg">${msg("doRemove")}</a>
|
||||||
</#if>
|
</#if>
|
||||||
<#else>
|
<#else>
|
||||||
<a href="${identity.actionUrl}" type="submit" id="add-${identity.providerId!}" class="btn btn-primary btn-lg">Add ${identity.providerName!}</a>
|
<a href="${identity.actionUrl}" type="submit" id="add-${identity.providerId!}" class="btn btn-primary btn-lg">${msg("doAdd")}</a>
|
||||||
</#if>
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,18 +3,18 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h2>Account Log</h2>
|
<h2>${msg("accountLogHtmlTitle")}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Date</td>
|
<td>${msg("date")}</td>
|
||||||
<td>Event</td>
|
<td>${msg("event")}</td>
|
||||||
<td>IP</td>
|
<td>${msg("ip")}</td>
|
||||||
<td>Client</td>
|
<td>${msg("client")}</td>
|
||||||
<td>Details</td>
|
<td>${msg("details")}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,24 @@
|
||||||
|
doLogOutAllSessions=Alle Sessionen abmelden
|
||||||
|
doSave=Speichern
|
||||||
|
doCancel=Abbrechen
|
||||||
|
doRemove=Entfernen
|
||||||
|
doAdd=Hinzufügen
|
||||||
|
doSignOut=Abmelden
|
||||||
|
|
||||||
|
editAccountHtmlTtile=Benutzerkonto Bearbeiten
|
||||||
|
federatedIdentitiesHtmlTitle=Federated Identities
|
||||||
|
accountLogHtmlTitle=Benutzerkonto Log
|
||||||
|
changePasswordHtmlTitle=Passwort Ändern
|
||||||
|
sessionsHtmlTitle=Sessions
|
||||||
|
accountManagementTitle=Keycloak Benutzerkontoverwaltung
|
||||||
|
authenticatorTitle=Authenticator
|
||||||
|
|
||||||
authenticatorCode=One-time code
|
authenticatorCode=One-time code
|
||||||
email=E-Mail
|
email=E-Mail
|
||||||
firstName=Vorname
|
firstName=Vorname
|
||||||
lastName=Nachname
|
lastName=Nachname
|
||||||
password=Passwort
|
password=Passwort
|
||||||
passwordConfirm=Passwort bestätigung
|
passwordConfirm=Passwortbestätigung
|
||||||
passwordNew=Neues Passwort
|
passwordNew=Neues Passwort
|
||||||
username=Benutzernamen
|
username=Benutzernamen
|
||||||
street=Strasse
|
street=Strasse
|
||||||
|
@ -12,6 +27,36 @@ postal_code=PLZ
|
||||||
locality=Stadt oder Ortschaft
|
locality=Stadt oder Ortschaft
|
||||||
country=Land
|
country=Land
|
||||||
|
|
||||||
|
requiredFields=Erforderliche Felder
|
||||||
|
allFieldsRequired=Alle Felder sind Erforderlich
|
||||||
|
|
||||||
|
backToApplication=« Zurück zur Applikation
|
||||||
|
backTo=Zurück zu {0}
|
||||||
|
|
||||||
|
date=Datum
|
||||||
|
event=Ereignis
|
||||||
|
ip=IP
|
||||||
|
client=Client
|
||||||
|
clients=Clients
|
||||||
|
details=Details
|
||||||
|
started=Startdatum
|
||||||
|
lastAccess=Letzter Zugriff
|
||||||
|
expires=Ablaufdatum
|
||||||
|
applications=
|
||||||
|
|
||||||
|
account=Benutzerkonto
|
||||||
|
federatedIdentity=Federated Identity
|
||||||
|
authenticator=Authenticator
|
||||||
|
sessions=Sessions
|
||||||
|
log=Log
|
||||||
|
|
||||||
|
configureAuthenticators=Authenticators konfigurieren
|
||||||
|
mobile=Mobile
|
||||||
|
totpStep1=Installieren Sie <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> oder <a href="http://code.google.com/p/google-authenticator/" target="_blank">Google Authenticator</a> auf Ihrem Smartphone.
|
||||||
|
totpStep2=Öffnen Sie die Applikation und scannen Sie den Barcode oder geben sie den Code ein.
|
||||||
|
totpStep3=Geben Sie den One-time Code welcher die Applikation generiert hat ein und klicken Sie auf Speichern.
|
||||||
|
|
||||||
|
|
||||||
missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
|
missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
|
||||||
missingEmailMessage=Bitte geben Sie eine E-Mail Adresse ein.
|
missingEmailMessage=Bitte geben Sie eine E-Mail Adresse ein.
|
||||||
missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
|
missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
|
||||||
|
@ -20,7 +65,7 @@ notMatchPasswordMessage=Passw
|
||||||
|
|
||||||
missingTotpMessage=Bitte geben Sie den One-time Code ein.
|
missingTotpMessage=Bitte geben Sie den One-time Code ein.
|
||||||
invalidPasswordExistingMessage=Das aktuelle Passwort is ungültig.
|
invalidPasswordExistingMessage=Das aktuelle Passwort is ungültig.
|
||||||
invalidPasswordConfirmMessage=Die Passwort bestätigung ist nicht identisch.
|
invalidPasswordConfirmMessage=Die Passwortbestätigung ist nicht identisch.
|
||||||
invalidTotpMessage=Ungültiger One-time Code.
|
invalidTotpMessage=Ungültiger One-time Code.
|
||||||
invalidEmailMessage=Ungültige E-Mail Adresse.
|
invalidEmailMessage=Ungültige E-Mail Adresse.
|
||||||
|
|
||||||
|
@ -37,15 +82,13 @@ missingIdentityProviderMessage=Identity Provider nicht angegeben.
|
||||||
invalidFederatedIdentityActionMessage=Ungültige oder fehlende Aktion.
|
invalidFederatedIdentityActionMessage=Ungültige oder fehlende Aktion.
|
||||||
identityProviderNotFoundMessage=Angegebener Identity Provider nicht gefunden.
|
identityProviderNotFoundMessage=Angegebener Identity Provider nicht gefunden.
|
||||||
federatedIdentityLinkNotActiveMessage=Diese Identität ist nicht mehr aktiv.
|
federatedIdentityLinkNotActiveMessage=Diese Identität ist nicht mehr aktiv.
|
||||||
federatedIdentityRemovingLastProviderMessage=Sie können den letzen Eintrag nicht enfernen, da Sie kein Passwort haben.
|
federatedIdentityRemovingLastProviderMessage=Sie können den letzen Eintrag nicht entfernen, da Sie kein Passwort haben.
|
||||||
identityProviderRedirectErrorMessage=Fehler bei der Weiterleitung zum Identity Proivder.
|
identityProviderRedirectErrorMessage=Fehler bei der Weiterleitung zum Identity Provider.
|
||||||
identityProviderRemovedMessage=Identity Provider erfolgreich entfernt.
|
identityProviderRemovedMessage=Identity Provider erfolgreich entfernt.
|
||||||
|
|
||||||
accountDisabledMessage=Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
|
accountDisabledMessage=Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
|
||||||
|
|
||||||
doLogOutAllSessions=Alle Sessionen abmelden
|
accountTemporarilyDisabledMessage=Benutzerkonto ist temporär gesperrt, bitte kontaktieren Sie den Admin oder versuchen Sie es später noch einmal.
|
||||||
|
|
||||||
accountTemporarilyDisabledMessage=Benutzerkonto ist temporär gespert, bitte kontaktieren Sie den Admin oder versuchen Sie es später nocheinmal.
|
|
||||||
invalidPasswordMinLengthMessage=Ungültiges Passwort: minimum länge {0}.
|
invalidPasswordMinLengthMessage=Ungültiges Passwort: minimum länge {0}.
|
||||||
invalidPasswordMinDigitsMessage=Ungültiges Passwort: muss mindestens {0} Zahl(en) beinhalten.
|
invalidPasswordMinDigitsMessage=Ungültiges Passwort: muss mindestens {0} Zahl(en) beinhalten.
|
||||||
invalidPasswordMinLowerCaseCharsMessage=Ungültiges Passwort: muss mindestens {0} Kleinbuchstaben beinhalten.
|
invalidPasswordMinLowerCaseCharsMessage=Ungültiges Passwort: muss mindestens {0} Kleinbuchstaben beinhalten.
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
doSave=Save
|
||||||
|
doCancel=Cancel
|
||||||
|
doLogOutAllSessions=Log out all sessions
|
||||||
|
doRemove=Remove
|
||||||
|
doAdd=Add
|
||||||
|
doSignOut=Sign Out
|
||||||
|
|
||||||
|
editAccountHtmlTtile=Edit Account
|
||||||
|
federatedIdentitiesHtmlTitle=Federated Identities
|
||||||
|
accountLogHtmlTitle=Account Log
|
||||||
|
changePasswordHtmlTitle=Change Password
|
||||||
|
sessionsHtmlTitle=Sessions
|
||||||
|
accountManagementTitle=Keycloak Account Management
|
||||||
|
authenticatorTitle=Authenticator
|
||||||
|
|
||||||
authenticatorCode=One-time code
|
authenticatorCode=One-time code
|
||||||
email=Email
|
email=Email
|
||||||
firstName=First name
|
firstName=First name
|
||||||
|
@ -12,6 +27,35 @@ region=State, Province, or Region
|
||||||
postal_code=Zip or Postal code
|
postal_code=Zip or Postal code
|
||||||
country=Country
|
country=Country
|
||||||
|
|
||||||
|
requiredFields=Required fields
|
||||||
|
allFieldsRequired=All fields required
|
||||||
|
|
||||||
|
backToApplication=« Back to application
|
||||||
|
backTo=Back to {0}
|
||||||
|
|
||||||
|
date=Date
|
||||||
|
event=Event
|
||||||
|
ip=IP
|
||||||
|
client=Client
|
||||||
|
clients=Clients
|
||||||
|
details=Details
|
||||||
|
started=Started
|
||||||
|
lastAccess=Last Access
|
||||||
|
expires=Expires
|
||||||
|
applications=Applications
|
||||||
|
|
||||||
|
account=Account
|
||||||
|
federatedIdentity=Federated Identity
|
||||||
|
authenticator=Authenticator
|
||||||
|
sessions=Sessions
|
||||||
|
log=Log
|
||||||
|
|
||||||
|
configureAuthenticators=Configured Authenticators
|
||||||
|
mobile=Mobile
|
||||||
|
totpStep1=Install <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> or <a href="http://code.google.com/p/google-authenticator/" target="_blank">Google Authenticator</a> on your mobile.
|
||||||
|
totpStep2=Open the application and scan the barcode or enter the key.
|
||||||
|
totpStep3=Enter the one-time code provided by the application and click Save to finish the setup.
|
||||||
|
|
||||||
missingFirstNameMessage=Please specify first name.
|
missingFirstNameMessage=Please specify first name.
|
||||||
invalidEmailMessage=Invalid email address.
|
invalidEmailMessage=Invalid email address.
|
||||||
missingLastNameMessage=Please specify last name.
|
missingLastNameMessage=Please specify last name.
|
||||||
|
@ -19,39 +63,37 @@ missingEmailMessage=Please specify email.
|
||||||
missingPasswordMessage=Please specify password.
|
missingPasswordMessage=Please specify password.
|
||||||
notMatchPasswordMessage=Passwords don''t match.
|
notMatchPasswordMessage=Passwords don''t match.
|
||||||
|
|
||||||
missingTotpMessage=Please specify authenticator code
|
missingTotpMessage=Please specify authenticator code.
|
||||||
invalidPasswordExistingMessage=Invalid existing password
|
invalidPasswordExistingMessage=Invalid existing password.
|
||||||
invalidPasswordConfirmMessage=Password confirmation doesn''t match
|
invalidPasswordConfirmMessage=Password confirmation doesn''t match.
|
||||||
invalidTotpMessage=Invalid authenticator code
|
invalidTotpMessage=Invalid authenticator code.
|
||||||
|
|
||||||
readOnlyUserMessage=You can''t update your account as it is read only
|
readOnlyUserMessage=You can''t update your account as it is read only.
|
||||||
readOnlyPasswordMessage=You can''t update your password as your account is read only
|
readOnlyPasswordMessage=You can''t update your password as your account is read only.
|
||||||
|
|
||||||
successTotpMessage=Mobile authenticator configured.
|
successTotpMessage=Mobile authenticator configured.
|
||||||
successTotpRemovedMessage=Mobile authenticator removed.
|
successTotpRemovedMessage=Mobile authenticator removed.
|
||||||
|
|
||||||
accountUpdatedMessage=Your account has been updated
|
accountUpdatedMessage=Your account has been updated.
|
||||||
accountPasswordUpdatedMessage=Your password has been updated
|
accountPasswordUpdatedMessage=Your password has been updated.
|
||||||
|
|
||||||
missingIdentityProviderMessage=Identity provider not specified
|
missingIdentityProviderMessage=Identity provider not specified.
|
||||||
invalidFederatedIdentityActionMessage=Invalid or missing action
|
invalidFederatedIdentityActionMessage=Invalid or missing action.
|
||||||
identityProviderNotFoundMessage=Specified identity provider not found
|
identityProviderNotFoundMessage=Specified identity provider not found.
|
||||||
federatedIdentityLinkNotActiveMessage=This identity is not active anymore
|
federatedIdentityLinkNotActiveMessage=This identity is not active anymore.
|
||||||
federatedIdentityRemovingLastProviderMessage=You can''t remove last federated identity as you don''t have password
|
federatedIdentityRemovingLastProviderMessage=You can''t remove last federated identity as you don''t have password.
|
||||||
identityProviderRedirectErrorMessage=Failed to redirect to identity provider
|
identityProviderRedirectErrorMessage=Failed to redirect to identity provider.
|
||||||
identityProviderRemovedMessage=Identity provider removed successfully
|
identityProviderRemovedMessage=Identity provider removed successfully.
|
||||||
|
|
||||||
accountDisabledMessage=Account is disabled, contact admin
|
accountDisabledMessage=Account is disabled, contact admin.
|
||||||
|
|
||||||
doLogOutAllSessions=Log out all sessions
|
accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later.
|
||||||
|
invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
|
||||||
accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later
|
invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
|
||||||
invalidPasswordMinLengthMessage=Invalid password: minimum 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.
|
||||||
invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits
|
invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
|
||||||
invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters
|
invalidPasswordNotUsernameMessage=Invalid password\: must not be equal to the username.
|
||||||
invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters
|
|
||||||
invalidPasswordNotUsernameMessage=Invalid password\: must not be equal to the username
|
|
||||||
|
|
||||||
locale_de=German
|
locale_de=German
|
||||||
locale_en=English
|
locale_en=English
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h2>Change Password</h2>
|
<h2>${msg("changePasswordHtmlTitle")}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2 subtitle">
|
<div class="col-md-2 subtitle">
|
||||||
<span class="subtitle">All fields required</span>
|
<span class="subtitle">${msg("allFieldsRequired")}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -48,8 +48,8 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
||||||
<div class="">
|
<div class="">
|
||||||
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">Save</button>
|
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">${msg("doSave")}</button>
|
||||||
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">Cancel</button>
|
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">${msg("doCancel")}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,19 +3,19 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h2>Sessions</h2>
|
<h2>${msg("sessionsHtmlTitle")}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>IP</td>
|
<td>${msg("ip")}</td>
|
||||||
<td>Started</td>
|
<td>${msg("started")}</td>
|
||||||
<td>Last Access</td>
|
<td>${msg("lastAccess")}</td>
|
||||||
<td>Expires</td>
|
<td>${msg("expires")}</td>
|
||||||
<td>Applications</td>
|
<td>${msg("applications")}</td>
|
||||||
<td>Clients</td>
|
<td>${msg("clients")}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Keycloak Account Management</title>
|
<title>${msg("accountManagementTitle")}</title>
|
||||||
<link rel="icon" href="${url.resourcesPath}/img/favicon.ico">
|
<link rel="icon" href="${url.resourcesPath}/img/favicon.ico">
|
||||||
<#if properties.styles?has_content>
|
<#if properties.styles?has_content>
|
||||||
<#list properties.styles?split(' ') as style>
|
<#list properties.styles?split(' ') as style>
|
||||||
|
@ -40,8 +40,8 @@
|
||||||
</div>
|
</div>
|
||||||
<li>
|
<li>
|
||||||
</#if>
|
</#if>
|
||||||
<#if referrer?has_content && referrer.url?has_content><li><a href="${referrer.url}" id="referrer">Back to ${referrer.name}</a></li></#if>
|
<#if referrer?has_content && referrer.url?has_content><li><a href="${referrer.url}" id="referrer">${msg("backTo",referrer.name)}</a></li></#if>
|
||||||
<li><a href="${url.logoutUrl}">Sign Out</a></li>
|
<li><a href="${url.logoutUrl}">${msg("doSignOut")}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -51,12 +51,12 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="bs-sidebar col-sm-3 ng-scope">
|
<div class="bs-sidebar col-sm-3 ng-scope">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="<#if active=='account'>active</#if>"><a href="${url.accountUrl}">Account</a></li>
|
<li class="<#if active=='account'>active</#if>"><a href="${url.accountUrl}">${msg("account")}</a></li>
|
||||||
<#if features.passwordUpdateSupported><li class="<#if active=='password'>active</#if>"><a href="${url.passwordUrl}">Password</a></li></#if>
|
<#if features.passwordUpdateSupported><li class="<#if active=='password'>active</#if>"><a href="${url.passwordUrl}">${msg("password")}</a></li></#if>
|
||||||
<li class="<#if active=='totp'>active</#if>"><a href="${url.totpUrl}">Authenticator</a></li>
|
<li class="<#if active=='totp'>active</#if>"><a href="${url.totpUrl}">${msg("authenticator")}</a></li>
|
||||||
<#if features.identityFederation><li class="<#if active=='social'>active</#if>"><a href="${url.socialUrl}">Federated Identity</a></li></#if>
|
<#if features.identityFederation><li class="<#if active=='social'>active</#if>"><a href="${url.socialUrl}">${msg("federatedIdentity")}</a></li></#if>
|
||||||
<li class="<#if active=='sessions'>active</#if>"><a href="${url.sessionsUrl}">Sessions</a></li>
|
<li class="<#if active=='sessions'>active</#if>"><a href="${url.sessionsUrl}">${msg("sessions")}</a></li>
|
||||||
<#if features.log><li class="<#if active=='log'>active</#if>"><a href="${url.logUrl}">Log</a></li></#if>
|
<#if features.log><li class="<#if active=='log'>active</#if>"><a href="${url.logUrl}">${msg("log")}</a></li></#if>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
<@layout.mainLayout active='totp' bodyClass='totp'; section>
|
<@layout.mainLayout active='totp' bodyClass='totp'; section>
|
||||||
|
|
||||||
<#if totp.enabled>
|
<#if totp.enabled>
|
||||||
<h2>Authenticators</h2>
|
<h2>${msg("authenticatorTitle")}</h2>
|
||||||
|
|
||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped">
|
||||||
<thead
|
<thead
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2">Configured Authenticators</th>
|
<th colspan="2">${msg("configureAuthenticators")}/th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="provider">Mobile</td>
|
<td class="provider">${msg("mobile")}</td>
|
||||||
<td class="action">
|
<td class="action">
|
||||||
<a id="remove-mobile" href="${url.totpRemoveUrl}"><i class="pficon pficon-delete"></i></a>
|
<a id="remove-mobile" href="${url.totpRemoveUrl}"><i class="pficon pficon-delete"></i></a>
|
||||||
</td>
|
</td>
|
||||||
|
@ -20,23 +20,21 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<#else>
|
<#else>
|
||||||
<h2>Authenticator</h2>
|
<h2>${msg("authenticatorTitle")}</h2>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
Install <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> or
|
<p>${msg("totpStep1")}</p>
|
||||||
<a href="http://code.google.com/p/google-authenticator/" target="_blank">Google Authenticator</a>
|
|
||||||
on your mobile
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Open the application and scan the barcode or enter the key<br/>
|
<p>${msg("totpStep2")}</p>
|
||||||
<img src="${totp.totpSecretQrCodeUrl}" alt="Figure: Barcode"><br/>
|
<img src="${totp.totpSecretQrCodeUrl}" alt="Figure: Barcode"><br/>
|
||||||
<span class="code">${totp.totpSecretEncoded}</span>
|
<span class="code">${totp.totpSecretEncoded}</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Enter the one-time code provided by the application and click Submit to finish the setup.
|
<p>${msg("totpStep3")}</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
@ -58,8 +56,8 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
|
||||||
<div class="">
|
<div class="">
|
||||||
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">Save</button>
|
<button type="submit" class="btn btn-primary btn-lg" name="submitAction" value="Save">${msg("doSave")}</button>
|
||||||
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">Cancel</button>
|
<button type="submit" class="btn btn-default btn-lg" name="submitAction" value="Cancel">${msg("doCancel")}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
emailVerificationSubject=E-Mail verifizieren
|
emailVerificationSubject=E-Mail verifizieren
|
||||||
passwordResetSubject=Passwort zurückzusetzen
|
passwordResetSubject=Passwort zurückzusetzen
|
||||||
passwordResetBody=Jemand hat angeforder Ihr Keycloak Passwort zurückzusetzen. Falls das Sie waren, dann klicken Sie auf den folgenden Link um das Passwort zurückzusetzen.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie das Passwort nicht zurücksetzen möchten, dann können Sie diese E-Mail ignorieren.
|
passwordResetBody=Jemand hat angefordert Ihr Keycloak Passwort zurückzusetzen. Falls das Sie waren, dann klicken Sie auf den folgenden Link um das Passwort zurückzusetzen.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie das Passwort nicht zurücksetzen möchten, dann können Sie diese E-Mail ignorieren.
|
||||||
emailVerificationBody=Jemand hat ein Keycloak Konto mit dieser E-Mail Adresse erstellt. Fall das Sie waren, dann klicken Sie auf den Link um die E-Mail Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.
|
emailVerificationBody=Jemand hat ein Keycloak Konto mit dieser E-Mail Adresse erstellt. Fall das Sie waren, dann klicken Sie auf den Link um die E-Mail Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.
|
||||||
eventLoginErrorSubject=Fehlgeschlagene Anmeldung
|
eventLoginErrorSubject=Fehlgeschlagene Anmeldung
|
||||||
eventLoginErrorBody=Jemand hat um {0} von {1} versucht sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
eventLoginErrorBody=Jemand hat um {0} von {1} versucht sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
<@layout.registrationLayout; section>
|
<@layout.registrationLayout; section>
|
||||||
<#if section = "title">
|
<#if section = "title">
|
||||||
<#if code.success>
|
<#if code.success>
|
||||||
Success code=${code.code}
|
${msg("codeSuccessTitle")}
|
||||||
<#else>
|
<#else>
|
||||||
Error error=${code.error}
|
${msg("codeErrorTitle", code.error)}
|
||||||
</#if>
|
</#if>
|
||||||
<#elseif section = "form">
|
<#elseif section = "form">
|
||||||
<div id="kc-code">
|
<div id="kc-code">
|
||||||
<#if code.success>
|
<#if code.success>
|
||||||
<p>Please copy this code and paste it into your application:</p>
|
<p>${msg("copyCodeInstruction")}</p>
|
||||||
<input id="code" class="${properties.kcTextareaClass!}" value="${code.code}"/>
|
<input id="code" class="${properties.kcTextareaClass!}" value="${code.code}"/>
|
||||||
<#else>
|
<#else>
|
||||||
<p id="error">${code.error}</p>
|
<p id="error">${code.error}</p>
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
<#if oauth.claimsRequested??>
|
<#if oauth.claimsRequested??>
|
||||||
<li>
|
<li>
|
||||||
<span>
|
<span>
|
||||||
Personal Info:
|
${msg("personalInfo")}
|
||||||
<#list oauth.claimsRequested as claim>
|
<#list oauth.claimsRequested as claim>
|
||||||
${claim}
|
${advancedMsg(claim)}<#if claim_has_next>, </#if>
|
||||||
</#list>
|
</#list>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<#if oauth.realmRolesRequested??>
|
<#if oauth.realmRolesRequested??>
|
||||||
<#list oauth.realmRolesRequested as role>
|
<#list oauth.realmRolesRequested as role>
|
||||||
<li>
|
<li>
|
||||||
<span><#if role.description??>${role.description}<#else>${role.name}</#if></span>
|
<span><#if role.description??>${advancedMsg(role.description)}<#else>${advancedMsg(role.name)}</#if></span>
|
||||||
</li>
|
</li>
|
||||||
</#list>
|
</#list>
|
||||||
</#if>
|
</#if>
|
||||||
|
@ -37,8 +37,8 @@
|
||||||
<#list oauth.resourceRolesRequested?keys as resource>
|
<#list oauth.resourceRolesRequested?keys as resource>
|
||||||
<#list oauth.resourceRolesRequested[resource] as role>
|
<#list oauth.resourceRolesRequested[resource] as role>
|
||||||
<li>
|
<li>
|
||||||
<span class="kc-role"><#if role.description??>${role.description}<#else>${role.name}</#if></span>
|
<span class="kc-role"><#if role.description??>${advancedMsg(role.description)}<#else>${advancedMsg(role.name)}</#if></span>
|
||||||
<span class="kc-resource">in <strong>${resource}</strong></span>
|
<span class="kc-resource">${msg("inResource", resource)}</span>
|
||||||
</li>
|
</li>
|
||||||
</#list>
|
</#list>
|
||||||
</#list>
|
</#list>
|
||||||
|
|
|
@ -12,16 +12,18 @@ registerWithTitleHtml=Registrierung bei <strong>{0}</strong>
|
||||||
loginTitle=Anmeldung bei {0}
|
loginTitle=Anmeldung bei {0}
|
||||||
loginTitleHtml=Anmeldung bei <strong>{0}</strong>
|
loginTitleHtml=Anmeldung bei <strong>{0}</strong>
|
||||||
loginOauthTitle=Temporärer zugriff auf {0}
|
loginOauthTitle=Temporärer zugriff auf {0}
|
||||||
loginOauthTitleHtml=Temporärer zugriff auf <strong>{0}<strong> angefordert von <strong>{1}</strong>.
|
loginOauthTitleHtml=Temporärer zugriff auf <strong>{0}</strong> angefordert von <strong>{1}</strong>.
|
||||||
loginTotpTitle=Mobile Authentifizierung Einrichten
|
loginTotpTitle=Mobile Authentifizierung Einrichten
|
||||||
loginProfileTitle=Benutzer Konto Informatinen aktualisieren
|
loginProfileTitle=Benutzerkonto Informationen aktualisieren
|
||||||
oauthGrantTitle=OAuth gewähren
|
oauthGrantTitle=OAuth gewähren
|
||||||
oauthGrantTitleHtml=Temporärer zugriff auf <strong>{0}<strong> angefordert von <strong>{1}</strong>.
|
oauthGrantTitleHtml=Temporärer zugriff auf <strong>{0}</strong> angefordert von <strong>{1}</strong>.
|
||||||
errorTitle=Es tut uns leid...
|
errorTitle=Es tut uns leid...
|
||||||
errorTitleHtml=Es tut uns leid...
|
errorTitleHtml=Es tut uns leid...
|
||||||
emailVerifyTitle=E-Mail verifizieren
|
emailVerifyTitle=E-Mail verifizieren
|
||||||
emailForgotTitle=Passwort vergessen?
|
emailForgotTitle=Passwort vergessen?
|
||||||
updatePasswordTitle=Passwort aktualisieren
|
updatePasswordTitle=Passwort aktualisieren
|
||||||
|
codeSuccessTitle=Erfolgreicher code
|
||||||
|
codeErrorTitle=Fehler code\: {0}
|
||||||
|
|
||||||
noAccount=Neuer Benutzer?
|
noAccount=Neuer Benutzer?
|
||||||
username=Benutzername
|
username=Benutzername
|
||||||
|
@ -47,7 +49,8 @@ loginTotpStep2=
|
||||||
loginTotpStep3=Geben Sie den One-time Code welcher die Applikation generiert hat ein und klicken Sie auf Absenden.
|
loginTotpStep3=Geben Sie den One-time Code welcher die Applikation generiert hat ein und klicken Sie auf Absenden.
|
||||||
loginTotpOneTime=One-time Code
|
loginTotpOneTime=One-time Code
|
||||||
|
|
||||||
oauthGrantRequest=Do you grant these access privileges?
|
oauthGrantRequest=Wollen Sie diese Zugriffsreche gewähren?
|
||||||
|
inResource=in <strong>{0}</strong>
|
||||||
|
|
||||||
emailVerifyInstruction1=Ein E-Mail mit weitern Anweisungen wurde an Sie versendet.
|
emailVerifyInstruction1=Ein E-Mail mit weitern Anweisungen wurde an Sie versendet.
|
||||||
emailVerifyInstruction2=Falls Sie kein E-Mail erhalten haben, dann können Sie
|
emailVerifyInstruction2=Falls Sie kein E-Mail erhalten haben, dann können Sie
|
||||||
|
@ -58,10 +61,14 @@ backToApplication=« Zur
|
||||||
|
|
||||||
emailInstruction=Geben Sie ihren Benutzernamen oder E-Mail Adresse ein und klicken Sie auf Absenden. Danach werden wir ihnen ein E-Mail mit weiteren Instruktionen zusenden.
|
emailInstruction=Geben Sie ihren Benutzernamen oder E-Mail Adresse ein und klicken Sie auf Absenden. Danach werden wir ihnen ein E-Mail mit weiteren Instruktionen zusenden.
|
||||||
|
|
||||||
|
copyCodeInstruction=Bitte kopieren sie den folgenden Code und fügen ihn in die Applikation ein\:
|
||||||
|
|
||||||
|
personalInfo=Persönliche Informationen:
|
||||||
|
|
||||||
invalidUserMessage=Ungültiger Benutzername oder Passwort.
|
invalidUserMessage=Ungültiger Benutzername oder Passwort.
|
||||||
invalidEmailMessage=Ungültige E-Mail Adresse.
|
invalidEmailMessage=Ungültige E-Mail Adresse.
|
||||||
accountDisabledMessage=Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
|
accountDisabledMessage=Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
|
||||||
accountTemporarilyDisabledMessage=Benutzerkonto ist temporär gespert, bitte kontaktieren Sie den Admin oder versuchen Sie es später nocheinmal.
|
accountTemporarilyDisabledMessage=Benutzerkonto ist temporär gesperrt, bitte kontaktieren Sie den Admin oder versuchen Sie es später noch einmal.
|
||||||
expiredCodeMessage=Zeitüberschreitung bei der Anmeldung. Bitter melden Sie sich erneut an.
|
expiredCodeMessage=Zeitüberschreitung bei der Anmeldung. Bitter melden Sie sich erneut an.
|
||||||
|
|
||||||
missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
|
missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
|
||||||
|
@ -73,14 +80,14 @@ missingTotpMessage=Bitte geben Sie den One-time Code ein.
|
||||||
notMatchPasswordMessage=Passwörter sind nicht identisch.
|
notMatchPasswordMessage=Passwörter sind nicht identisch.
|
||||||
|
|
||||||
invalidPasswordExistingMessage=Das aktuelle Passwort is ungültig.
|
invalidPasswordExistingMessage=Das aktuelle Passwort is ungültig.
|
||||||
invalidPasswordConfirmMessage=Die Passwort bestätigung ist nicht identisch.
|
invalidPasswordConfirmMessage=Die Passwortbestätigung ist nicht identisch.
|
||||||
invalidTotpMessage=Ungültiger One-time Code.
|
invalidTotpMessage=Ungültiger One-time Code.
|
||||||
|
|
||||||
usernameExistsMessage=Benutzermane exisitert bereits.
|
usernameExistsMessage=Benutzername existiert bereits.
|
||||||
emailExistsMessage=E-Mail existiert bereits.
|
emailExistsMessage=E-Mail existiert bereits.
|
||||||
|
|
||||||
federatedIdentityEmailExistsMessage=Es exisitert bereits ein Benutzer mit dieser E-Mail Adresse. Bitte melden Sie sich bei der Benutzerverwaltung an um das Benutzerkonto zu verknüpfen.
|
federatedIdentityEmailExistsMessage=Es existiert bereits ein Benutzer mit dieser E-Mail Adresse. Bitte melden Sie sich bei der Benutzerverwaltung an um das Benutzerkonto zu verknüpfen.
|
||||||
federatedIdentityUsernameExistsMessage=Es exisitert bereits ein Benutzer mit diesem Benutzernamen. Bitte melden Sie sich bei der Benutzerverwaltung an um das Benutzerkonto zu verknüpfen.
|
federatedIdentityUsernameExistsMessage=Es existiert bereits ein Benutzer mit diesem Benutzernamen. Bitte melden Sie sich bei der Benutzerverwaltung an um das Benutzerkonto zu verknüpfen.
|
||||||
|
|
||||||
configureTotpMessage=Sie müssen eine Mobile Authentifizierung einrichten um das Benutzerkonto zu aktivieren.
|
configureTotpMessage=Sie müssen eine Mobile Authentifizierung einrichten um das Benutzerkonto zu aktivieren.
|
||||||
updateProfileMessage=Sie müssen ihr Benutzerkonto aktualisieren um das Benutzerkonto zu aktivieren.
|
updateProfileMessage=Sie müssen ihr Benutzerkonto aktualisieren um das Benutzerkonto zu aktivieren.
|
||||||
|
@ -118,28 +125,28 @@ registrationNotAllowedMessage=Registrierung nicht erlaubt.
|
||||||
permissionNotApprovedMessage=Berechtigung nicht bestätigt.
|
permissionNotApprovedMessage=Berechtigung nicht bestätigt.
|
||||||
noRelayStateInResponseMessage=Kein relay state in der Antwort von dem Identity Provider [{0}].
|
noRelayStateInResponseMessage=Kein relay state in der Antwort von dem Identity Provider [{0}].
|
||||||
identityProviderAlreadyLinkedMessage=Die Identität welche von dem Identity Provider [{0}] zurückgegeben wurde, ist bereits mit einem anderen Benutzer verknüpft.
|
identityProviderAlreadyLinkedMessage=Die Identität welche von dem Identity Provider [{0}] zurückgegeben wurde, ist bereits mit einem anderen Benutzer verknüpft.
|
||||||
insufficientPermissionMessage=Nicht genügtend Rechte um die Identität zu verknüpfen.
|
insufficientPermissionMessage=Nicht genügend Rechte um die Identität zu verknüpfen.
|
||||||
couldNotProceedWithAuthenticationRequestMessage=Konnte den Authentifizierungs Request nicht weiter verarbeiten.
|
couldNotProceedWithAuthenticationRequestMessage=Konnte den Authentifizierungs Request nicht weiter verarbeiten.
|
||||||
couldNotObtainTokenMessage=Konnte kein token vom Identity Provider [{0}] entnehmen.
|
couldNotObtainTokenMessage=Konnte kein token vom Identity Provider [{0}] entnehmen.
|
||||||
unexpectedErrorRetrievingTokenMessage=Unerwarteter Fehler während dem Empfang des Token von dem Identity Provider [{0}].
|
unexpectedErrorRetrievingTokenMessage=Unerwarteter Fehler während dem Empfang des Token von dem Identity Provider [{0}].
|
||||||
unexpectedErrorHandlingResponseMessage=Unerwarteter Fehler während der bearbeitung des Respons vom Identity Provider [{0}].
|
unexpectedErrorHandlingResponseMessage=Unerwarteter Fehler während der Bearbeitung des Respons vom Identity Provider [{0}].
|
||||||
identityProviderAuthenticationFailedMessage=Authentifizierung Fehlgeschlagen. Konnte sich mit dem Identity Provider [{0}] nicht authentifizieren.
|
identityProviderAuthenticationFailedMessage=Authentifizierung Fehlgeschlagen. Konnte sich mit dem Identity Provider [{0}] nicht authentifizieren.
|
||||||
couldNotSendAuthenticationRequestMessage=Konnte Authentifizierungs Request nicht an den Identity Provider [{0}] schiken.
|
couldNotSendAuthenticationRequestMessage=Konnte Authentifizierungs Request nicht an den Identity Provider [{0}] schicken.
|
||||||
unexpectedErrorHandlingRequestMessage=Unerwarteter Fehler während der bearbeitung des Requests zum Identity Provider [{0}].
|
unexpectedErrorHandlingRequestMessage=Unerwarteter Fehler während der Bearbeitung des Requests zum Identity Provider [{0}].
|
||||||
invalidAccessCodeMessage=Ungültiger Access-Code.
|
invalidAccessCodeMessage=Ungültiger Access-Code.
|
||||||
sessionNotActiveMessage=Session nicht aktiv.
|
sessionNotActiveMessage=Session nicht aktiv.
|
||||||
unknownCodeMessage=Unbekannter Code, bitte melden Sie sich erneut über die Applikation an.
|
unknownCodeMessage=Unbekannter Code, bitte melden Sie sich erneut über die Applikation an.
|
||||||
invalidCodeMessage=Ungültiger Code, bitte melden Sie sich erneut über die Applikation an.
|
invalidCodeMessage=Ungültiger Code, bitte melden Sie sich erneut über die Applikation an.
|
||||||
identityProviderUnexpectedErrorMessage=Unerwarteter Fehler während der Authentifizierung mit dem Identity Provider.
|
identityProviderUnexpectedErrorMessage=Unerwarteter Fehler während der Authentifizierung mit dem Identity Provider.
|
||||||
identityProviderNotFoundMessage=Konnte kein Identity Provider mit der Idenität [{0}] finden.
|
identityProviderNotFoundMessage=Konnte kein Identity Provider mit der Identität [{0}] finden.
|
||||||
realmSupportsNoCredentialsMessage=Realm [{0}] unterstützt keine Credential Typen..
|
realmSupportsNoCredentialsMessage=Realm [{0}] unterstützt keine Credential Typen.
|
||||||
identityProviderNotUniqueMessage=Realm [{0}] unterstütz mehrere Identity Providers.
|
identityProviderNotUniqueMessage=Realm [{0}] unterstütz mehrere Identity Providers.
|
||||||
|
|
||||||
invalidParameterMessage=Invalid parameter\: {0}
|
invalidParameterMessage=Invalid parameter\: {0}
|
||||||
missingParameterMessage=Missing parameter\: {0}
|
missingParameterMessage=Missing parameter\: {0}
|
||||||
clientNotFoundMessage=Client not found.
|
clientNotFoundMessage=Client not found.
|
||||||
|
|
||||||
emailVerifiedMessage=Ihr E-Mail Addresse wurde erfolgreich verifiziert.
|
emailVerifiedMessage=Ihr E-Mail Adresse wurde erfolgreich verifiziert.
|
||||||
|
|
||||||
locale_de=Deutsch
|
locale_de=Deutsch
|
||||||
locale_en=Englisch
|
locale_en=Englisch
|
||||||
|
|
|
@ -12,7 +12,7 @@ registerWithTitleHtml=Register with <strong>{0}</strong>
|
||||||
loginTitle=Log in to {0}
|
loginTitle=Log in to {0}
|
||||||
loginTitleHtml=Log in to <strong>{0}</strong>
|
loginTitleHtml=Log in to <strong>{0}</strong>
|
||||||
loginOauthTitle=Temporary access for {0}
|
loginOauthTitle=Temporary access for {0}
|
||||||
loginOauthTitleHtml=Temporary access for <strong>{0}<strong> requested by <strong>{1}</strong>.
|
loginOauthTitleHtml=Temporary access for <strong>{0}</strong> requested by <strong>{1}</strong>.
|
||||||
loginTotpTitle=Mobile Authenticator Setup
|
loginTotpTitle=Mobile Authenticator Setup
|
||||||
loginProfileTitle=Update Account Information
|
loginProfileTitle=Update Account Information
|
||||||
oauthGrantTitle=OAuth Grant
|
oauthGrantTitle=OAuth Grant
|
||||||
|
@ -22,6 +22,8 @@ errorTitleHtml=We''re <strong>sorry</strong> ...
|
||||||
emailVerifyTitle=Email verification
|
emailVerifyTitle=Email verification
|
||||||
emailForgotTitle=Forgot Your Password?
|
emailForgotTitle=Forgot Your Password?
|
||||||
updatePasswordTitle=Update password
|
updatePasswordTitle=Update password
|
||||||
|
codeSuccessTitle=Success code
|
||||||
|
codeErrorTitle=Error code\: {0}
|
||||||
|
|
||||||
noAccount=New user?
|
noAccount=New user?
|
||||||
username=Username
|
username=Username
|
||||||
|
@ -48,6 +50,7 @@ loginTotpStep3=Enter the one-time code provided by the application and click Sub
|
||||||
loginTotpOneTime=One-time code
|
loginTotpOneTime=One-time code
|
||||||
|
|
||||||
oauthGrantRequest=Do you grant these access privileges?
|
oauthGrantRequest=Do you grant these access privileges?
|
||||||
|
inResource=in <strong>{0}</strong>
|
||||||
|
|
||||||
emailVerifyInstruction1=An email with instructions to verify your email address has been sent to you.
|
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?
|
emailVerifyInstruction2=Haven''t received a verification code in your email?
|
||||||
|
@ -57,6 +60,10 @@ backToLogin=« Back to Login
|
||||||
|
|
||||||
emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
|
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:
|
||||||
|
|
||||||
|
personalInfo=Personal Info:
|
||||||
|
|
||||||
invalidUserMessage=Invalid username or password.
|
invalidUserMessage=Invalid username or password.
|
||||||
invalidEmailMessage=Invalid email address.
|
invalidEmailMessage=Invalid email address.
|
||||||
accountDisabledMessage=Account is disabled, contact admin.
|
accountDisabledMessage=Account is disabled, contact admin.
|
||||||
|
@ -87,19 +94,19 @@ updatePasswordMessage=You need to change your password to activate your account.
|
||||||
verifyEmailMessage=You need to verify your email address to activate your account.
|
verifyEmailMessage=You need to verify your email address to activate your account.
|
||||||
|
|
||||||
emailSentMessage=You should receive an email shortly with further instructions.
|
emailSentMessage=You should receive an email shortly with further instructions.
|
||||||
emailSendErrorMessage=Failed to send email, please try again later
|
emailSendErrorMessage=Failed to send email, please try again later.
|
||||||
|
|
||||||
accountUpdatedMessage=Your account has been updated
|
accountUpdatedMessage=Your account has been updated.
|
||||||
accountPasswordUpdatedMessage=Your password has been updated
|
accountPasswordUpdatedMessage=Your password has been updated.
|
||||||
|
|
||||||
noAccessMessage=No access
|
noAccessMessage=No access
|
||||||
|
|
||||||
invalidPasswordMinLengthMessage=Invalid password: minimum length {0}
|
invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
|
||||||
invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits
|
invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
|
||||||
invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters
|
invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
|
||||||
invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters
|
invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
|
||||||
invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters
|
invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
|
||||||
invalidPasswordNotUsernameMessage=Invalid password\: must not be equal to the username
|
invalidPasswordNotUsernameMessage=Invalid password\: must not be equal to the username.
|
||||||
|
|
||||||
failedToProcessResponseMessage=Failed to process response
|
failedToProcessResponseMessage=Failed to process response
|
||||||
httpsRequiredMessage=HTTPS required
|
httpsRequiredMessage=HTTPS required
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.keycloak.OAuth2Constants;
|
||||||
import org.keycloak.email.EmailException;
|
import org.keycloak.email.EmailException;
|
||||||
import org.keycloak.email.EmailProvider;
|
import org.keycloak.email.EmailProvider;
|
||||||
import org.keycloak.freemarker.*;
|
import org.keycloak.freemarker.*;
|
||||||
|
import org.keycloak.freemarker.beans.AdvancedMessageFormatterMethod;
|
||||||
import org.keycloak.freemarker.beans.MessageFormatterMethod;
|
import org.keycloak.freemarker.beans.MessageFormatterMethod;
|
||||||
import org.keycloak.login.LoginFormsPages;
|
import org.keycloak.login.LoginFormsPages;
|
||||||
import org.keycloak.login.LoginFormsProvider;
|
import org.keycloak.login.LoginFormsProvider;
|
||||||
|
@ -239,6 +240,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
break;
|
break;
|
||||||
case OAUTH_GRANT:
|
case OAUTH_GRANT:
|
||||||
attributes.put("oauth", new OAuthGrantBean(accessCode, clientSession, client, realmRolesRequested, resourceRolesRequested, this.accessRequestMessage));
|
attributes.put("oauth", new OAuthGrantBean(accessCode, clientSession, client, realmRolesRequested, resourceRolesRequested, this.accessRequestMessage));
|
||||||
|
attributes.put("advancedMsg", new AdvancedMessageFormatterMethod(locale, messages));
|
||||||
break;
|
break;
|
||||||
case CODE:
|
case CODE:
|
||||||
attributes.put(OAuth2Constants.CODE, new CodeBean(accessCode, messageType == MessageType.ERROR ? message : null));
|
attributes.put(OAuth2Constants.CODE, new CodeBean(accessCode, messageType == MessageType.ERROR ? message : null));
|
||||||
|
|
|
@ -207,11 +207,11 @@ public class AccountTest {
|
||||||
|
|
||||||
changePasswordPage.changePassword("password", "new-password", "new-password2");
|
changePasswordPage.changePassword("password", "new-password", "new-password2");
|
||||||
|
|
||||||
Assert.assertEquals("Password confirmation doesn't match", profilePage.getError());
|
Assert.assertEquals("Password confirmation doesn't match.", profilePage.getError());
|
||||||
|
|
||||||
changePasswordPage.changePassword("password", "new-password", "new-password");
|
changePasswordPage.changePassword("password", "new-password", "new-password");
|
||||||
|
|
||||||
Assert.assertEquals("Your password has been updated", profilePage.getSuccess());
|
Assert.assertEquals("Your password has been updated.", profilePage.getSuccess());
|
||||||
|
|
||||||
events.expectAccount(EventType.UPDATE_PASSWORD).assertEvent();
|
events.expectAccount(EventType.UPDATE_PASSWORD).assertEvent();
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ public class AccountTest {
|
||||||
|
|
||||||
changePasswordPage.changePassword("password", "new-password", "new-password");
|
changePasswordPage.changePassword("password", "new-password", "new-password");
|
||||||
|
|
||||||
Assert.assertEquals("Your password has been updated", profilePage.getSuccess());
|
Assert.assertEquals("Your password has been updated.", profilePage.getSuccess());
|
||||||
|
|
||||||
events.expectAccount(EventType.UPDATE_PASSWORD).assertEvent();
|
events.expectAccount(EventType.UPDATE_PASSWORD).assertEvent();
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -318,7 +318,7 @@ public class AccountTest {
|
||||||
|
|
||||||
profilePage.updateProfile("New first", "New last", "new@email.com");
|
profilePage.updateProfile("New first", "New last", "new@email.com");
|
||||||
|
|
||||||
Assert.assertEquals("Your account has been updated", profilePage.getSuccess());
|
Assert.assertEquals("Your account has been updated.", profilePage.getSuccess());
|
||||||
Assert.assertEquals("New first", profilePage.getFirstName());
|
Assert.assertEquals("New first", profilePage.getFirstName());
|
||||||
Assert.assertEquals("New last", profilePage.getLastName());
|
Assert.assertEquals("New last", profilePage.getLastName());
|
||||||
Assert.assertEquals("new@email.com", profilePage.getEmail());
|
Assert.assertEquals("new@email.com", profilePage.getEmail());
|
||||||
|
@ -341,7 +341,7 @@ public class AccountTest {
|
||||||
// Error with false code
|
// Error with false code
|
||||||
totpPage.configure(totp.generate(totpPage.getTotpSecret() + "123"));
|
totpPage.configure(totp.generate(totpPage.getTotpSecret() + "123"));
|
||||||
|
|
||||||
Assert.assertEquals("Invalid authenticator code", profilePage.getError());
|
Assert.assertEquals("Invalid authenticator code.", profilePage.getError());
|
||||||
|
|
||||||
totpPage.configure(totp.generate(totpPage.getTotpSecret()));
|
totpPage.configure(totp.generate(totpPage.getTotpSecret()));
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,7 @@ public abstract class AbstractKerberosTest {
|
||||||
|
|
||||||
// Successfully change password now
|
// Successfully change password now
|
||||||
changePasswordPage.changePassword("theduke", "newPass", "newPass");
|
changePasswordPage.changePassword("theduke", "newPass", "newPass");
|
||||||
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated"));
|
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated."));
|
||||||
changePasswordPage.logout();
|
changePasswordPage.logout();
|
||||||
|
|
||||||
// Login with old password doesn't work, but with new password works
|
// Login with old password doesn't work, but with new password works
|
||||||
|
|
|
@ -209,7 +209,7 @@ public class FederationProvidersIntegrationTest {
|
||||||
loginPage.login("johnkeycloak", "Password1");
|
loginPage.login("johnkeycloak", "Password1");
|
||||||
changePasswordPage.changePassword("Password1", "New-password1", "New-password1");
|
changePasswordPage.changePassword("Password1", "New-password1", "New-password1");
|
||||||
|
|
||||||
Assert.assertEquals("Your password has been updated", profilePage.getSuccess());
|
Assert.assertEquals("Your password has been updated.", profilePage.getSuccess());
|
||||||
|
|
||||||
changePasswordPage.logout();
|
changePasswordPage.logout();
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ public class FederationProvidersIntegrationTest {
|
||||||
// Change password back to previous value
|
// Change password back to previous value
|
||||||
changePasswordPage.open();
|
changePasswordPage.open();
|
||||||
changePasswordPage.changePassword("New-password1", "Password1", "Password1");
|
changePasswordPage.changePassword("New-password1", "Password1", "Password1");
|
||||||
Assert.assertEquals("Your password has been updated", profilePage.getSuccess());
|
Assert.assertEquals("Your password has been updated.", profilePage.getSuccess());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -109,7 +109,7 @@ public class KerberosLdapTest extends AbstractKerberosTest {
|
||||||
|
|
||||||
// Successfully change password now
|
// Successfully change password now
|
||||||
changePasswordPage.changePassword("theduke", "newPass", "newPass");
|
changePasswordPage.changePassword("theduke", "newPass", "newPass");
|
||||||
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated"));
|
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated."));
|
||||||
changePasswordPage.logout();
|
changePasswordPage.logout();
|
||||||
|
|
||||||
// Login with old password doesn't work, but with new password works
|
// Login with old password doesn't work, but with new password works
|
||||||
|
@ -136,7 +136,7 @@ public class KerberosLdapTest extends AbstractKerberosTest {
|
||||||
loginPage.login("jduke", "newPass");
|
loginPage.login("jduke", "newPass");
|
||||||
changePasswordPage.assertCurrent();
|
changePasswordPage.assertCurrent();
|
||||||
changePasswordPage.changePassword("newPass", "theduke", "theduke");
|
changePasswordPage.changePassword("newPass", "theduke", "theduke");
|
||||||
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated"));
|
Assert.assertTrue(driver.getPageSource().contains("Your password has been updated."));
|
||||||
changePasswordPage.logout();
|
changePasswordPage.logout();
|
||||||
|
|
||||||
spnegoResponse.close();
|
spnegoResponse.close();
|
||||||
|
|
|
@ -128,7 +128,7 @@ public class RegisterTest {
|
||||||
registerPage.register("firstName", "lastName", "registerPasswordPolicy@email", "registerPasswordPolicy", "pass", "pass");
|
registerPage.register("firstName", "lastName", "registerPasswordPolicy@email", "registerPasswordPolicy", "pass", "pass");
|
||||||
|
|
||||||
registerPage.assertCurrent();
|
registerPage.assertCurrent();
|
||||||
Assert.assertEquals("Invalid password: minimum length 8", registerPage.getError());
|
Assert.assertEquals("Invalid password: minimum length 8.", registerPage.getError());
|
||||||
|
|
||||||
events.expectRegister("registerPasswordPolicy", "registerPasswordPolicy@email").user((String) null).error("invalid_registration").assertEvent();
|
events.expectRegister("registerPasswordPolicy", "registerPasswordPolicy@email").user((String) null).error("invalid_registration").assertEvent();
|
||||||
|
|
||||||
|
|
|
@ -394,7 +394,7 @@ public class ResetPasswordTest {
|
||||||
|
|
||||||
errorPage.assertCurrent();
|
errorPage.assertCurrent();
|
||||||
|
|
||||||
assertEquals("Failed to send email, please try again later", errorPage.getError());
|
assertEquals("Failed to send email, please try again later.", errorPage.getError());
|
||||||
|
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
|
|
||||||
|
@ -446,7 +446,7 @@ public class ResetPasswordTest {
|
||||||
|
|
||||||
updatePasswordPage.changePassword("invalid", "invalid");
|
updatePasswordPage.changePassword("invalid", "invalid");
|
||||||
|
|
||||||
assertEquals("Invalid password: minimum length 8", resetPasswordPage.getErrorMessage());
|
assertEquals("Invalid password: minimum length 8.", resetPasswordPage.getErrorMessage());
|
||||||
|
|
||||||
updatePasswordPage.changePassword("resetPasswordWithPasswordPolicy", "resetPasswordWithPasswordPolicy");
|
updatePasswordPage.changePassword("resetPasswordWithPasswordPolicy", "resetPasswordWithPasswordPolicy");
|
||||||
|
|
||||||
|
@ -504,7 +504,7 @@ public class ResetPasswordTest {
|
||||||
events.expectRequiredAction(EventType.UPDATE_PASSWORD).user(userId).session(sessionId).detail(Details.USERNAME, username).assertEvent();
|
events.expectRequiredAction(EventType.UPDATE_PASSWORD).user(userId).session(sessionId).detail(Details.USERNAME, username).assertEvent();
|
||||||
|
|
||||||
assertTrue(infoPage.isCurrent());
|
assertTrue(infoPage.isCurrent());
|
||||||
assertEquals("Your password has been updated", infoPage.getInfo());
|
assertEquals("Your password has been updated.", infoPage.getInfo());
|
||||||
|
|
||||||
loginPage.open();
|
loginPage.open();
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,8 @@ import org.junit.Test;
|
||||||
import org.keycloak.OAuth2Constants;
|
import org.keycloak.OAuth2Constants;
|
||||||
import org.keycloak.events.Details;
|
import org.keycloak.events.Details;
|
||||||
import org.keycloak.events.Errors;
|
import org.keycloak.events.Errors;
|
||||||
import org.keycloak.events.EventType;
|
|
||||||
import org.keycloak.models.Constants;
|
import org.keycloak.models.Constants;
|
||||||
import org.keycloak.models.RealmModel;
|
import org.keycloak.models.RealmModel;
|
||||||
import org.keycloak.protocol.oidc.OIDCLoginProtocolService;
|
|
||||||
import org.keycloak.services.managers.ClientSessionCode;
|
import org.keycloak.services.managers.ClientSessionCode;
|
||||||
import org.keycloak.services.managers.RealmManager;
|
import org.keycloak.services.managers.RealmManager;
|
||||||
import org.keycloak.testsuite.AssertEvents;
|
import org.keycloak.testsuite.AssertEvents;
|
||||||
|
@ -106,7 +104,7 @@ public class AuthorizationCodeTest {
|
||||||
oauth.doLogin("test-user@localhost", "password");
|
oauth.doLogin("test-user@localhost", "password");
|
||||||
|
|
||||||
String title = driver.getTitle();
|
String title = driver.getTitle();
|
||||||
Assert.assertTrue(title.startsWith("Success code="));
|
Assert.assertEquals("Success code", title);
|
||||||
|
|
||||||
String code = driver.findElement(By.id(OAuth2Constants.CODE)).getAttribute("value");
|
String code = driver.findElement(By.id(OAuth2Constants.CODE)).getAttribute("value");
|
||||||
keycloakRule.verifyCode(code);
|
keycloakRule.verifyCode(code);
|
||||||
|
@ -136,7 +134,7 @@ public class AuthorizationCodeTest {
|
||||||
driver.findElement(By.name("cancel")).click();
|
driver.findElement(By.name("cancel")).click();
|
||||||
|
|
||||||
String title = driver.getTitle();
|
String title = driver.getTitle();
|
||||||
Assert.assertTrue(title.equals("Error error=access_denied"));
|
Assert.assertEquals("Error code: access_denied",title);
|
||||||
|
|
||||||
String error = driver.findElement(By.id(OAuth2Constants.ERROR)).getText();
|
String error = driver.findElement(By.id(OAuth2Constants.ERROR)).getText();
|
||||||
assertEquals("access_denied", error);
|
assertEquals("access_denied", error);
|
||||||
|
|
Loading…
Reference in a new issue