KEYCLOAK-2305 Complete internationalization of admin console
This commit is contained in:
parent
c55b91ed32
commit
ea33af2c59
77 changed files with 1669 additions and 841 deletions
|
@ -71,7 +71,7 @@ applications=Applicationen
|
|||
account=Benutzerkonto
|
||||
federatedIdentity=Federated Identity
|
||||
authenticator=Authenticator
|
||||
sessions=Sessions
|
||||
sessions=Sessionen
|
||||
log=Log
|
||||
|
||||
configureAuthenticators=Authenticators konfigurieren
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Common messages
|
||||
enabled=de Enabled
|
||||
name=de Name
|
||||
displayName=de Display name
|
||||
displayNameHtml=de HTML Display name
|
||||
save=de Save
|
||||
cancel=de Cancel
|
||||
onText=AN
|
||||
|
@ -50,7 +52,6 @@ login-username=de Login Username
|
|||
password=de Password
|
||||
login-password=de Login Password
|
||||
login-theme=de Login Theme
|
||||
select-one=de Select one...
|
||||
login-theme.tooltip=de Select theme for login, TOTP, grant, registration, and forgot password pages.
|
||||
account-theme=de Account Theme
|
||||
account-theme.tooltip=de Select theme for user account management pages.
|
||||
|
@ -62,10 +63,12 @@ i18n-enabled=de Internationalization Enabled
|
|||
supported-locales=de Supported Locales
|
||||
supported-locales.placeholder=de Type a locale and enter
|
||||
default-locale=de Default Locale
|
||||
realm-cache-enabled=de Realm Cache Enabled
|
||||
realm-cache-enabled.tooltip=de Enable/disable cache for realm, client and role data.
|
||||
user-cache-enabled=de User Cache Enabled
|
||||
user-cache-enabled.tooltip=de Enable/disable user and user role mapping cache.
|
||||
realm-cache-clear=de Realm Cache
|
||||
realm-cache-clear.tooltip=de Clears all entries from the realm cache (this will clear entries for all realms)
|
||||
user-cache-clear=de User Cache
|
||||
user-cache-clear.tooltip=de Clears all entries from the user cache (this will clear entries for all realms)
|
||||
revoke-refresh-token=de Revoke Refresh Token
|
||||
revoke-refresh-token.tooltip=de If enabled refresh tokens can only be used once. Otherwise refresh tokens are not revoked when used and can be used multiple times.
|
||||
sso-session-idle=de SSO Session Idle
|
||||
seconds=de Seconds
|
||||
minutes=de Minutes
|
||||
|
@ -74,8 +77,12 @@ days=de Days
|
|||
sso-session-max=de SSO Session Max
|
||||
sso-session-idle.tooltip=de Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.
|
||||
sso-session-max.tooltip=de Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.
|
||||
offline-session-idle=de Offline Session Idle
|
||||
offline-session-idle.tooltip=de Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period, otherwise offline session will expire.
|
||||
access-token-lifespan=de Access Token Lifespan
|
||||
access-token-lifespan.tooltip=de Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.
|
||||
access-token-lifespan-for-implicit-flow=de Access Token Lifespan For Implicit Flow
|
||||
access-token-lifespan-for-implicit-flow.tooltip=de Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is separate timeout different to 'Access Token Lifespan'.
|
||||
client-login-timeout=de Client login timeout
|
||||
client-login-timeout.tooltip=de Max time an client has to finish the access token protocol. This should normally be 1 minute.
|
||||
login-timeout=de Login timeout
|
||||
|
@ -105,14 +112,15 @@ realm-tab-email=de Email
|
|||
realm-tab-themes=de Themes
|
||||
realm-tab-cache=de Cache
|
||||
realm-tab-tokens=de Tokens
|
||||
realm-tab-client-initial-access=de Initial Access Tokens
|
||||
realm-tab-security-defenses=de Security Defenses
|
||||
realm-tab-general=de General
|
||||
add-realm=de Add Realm
|
||||
add-realm=de Add realm
|
||||
|
||||
#Session settings
|
||||
realm-sessions=de Realm Sessions
|
||||
revocation=de Revocation
|
||||
logout-all=de Logout All
|
||||
logout-all=de Logout all
|
||||
active-sessions=de Active Sessions
|
||||
sessions=de Sessions
|
||||
not-before=de Not Before
|
||||
|
@ -137,7 +145,7 @@ tokenClaimName.tooltip=de Name of the claim to insert into the token. This can
|
|||
jsonType.label=de Claim JSON Type
|
||||
jsonType.tooltip=de JSON type that should be used to populate the json claim in the token. long, int, boolean, and String are valid values.
|
||||
includeInIdToken.label=de Add to ID token
|
||||
includeInIdTokenTooltip.Should the claim be added to the ID token?
|
||||
includeInIdToken.tooltip=de Should the claim be added to the ID token?
|
||||
includeInAccessToken.label=de Add to access token
|
||||
includeInAccessToken.tooltip=de Should the claim be added to the access token?
|
||||
|
||||
|
@ -170,6 +178,12 @@ client-protocol=de Client Protocol
|
|||
client-protocol.tooltip=de 'OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.
|
||||
access-type=de Access Type
|
||||
access-type.tooltip=de 'Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login.
|
||||
standard-flow-enabled=de Standard Flow Enabled
|
||||
standard-flow-enabled.tooltip=de This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.
|
||||
implicit-flow-enabled=de Implicit Flow Enabled
|
||||
implicit-flow-enabled.tooltip=de This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.
|
||||
direct-access-grants-enabled=de Direct Access Grants Enabled
|
||||
direct-access-grants-enabled.tooltip=de This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.
|
||||
service-accounts-enabled=de Service Accounts Enabled
|
||||
service-accounts-enabled.tooltip=de Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client.
|
||||
include-authnstatement=de Include AuthnStatement
|
||||
|
@ -267,6 +281,9 @@ import-client-certificate=de Import Client Certificate
|
|||
jwt-import.key-alias.tooltip=de Archive alias for your certificate.
|
||||
secret=de Secret
|
||||
regenerate-secret=de Regenerate Secret
|
||||
registrationAccessToken=de Registration access token
|
||||
registrationAccessToken.regenerate=de Regenerate registration access token
|
||||
registrationAccessToken.tooltip=de The registration access token provides access for clients to the client registration service.
|
||||
add-role=de Add Role
|
||||
role-name=de Role Name
|
||||
composite=de Composite
|
||||
|
@ -334,6 +351,8 @@ offline-tokens.tooltip=de Total number of offline tokens for this client.
|
|||
show-offline-tokens=de Show Offline Tokens
|
||||
show-offline-tokens.tooltip=de Warning, this is a potentially expensive operation depending on number of offline tokens.
|
||||
token-issued=de Token Issued
|
||||
last-access=de Last Access
|
||||
last-refresh=de Last Refresh
|
||||
key-export=de Key Export
|
||||
key-import=de Key Import
|
||||
export-saml-key=de Export SAML Key
|
||||
|
@ -354,13 +373,14 @@ service-account-is-not-enabled-for=de Service account is not enabled for {{clien
|
|||
create-protocol-mappers=de Create Protocol Mappers
|
||||
create-protocol-mapper=de Create Protocol Mapper
|
||||
protocol=de Protocol
|
||||
protocol.tooltip=de Protocol.
|
||||
protocol.tooltip=de Protocol...
|
||||
id=de ID
|
||||
mapper.name.tooltip=de Name of the mapper.
|
||||
mapper.consent-required.tooltip=de When granting temporary access, must the user consent to providing this data to the client?
|
||||
consent-text=de Consent Text
|
||||
consent-text.tooltip=de Text to display on consent page.
|
||||
mapper-type=de Mapper Type
|
||||
mapper-type.tooltip=de Type of the mapper
|
||||
select-role=de Select role
|
||||
select-role.tooltip=de Enter role in the textbox to the left, or click this button to browse and select the role you want.
|
||||
|
||||
|
@ -370,6 +390,8 @@ table-of-identity-providers=de Table of identity providers
|
|||
add-provider.placeholder=de Add provider...
|
||||
provider=de Provider
|
||||
gui-order=de GUI order
|
||||
first-broker-login-flow=de First Login Flow
|
||||
post-broker-login-flow=de Post Login Flow
|
||||
redirect-uri=de Redirect URI
|
||||
redirect-uri.tooltip=de The redirect uri to use when configuring the identity provider.
|
||||
alias=de Alias
|
||||
|
@ -389,6 +411,8 @@ update-profile-on-first-login.tooltip=de Define conditions under which a user ha
|
|||
trust-email=de Trust Email
|
||||
trust-email.tooltip=de If enabled then email provided by this provider is not verified even if verification is enabled for the realm.
|
||||
gui-order.tooltip=de Number defining order of the provider in GUI (eg. on Login page).
|
||||
first-broker-login-flow.tooltip=de Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that there is not yet existing Keycloak account linked with the authenticated identity provider account.
|
||||
post-broker-login-flow.tooltip=de Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this empty if you don't want any additional authenticators to be triggered after login with this identity provider. Also note, that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.
|
||||
openid-connect-config=de OpenID Connect Config
|
||||
openid-connect-config.tooltip=de OIDC SP and external IDP configuration.
|
||||
authorization-url=de Authorization URL
|
||||
|
@ -461,3 +485,417 @@ identity-provider-mappers=de Identity Provider Mappers
|
|||
create-identity-provider-mapper=de Create Identity Provider Mapper
|
||||
add-identity-provider-mapper=de Add Identity Provider Mapper
|
||||
client.description.tooltip=de Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example\: ${my_client_description}
|
||||
|
||||
expires=de Expires
|
||||
expiration=de Expiration
|
||||
expiration.tooltip=de Specifies how long the token should be valid
|
||||
count=de Count
|
||||
count.tooltip=de Specifies how many clients can be created using the token
|
||||
remainingCount=de Remaining Count
|
||||
created=de Created
|
||||
back=de Back
|
||||
initial-access-tokens=de Initial Access Tokens
|
||||
add-initial-access-tokens=de Add Initial Access Token
|
||||
initial-access-token=de Initial Access Token
|
||||
initial-access.copyPaste.tooltip=de Copy/paste the initial access token before navigating away from this page as it's not posible to retrieve later
|
||||
continue=de Continue
|
||||
initial-access-token.confirm.title=de Copy Initial Access Token
|
||||
initial-access-token.confirm.text=de Please copy and paste the initial access token before confirming as it can't be retrieved later
|
||||
|
||||
client-templates=de Client Templates
|
||||
client-templates.tooltip=de Client templates allow you to define common configuration that is shared between multiple clients
|
||||
|
||||
groups=de Groups
|
||||
|
||||
group.add-selected.tooltip=de Realm roles that can be assigned to the group.
|
||||
group.assigned-roles.tooltip=de Realm roles mapped to the group
|
||||
group.effective-roles.tooltip=de All realm role mappings. Some roles here might be inherited from a mapped composite role.
|
||||
group.available-roles.tooltip=de Assignable roles from this client.
|
||||
group.assigned-roles-client.tooltip=de Role mappings for this client.
|
||||
group.effective-roles-client.tooltip=de Role mappings for this client. Some roles here might be inherited from a mapped composite role.
|
||||
|
||||
default-roles=de Default Roles
|
||||
no-realm-roles-available=de No realm roles available
|
||||
|
||||
users=de Users
|
||||
user.add-selected.tooltip=de Realm roles that can be assigned to the user.
|
||||
user.assigned-roles.tooltip=de Realm roles mapped to the user
|
||||
user.effective-roles.tooltip=de All realm role mappings. Some roles here might be inherited from a mapped composite role.
|
||||
user.available-roles.tooltip=de Assignable roles from this client.
|
||||
user.assigned-roles-client.tooltip=de Role mappings for this client.
|
||||
user.effective-roles-client.tooltip=de Role mappings for this client. Some roles here might be inherited from a mapped composite role.
|
||||
default.available-roles.tooltip=de Realm level roles that can be assigned.
|
||||
realm-default-roles=de Realm Default Roles
|
||||
realm-default-roles.tooltip=de Realm level roles assigned to new users.
|
||||
default.available-roles-client.tooltip=de Roles from this client that are assignable as a default.
|
||||
client-default-roles=de Client Default Roles
|
||||
client-default-roles.tooltip=de Roles from this client assigned as a default role.
|
||||
composite.available-roles.tooltip=de Realm level roles associated with this composite role.
|
||||
composite.associated-roles.tooltip=de Realm level roles associated with this composite role.
|
||||
composite.available-roles-client.tooltip=de Roles from this client that you can associate to this composite role.
|
||||
composite.associated-roles-client.tooltip=de Client roles associated with this composite role.
|
||||
partial-import=de Partial Import
|
||||
|
||||
file=de File
|
||||
import-from-realm=de Import from realm
|
||||
import-users=de Import users
|
||||
import-clients=de Import clients
|
||||
import-identity-providers=de Import identity providers
|
||||
import-realm-roles=de Import realm roles
|
||||
import-client-roles=de Import client roles
|
||||
if-resource-exists=de If a resource exists
|
||||
fail=de Fail
|
||||
skip=de Skip
|
||||
overwrite=de Overwrite
|
||||
if-resource-exists.tooltip=de Specify what should be done if you try to import a resource that already exists.
|
||||
|
||||
action=de Action
|
||||
role-selector=de Role Selector
|
||||
realm-roles.tooltip=de Realm roles that can be selected.
|
||||
|
||||
select-a-role=de Select a role
|
||||
select-realm-role=de Select realm role
|
||||
client-roles.tooltip=de Client roles that can be selected.
|
||||
select-client-role=de Select client role
|
||||
|
||||
client-template=de Client Template
|
||||
client-template.tooltip=de Client template this client inherits configuration from
|
||||
client-saml-endpoint=de Client SAML Endpoint
|
||||
add-client-template=de Add client template
|
||||
|
||||
manage=de Manage
|
||||
authentication=de Authentication
|
||||
user-federation=de User Federation
|
||||
events=de Events
|
||||
realm-settings=de Realm Settings
|
||||
configure=de Configure
|
||||
select-realm=de Select realm
|
||||
add=de Add
|
||||
|
||||
client-template.name.tooltip=de Name of the client template. Must be unique in the realm
|
||||
client-template.description.tooltip=de Description of the client template
|
||||
client-template.protocol.tooltip=de Which SSO protocol configuration is being supplied by this client template
|
||||
|
||||
add-user-federation-provider=de Add user federation provider
|
||||
required-settings=de Required Settings
|
||||
provider-id=de Provider ID
|
||||
console-display-name=de Console Display Name
|
||||
console-display-name.tooltip=de Display name of provider when linked in admin console.
|
||||
priority=de Priority
|
||||
priority.tooltip=de Priority of provider when doing a user lookup. Lowest first.
|
||||
sync-settings=de Sync Settings
|
||||
periodic-full-sync=de Periodic Full Sync
|
||||
periodic-full-sync.tooltip=de Does periodic full synchronization of provider users to Keycloak should be enabled or not
|
||||
full-sync-period=de Full Sync Period
|
||||
full-sync-period.tooltip=de Period for full synchronization in seconds
|
||||
periodic-changed-users-sync=de Periodic Changed Users Sync
|
||||
periodic-changed-users-sync.tooltip=de Does periodic synchronization of changed or newly created provider users to Keycloak should be enabled or not
|
||||
changed-users-sync-period=de Changed Users Sync Period
|
||||
changed-users-sync-period.tooltip=de Period for synchronization of changed or newly created provider users in seconds
|
||||
synchronize-changed-users=de Synchronize changed users
|
||||
synchronize-all-users=de Synchronize all users
|
||||
kerberos-realm=de Kerberos Realm
|
||||
kerberos-realm.tooltip=de Name of kerberos realm. For example FOO.ORG
|
||||
server-principal=de Server Principal
|
||||
server-principal.tooltip=de Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG
|
||||
keytab=de KeyTab
|
||||
keytab.tooltip=de Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab
|
||||
debug=de Debug
|
||||
debug.tooltip=de Enable/disable debug logging to standard output for Krb5LoginModule.
|
||||
allow-password-authentication=de Allow Password Authentication
|
||||
allow-password-authentication.tooltip=de Enable/disable possibility of username/password authentication against Kerberos database
|
||||
edit-mode=de Edit Mode
|
||||
edit-mode.tooltip=de READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means user can change his password in Keycloak database and this one will be used instead of Kerberos password then
|
||||
ldap.edit-mode.tooltip=de READ_ONLY is a read only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.
|
||||
update-profile-first-login=de Update Profile First Login
|
||||
update-profile-first-login.tooltip=de Update profile on first login
|
||||
sync-registrations=de Sync Registrations
|
||||
ldap.sync-registrations.tooltip=de Should newly created users be created within LDAP store? Priority effects which provider is chose to sync the new user.
|
||||
vendor=de Vendor
|
||||
ldap.vendor.tooltip=de LDAP vendor (provider)
|
||||
username-ldap-attribute=de Username LDAP attribute
|
||||
ldap-attribute-name-for-username=de LDAP attribute name for username
|
||||
username-ldap-attribute.tooltip=de Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'. For Active directory it can be 'sAMAccountName' or 'cn'. The attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak.
|
||||
rdn-ldap-attribute=de RDN LDAP attribute
|
||||
ldap-attribute-name-for-user-rdn=de LDAP attribute name for user RDN
|
||||
rdn-ldap-attribute.tooltip=de Name of LDAP attribute, which is used as RDN (top attribute) of typical user DN. Usually it's the same as Username LDAP attribute, however it's not required. For example for Active directory it's common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'.
|
||||
uuid-ldap-attribute=de UUID LDAP attribute
|
||||
ldap-attribute-name-for-uuid=de LDAP attribute name for UUID
|
||||
uuid-ldap-attribute.tooltip=de Name of LDAP attribute, which is used as unique object identifier (UUID) for objects in LDAP. For many LDAP server vendors it's 'entryUUID' however some are different. For example for Active directory it should be 'objectGUID'. If your LDAP server really doesn't support the notion of UUID, you can use any other attribute, which is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN'.
|
||||
user-object-classes=de User Object Classes
|
||||
ldap-user-object-classes.placeholder=de LDAP User Object Classes (div. by comma)
|
||||
|
||||
ldap-connection-url=de LDAP connection URL
|
||||
ldap-users-dn=de LDAP Users DN
|
||||
ldap-bind-dn=de LDAP Bind DN
|
||||
ldap-bind-credentials=de LDAP Bind Credentials
|
||||
ldap-filter=de LDAP Filter
|
||||
ldap.user-object-classes.tooltip=de All values of LDAP objectClass attribute for users in LDAP divided by comma. For example: 'inetOrgPerson, organizationalPerson' . Newly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes.\
|
||||
|
||||
connection-url=de Connection URL
|
||||
ldap.connection-url.tooltip=de Connection URL to your LDAP server
|
||||
test-connection=de Test connection
|
||||
users-dn=de Users DN
|
||||
ldap.users-dn.tooltip=de Full DN of LDAP tree where your users are. This DN is parent of LDAP users. It could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'
|
||||
authentication-type=de Authentication Type
|
||||
ldap.authentication-type.tooltip=de LDAP Authentication type. Right now just 'none' (anonymous LDAP authentication) or 'simple' (Bind credential + Bind password authentication) mechanisms are available
|
||||
bind-dn=de Bind DN
|
||||
ldap.bind-dn.tooltip=de DN of LDAP admin, which will be used by Keycloak to access LDAP server
|
||||
bind-credential=de Bind Credential
|
||||
ldap.bind-credential.tooltip=de Password of LDAP admin
|
||||
test-authentication=de Test authentication
|
||||
custom-user-ldap-filter=de Custom User LDAP Filter
|
||||
ldap.custom-user-ldap-filter.tooltip=de Additional LDAP Filter for filtering searched users. Leave this empty if you don't need additional filter. Make sure that it starts with '(' and ends with ')'
|
||||
search-scope=de Search Scope
|
||||
ldap.search-scope.tooltip=de For one level, we search for users just in DNs specified by User DNs. For subtree, we search in whole of their subtree. See LDAP documentation for more details
|
||||
connection-pooling=de Connection Pooling
|
||||
ldap.connection-pooling.tooltip=de Does Keycloak should use connection pooling for accessing LDAP server
|
||||
ldap.pagination.tooltip=de Does the LDAP server support pagination.
|
||||
kerberos-integration=de Kerberos Integration
|
||||
allow-kerberos-authentication=de Allow Kerberos authentication
|
||||
ldap.allow-kerberos-authentication.tooltip=de Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server
|
||||
use-kerberos-for-password-authentication=de Use Kerberos For Password Authentication
|
||||
ldap.use-kerberos-for-password-authentication.tooltip=de Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API
|
||||
batch-size=de Batch Size
|
||||
ldap.batch-size.tooltip=de Count of LDAP users to be imported from LDAP to Keycloak within single transaction.
|
||||
ldap.periodic-full-sync.tooltip=de Does periodic full synchronization of LDAP users to Keycloak should be enabled or not
|
||||
ldap.periodic-changed-users-sync.tooltip=de Does periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not
|
||||
ldap.changed-users-sync-period.tooltip=de Period for synchronization of changed or newly created LDAP users in seconds
|
||||
user-federation-mappers=de User Federation Mappers
|
||||
create-user-federation-mapper=de Create user federation mapper
|
||||
add-user-federation-mapper=de Add user federation mapper
|
||||
provider-name=de Provider Name
|
||||
no-user-federation-providers-configured=de No user federation providers configured
|
||||
add-identity-provider=de Add identity provider
|
||||
add-identity-provider-link=de Add identity provider link
|
||||
identity-provider=de Identity Provider
|
||||
identity-provider-user-id=de Identity Provider User ID
|
||||
identity-provider-user-id.tooltip=de Unique ID of the user on the Identity Provider side
|
||||
identity-provider-username=de Identity Provider Username
|
||||
identity-provider-username.tooltip=de Username on the Identity Provider side
|
||||
pagination=de Pagination
|
||||
|
||||
browser-flow=de Browser Flow
|
||||
browser-flow.tooltip=de Select the flow you want to use for browser authentication.
|
||||
registration-flow=de Registration Flow
|
||||
registration-flow.tooltip=de Select the flow you want to use for registration.
|
||||
direct-grant-flow=de Direct Grant Flow
|
||||
direct-grant-flow.tooltip=de Select the flow you want to use for direct grant authentication.
|
||||
reset-credentials=de Reset Credentials
|
||||
reset-credentials.tooltip=de Select the flow you want to use when the user has forgotten their credentials.
|
||||
client-authentication=de Client Authentication
|
||||
client-authentication.tooltip=de Select the flow you want to use for authentication of clients.
|
||||
new=de New
|
||||
copy=de Copy
|
||||
add-execution=de Add execution
|
||||
add-flow=de Add flow
|
||||
auth-type=de Auth Type
|
||||
requirement=de Requirement
|
||||
config=de Config
|
||||
no-executions-available=de No executions available
|
||||
authentication-flows=de Authentication Flows
|
||||
create-authenticator-config=de Create authenticator config
|
||||
authenticator.alias.tooltip=de Name of the configuration
|
||||
otp-type=de OTP Type
|
||||
time-based=de Time Based
|
||||
counter-based=de Counter Based
|
||||
otp-type.tooltip=de totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.
|
||||
otp-hash-algorithm=de OTP Hash Algorithm
|
||||
otp-hash-algorithm.tooltip=de What hashing algorithm should be used to generate the OTP.
|
||||
number-of-digits=de Number of Digits
|
||||
otp.number-of-digits.tooltip=de How many digits should the OTP have?
|
||||
look-ahead-window=de Look Ahead Window
|
||||
otp.look-ahead-window.tooltip=de How far ahead should the server look just in case the token generator and server are out of time sync or counter sync?
|
||||
initial-counter=de Initial Counter
|
||||
otp.initial-counter.tooltip=de What should the initial counter value be?
|
||||
otp-token-period=de OTP Token Period
|
||||
otp-token-period.tooltip=de How many seconds should an OTP token be valid? Defaults to 30 seconds.
|
||||
table-of-password-policies=de Table of Password Policies
|
||||
add-policy.placeholder=de Add policy...
|
||||
policy-type=de Policy Type
|
||||
policy-value=de Policy Value
|
||||
admin-events=de Admin Events
|
||||
admin-events.tooltip=de Displays saved admin events for the realm. Events are related to admin account, for example a realm creation. To enable persisted events go to config.
|
||||
login-events=de Login Events
|
||||
filter=de Filter
|
||||
update=de Update
|
||||
reset=de Reset
|
||||
operation-types=de Operation Types
|
||||
select-operations.placeholder=de Select operations...
|
||||
resource-path=de Resource Path
|
||||
resource-path.tooltip=de Filter by resource path. Supports wildcards '*' to match a single part of the path and '**' matches multiple parts. For example 'realms/*/clients/asbc' matches client with id asbc in any realm, while or 'realms/master/**' matches anything in the master realm.
|
||||
date-(from)=de Date (From)
|
||||
date-(to)=de Date (To)
|
||||
authentication-details=de Authentication Details
|
||||
ip-address=de IP Address
|
||||
time=de Time
|
||||
operation-type=de Operation Type
|
||||
auth=de Auth
|
||||
representation=de Representation
|
||||
register=de Register
|
||||
required-action=de Required Action
|
||||
default-action=de Default Action
|
||||
auth.default-action.tooltip=de If enabled, any new user will have this required action assigned to it.
|
||||
no-required-actions-configured=de No required actions configured
|
||||
defaults-to-id=de Defaults to id
|
||||
flows=de Flows
|
||||
bindings=de Bindings
|
||||
required-actions=de Required Actions
|
||||
password-policy=de Password Policy
|
||||
otp-policy=de OTP Policy
|
||||
user-groups=de User Groups
|
||||
default-groups=de Default Groups
|
||||
groups.default-groups.tooltip=de Set of groups that new users will automatically join.
|
||||
cut=de Cut
|
||||
paste=de Paste
|
||||
|
||||
create-group=de Create group
|
||||
create-authenticator-execution=de Create Authenticator Execution
|
||||
create-form-action-execution=de Create Form Action Execution
|
||||
create-top-level-form=de Create Top Level Form
|
||||
flow.alias.tooltip=de Specifies display name for the flow.
|
||||
top-level-flow-type=de Top Level Flow Type
|
||||
flow.generic=de generic
|
||||
flow.client=de client
|
||||
top-level-flow-type.tooltip=de What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else
|
||||
create-execution-flow=de Create Execution Flow
|
||||
flow-type=de Flow Type
|
||||
flow.form.type=de form
|
||||
flow-type.tooltip=de What kind of form is it
|
||||
form-provider=de Form Provider
|
||||
default-groups.tooltip=de Newly created or registered users will automatically be added to these groups
|
||||
select-a-type.placeholder=de select a type
|
||||
available-groups=de Available Groups
|
||||
available-groups.tooltip=de Select a group you want to add as a default.
|
||||
value=de Value
|
||||
table-of-group-members=de Table of group members
|
||||
last-name=de Last Name
|
||||
first-name=de First Name
|
||||
email=de Email
|
||||
toggle-navigation=de Toggle navigation
|
||||
manage-account=de Manage account
|
||||
sign-out=de Sign Out
|
||||
server-info=de Server Info
|
||||
resource-not-found=de Resource <strong>not found</strong>...
|
||||
resource-not-found.instruction=de We could not find the resource you are looking for. Please make sure the URL you entered is correct.
|
||||
go-to-the-home-page=de Go to the home page »
|
||||
page-not-found=de Page <strong>not found</strong>...
|
||||
page-not-found.instruction=de We could not find the page you are looking for. Please make sure the URL you entered is correct.
|
||||
events.tooltip=de Displays saved events for the realm. Events are related to user accounts, for example a user login. To enable persisted events go to config.
|
||||
select-event-types.placeholder=de Select event types...
|
||||
events-config.tooltip=de Displays configuration options to enable persistence of user and admin events.
|
||||
select-an-action.placeholder=de Select an action...
|
||||
event-listeners.tooltip=de Configure what listeners receive events for the realm.
|
||||
login.save-events.tooltip=de If enabled login events are saved to the database which makes events available to the admin and account management consoles.
|
||||
clear-events.tooltip=de Deletes all events in the database.
|
||||
events.expiration.tooltip=de Sets the expiration for events. Expired events are periodically deleted from the database.
|
||||
admin-events-settings=de Admin Events Settings
|
||||
save-events=de Save events
|
||||
admin.save-events.tooltip=de If enabled admin events are saved to the database which makes events available to the admin console.
|
||||
saved-types.tooltip=de Configure what event types are saved.
|
||||
include-representation=de Include Representation
|
||||
include-representation.tooltip=de Include JSON representation for create and update requests.
|
||||
clear-admin-events.tooltip=de Deletes all admin events in the database.
|
||||
server-version=de Server Version
|
||||
info=de Info
|
||||
providers=de Providers
|
||||
server-time=de Server Time
|
||||
server-uptime=de Server Uptime
|
||||
memory=de Memory
|
||||
total-memory=de Total Memory
|
||||
free-memory=de Free Memory
|
||||
used-memory=de Used Memory
|
||||
system=de System
|
||||
current-working-directory=de Current Working Directory
|
||||
java-version=de Java Version
|
||||
java-vendor=de Java Vendor
|
||||
java-runtime=de Java Runtime
|
||||
java-vm=de Java VM
|
||||
java-vm-version=de Java VM Version
|
||||
java-home=de Java Home
|
||||
user-name=de User Name
|
||||
user-timezone=de User Timezone
|
||||
user-locale=de User Locale
|
||||
system-encoding=de System Encoding
|
||||
operating-system=de Operating System
|
||||
os-architecture=de OS Architecture
|
||||
spi=de SPI
|
||||
granted-roles=de Granted Roles
|
||||
granted-protocol-mappers=de Granted Protocol Mappers
|
||||
additional-grants=de Additional Grants
|
||||
revoke=de Revoke
|
||||
new-password=de New Password
|
||||
password-confirmation=de Password Confirmation
|
||||
credentials.temporary.tooltip=de If enabled user is required to change password on next login
|
||||
remove-totp=de Remove TOTP
|
||||
credentials.remove-totp.tooltip=de Remove one time password generator for user.
|
||||
reset-actions=de Reset Actions
|
||||
credentials.reset-actions.tooltip=de Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.
|
||||
reset-actions-email=de Reset Actions Email
|
||||
send-email=de Send email
|
||||
credentials.reset-actions-email.tooltip=de Sends an email to user with an embedded link. Clicking on link will allow the user to execute the reset actions. They will not have to login prior to this. For example, set the action to update password, click this button, and the user will be able to change their password without logging in.
|
||||
add-user=de Add user
|
||||
created-at=de Created At
|
||||
user-enabled=de User Enabled
|
||||
user-enabled.tooltip=de A disabled user cannot login.
|
||||
user-temporarily-locked=de User Temporarily Locked
|
||||
user-temporarily-locked.tooltip=de The user may have been locked due to failing to login too many times.
|
||||
unlock-user=de Unlock user
|
||||
federation-link=de Federation Link
|
||||
email-verified=de Email Verified
|
||||
email-verified.tooltip=de Has the user's email been verified?
|
||||
required-user-actions=de Required User Actions
|
||||
required-user-actions.tooltip=de Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.
|
||||
locale=de Locale
|
||||
select-one.placeholder=de Select one...
|
||||
impersonate=de Impersonate
|
||||
impersonate-user=de Impersonate user
|
||||
impersonate-user.tooltip=de Login as this user. If user is in same realm as you, your current login session will be logged out before you are logged in as this user.
|
||||
identity-provider-alias=de Identity Provider Alias
|
||||
provider-user-id=de Provider User ID
|
||||
provider-username=de Provider Username
|
||||
no-identity-provider-links-available=de No identity provider links available
|
||||
group-membership=de Group Membership
|
||||
leave=de Leave
|
||||
group-membership.tooltip=de Groups user is a member of. Select a listed group and click the Leave button to leave the group.
|
||||
membership.available-groups.tooltip=de Groups a user can join. Select a group and click the join button.
|
||||
table-of-realm-users=de Table of Realm Users
|
||||
view-all-users=de View all users
|
||||
unlock-users=de Unlock users
|
||||
no-users-available=de No users available
|
||||
users.instruction=de Please enter a search, or click on view all users
|
||||
consents=de Consents
|
||||
started=de Started
|
||||
logout-all-sessions=de Logout all sessions
|
||||
logout=de Logout
|
||||
new-name=de New Name
|
||||
ok=de Ok
|
||||
attributes=de Attributes
|
||||
role-mappings=de Role Mappings
|
||||
members=de Members
|
||||
details=de Details
|
||||
identity-provider-links=de Identity Provider Links
|
||||
register-required-action=de Register required action
|
||||
gender=de Gender
|
||||
address=de Address
|
||||
phone=de Phone
|
||||
profile-url=de Profile URL
|
||||
picture-url=de Picture URL
|
||||
website=de Website
|
||||
import-keys-and-cert=de Import keys and cert
|
||||
import-keys-and-cert.tooltip=de Upload the client's key pair and cert.
|
||||
upload-keys=de Upload Keys
|
||||
download-keys-and-cert=de Download keys and cert
|
||||
no-value-assigned.placeholder=de No value assigned
|
||||
remove=de Remove
|
||||
no-group-members=de No group members
|
||||
temporary=de Temporary
|
||||
join=de Join
|
||||
event-type=de Event Type
|
||||
events-config=de Events Config
|
||||
event-listeners=de Event Listeners
|
||||
login-events-settings=de Login Events Settings
|
||||
clear-events=de Clear Events
|
||||
saved-types=de Saved Types
|
||||
clear-admin-events=de Clear admin events
|
||||
clear-changes=de Clear changes
|
||||
|
|
|
@ -54,7 +54,6 @@ login-username=Login Username
|
|||
password=Password
|
||||
login-password=Login Password
|
||||
login-theme=Login Theme
|
||||
select-one=Select one...
|
||||
login-theme.tooltip=Select theme for login, TOTP, grant, registration, and forgot password pages.
|
||||
account-theme=Account Theme
|
||||
account-theme.tooltip=Select theme for user account management pages.
|
||||
|
@ -118,12 +117,12 @@ realm-tab-tokens=Tokens
|
|||
realm-tab-client-initial-access=Initial Access Tokens
|
||||
realm-tab-security-defenses=Security Defenses
|
||||
realm-tab-general=General
|
||||
add-realm=Add Realm
|
||||
add-realm=Add realm
|
||||
|
||||
#Session settings
|
||||
realm-sessions=Realm Sessions
|
||||
revocation=Revocation
|
||||
logout-all=Logout All
|
||||
logout-all=Logout all
|
||||
active-sessions=Active Sessions
|
||||
sessions=Sessions
|
||||
not-before=Not Before
|
||||
|
@ -148,7 +147,7 @@ tokenClaimName.tooltip=Name of the claim to insert into the token. This can be
|
|||
jsonType.label=Claim JSON Type
|
||||
jsonType.tooltip=JSON type that should be used to populate the json claim in the token. long, int, boolean, and String are valid values.
|
||||
includeInIdToken.label=Add to ID token
|
||||
includeInIdTokenTooltip.Should the claim be added to the ID token?
|
||||
includeInIdToken.tooltip=Should the claim be added to the ID token?
|
||||
includeInAccessToken.label=Add to access token
|
||||
includeInAccessToken.tooltip=Should the claim be added to the access token?
|
||||
|
||||
|
@ -171,7 +170,7 @@ select-file=Select file
|
|||
view-details=View details
|
||||
clear-import=Clear import
|
||||
client-id.tooltip=Specifies ID referenced in URI and tokens. For example 'my-client'. For SAML this is also the expected issuer value from authn requests
|
||||
client.name.tooltip=Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example\: ${my_client}
|
||||
client.name.tooltip=Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example\\: ${my_client}
|
||||
client.enabled.tooltip=Disabled clients cannot initiate a login or have obtain access tokens.
|
||||
consent-required=Consent Required
|
||||
consent-required.tooltip=If enabled users have to consent to client access.
|
||||
|
@ -374,14 +373,14 @@ service-account-is-not-enabled-for=Service account is not enabled for {{client}}
|
|||
create-protocol-mappers=Create Protocol Mappers
|
||||
create-protocol-mapper=Create Protocol Mapper
|
||||
protocol=Protocol
|
||||
protocol.tooltip=Protocol.
|
||||
protocol.tooltip=Protocol...
|
||||
id=ID
|
||||
mapper.name.tooltip=Name of the mapper.
|
||||
mapper.consent-required.tooltip=When granting temporary access, must the user consent to providing this data to the client?
|
||||
consent-text=Consent Text
|
||||
consent-text.tooltip=Text to display on consent page.
|
||||
mapper-type=Mapper Type
|
||||
|
||||
mapper-type.tooltip=Type of the mapper
|
||||
# realm identity providers
|
||||
identity-providers=Identity Providers
|
||||
table-of-identity-providers=Table of identity providers
|
||||
|
@ -488,14 +487,14 @@ realm=Realm
|
|||
identity-provider-mappers=Identity Provider Mappers
|
||||
create-identity-provider-mapper=Create Identity Provider Mapper
|
||||
add-identity-provider-mapper=Add Identity Provider Mapper
|
||||
client.description.tooltip=Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example\: ${my_client_description}
|
||||
client.description.tooltip=Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example\\: ${my_client_description}
|
||||
|
||||
expires=Expires
|
||||
expiration=Expiration
|
||||
expiration.tooltip=Specifies how long the token should be valid
|
||||
count=Count
|
||||
count.tooltip=Specifies how many clients can be created using the token
|
||||
remainingCount=Remaining count
|
||||
remainingCount=Remaining Count
|
||||
created=Created
|
||||
back=Back
|
||||
initial-access-tokens=Initial Access Tokens
|
||||
|
@ -505,3 +504,402 @@ initial-access.copyPaste.tooltip=Copy/paste the initial access token before navi
|
|||
continue=Continue
|
||||
initial-access-token.confirm.title=Copy Initial Access Token
|
||||
initial-access-token.confirm.text=Please copy and paste the initial access token before confirming as it can't be retrieved later
|
||||
|
||||
client-templates=Client Templates
|
||||
client-templates.tooltip=Client templates allow you to define common configuration that is shared between multiple clients
|
||||
|
||||
groups=Groups
|
||||
|
||||
group.add-selected.tooltip=Realm roles that can be assigned to the group.
|
||||
group.assigned-roles.tooltip=Realm roles mapped to the group
|
||||
group.effective-roles.tooltip=All realm role mappings. Some roles here might be inherited from a mapped composite role.
|
||||
group.available-roles.tooltip=Assignable roles from this client.
|
||||
group.assigned-roles-client.tooltip=Role mappings for this client.
|
||||
group.effective-roles-client.tooltip=Role mappings for this client. Some roles here might be inherited from a mapped composite role.
|
||||
|
||||
default-roles=Default Roles
|
||||
no-realm-roles-available=No realm roles available
|
||||
|
||||
users=Users
|
||||
user.add-selected.tooltip=Realm roles that can be assigned to the user.
|
||||
user.assigned-roles.tooltip=Realm roles mapped to the user
|
||||
user.effective-roles.tooltip=All realm role mappings. Some roles here might be inherited from a mapped composite role.
|
||||
user.available-roles.tooltip=Assignable roles from this client.
|
||||
user.assigned-roles-client.tooltip=Role mappings for this client.
|
||||
user.effective-roles-client.tooltip=Role mappings for this client. Some roles here might be inherited from a mapped composite role.
|
||||
default.available-roles.tooltip=Realm level roles that can be assigned.
|
||||
realm-default-roles=Realm Default Roles
|
||||
realm-default-roles.tooltip=Realm level roles assigned to new users.
|
||||
default.available-roles-client.tooltip=Roles from this client that are assignable as a default.
|
||||
client-default-roles=Client Default Roles
|
||||
client-default-roles.tooltip=Roles from this client assigned as a default role.
|
||||
composite.available-roles.tooltip=Realm level roles associated with this composite role.
|
||||
composite.associated-roles.tooltip=Realm level roles associated with this composite role.
|
||||
composite.available-roles-client.tooltip=Roles from this client that you can associate to this composite role.
|
||||
composite.associated-roles-client.tooltip=Client roles associated with this composite role.
|
||||
partial-import=Partial Import
|
||||
|
||||
file=File
|
||||
import-from-realm=Import from realm
|
||||
import-users=Import users
|
||||
import-clients=Import clients
|
||||
import-identity-providers=Import identity providers
|
||||
import-realm-roles=Import realm roles
|
||||
import-client-roles=Import client roles
|
||||
if-resource-exists=If a resource exists
|
||||
fail=Fail
|
||||
skip=Skip
|
||||
overwrite=Overwrite
|
||||
if-resource-exists.tooltip=Specify what should be done if you try to import a resource that already exists.
|
||||
|
||||
action=Action
|
||||
role-selector=Role Selector
|
||||
realm-roles.tooltip=Realm roles that can be selected.
|
||||
|
||||
select-a-role=Select a role
|
||||
select-realm-role=Select realm role
|
||||
client-roles.tooltip=Client roles that can be selected.
|
||||
select-client-role=Select client role
|
||||
|
||||
client-template=Client Template
|
||||
client-template.tooltip=Client template this client inherits configuration from
|
||||
client-saml-endpoint=Client SAML Endpoint
|
||||
add-client-template=Add client template
|
||||
|
||||
manage=Manage
|
||||
authentication=Authentication
|
||||
user-federation=User Federation
|
||||
events=Events
|
||||
realm-settings=Realm Settings
|
||||
configure=Configure
|
||||
select-realm=Select realm
|
||||
add=Add
|
||||
|
||||
client-template.name.tooltip=Name of the client template. Must be unique in the realm
|
||||
client-template.description.tooltip=Description of the client template
|
||||
client-template.protocol.tooltip=Which SSO protocol configuration is being supplied by this client template
|
||||
|
||||
add-user-federation-provider=Add user federation provider
|
||||
required-settings=Required Settings
|
||||
provider-id=Provider ID
|
||||
console-display-name=Console Display Name
|
||||
console-display-name.tooltip=Display name of provider when linked in admin console.
|
||||
priority=Priority
|
||||
priority.tooltip=Priority of provider when doing a user lookup. Lowest first.
|
||||
sync-settings=Sync Settings
|
||||
periodic-full-sync=Periodic Full Sync
|
||||
periodic-full-sync.tooltip=Does periodic full synchronization of provider users to Keycloak should be enabled or not
|
||||
full-sync-period=Full Sync Period
|
||||
full-sync-period.tooltip=Period for full synchronization in seconds
|
||||
periodic-changed-users-sync=Periodic Changed Users Sync
|
||||
periodic-changed-users-sync.tooltip=Does periodic synchronization of changed or newly created provider users to Keycloak should be enabled or not
|
||||
changed-users-sync-period=Changed Users Sync Period
|
||||
changed-users-sync-period.tooltip=Period for synchronization of changed or newly created provider users in seconds
|
||||
synchronize-changed-users=Synchronize changed users
|
||||
synchronize-all-users=Synchronize all users
|
||||
kerberos-realm=Kerberos Realm
|
||||
kerberos-realm.tooltip=Name of kerberos realm. For example FOO.ORG
|
||||
server-principal=Server Principal
|
||||
server-principal.tooltip=Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG
|
||||
keytab=KeyTab
|
||||
keytab.tooltip=Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab
|
||||
debug=Debug
|
||||
debug.tooltip=Enable/disable debug logging to standard output for Krb5LoginModule.
|
||||
allow-password-authentication=Allow Password Authentication
|
||||
allow-password-authentication.tooltip=Enable/disable possibility of username/password authentication against Kerberos database
|
||||
edit-mode=Edit Mode
|
||||
edit-mode.tooltip=READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means user can change his password in Keycloak database and this one will be used instead of Kerberos password then
|
||||
ldap.edit-mode.tooltip=READ_ONLY is a read only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.
|
||||
update-profile-first-login=Update Profile First Login
|
||||
update-profile-first-login.tooltip=Update profile on first login
|
||||
sync-registrations=Sync Registrations
|
||||
ldap.sync-registrations.tooltip=Should newly created users be created within LDAP store? Priority effects which provider is chose to sync the new user.
|
||||
vendor=Vendor
|
||||
ldap.vendor.tooltip=LDAP vendor (provider)
|
||||
username-ldap-attribute=Username LDAP attribute
|
||||
ldap-attribute-name-for-username=LDAP attribute name for username
|
||||
username-ldap-attribute.tooltip=Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'. For Active directory it can be 'sAMAccountName' or 'cn'. The attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak.
|
||||
rdn-ldap-attribute=RDN LDAP attribute
|
||||
ldap-attribute-name-for-user-rdn=LDAP attribute name for user RDN
|
||||
rdn-ldap-attribute.tooltip=Name of LDAP attribute, which is used as RDN (top attribute) of typical user DN. Usually it's the same as Username LDAP attribute, however it's not required. For example for Active directory it's common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'.
|
||||
uuid-ldap-attribute=UUID LDAP attribute
|
||||
ldap-attribute-name-for-uuid=LDAP attribute name for UUID
|
||||
uuid-ldap-attribute.tooltip=Name of LDAP attribute, which is used as unique object identifier (UUID) for objects in LDAP. For many LDAP server vendors it's 'entryUUID' however some are different. For example for Active directory it should be 'objectGUID'. If your LDAP server really doesn't support the notion of UUID, you can use any other attribute, which is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN'.
|
||||
user-object-classes=User Object Classes
|
||||
ldap-user-object-classes.placeholder=LDAP User Object Classes (div. by comma)
|
||||
|
||||
ldap-connection-url=LDAP connection URL
|
||||
ldap-users-dn=LDAP Users DN
|
||||
ldap-bind-dn=LDAP Bind DN
|
||||
ldap-bind-credentials=LDAP Bind Credentials
|
||||
ldap-filter=LDAP Filter
|
||||
ldap.user-object-classes.tooltip=All values of LDAP objectClass attribute for users in LDAP divided by comma. For example: 'inetOrgPerson, organizationalPerson' . Newly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes.
|
||||
|
||||
connection-url=Connection URL
|
||||
ldap.connection-url.tooltip=Connection URL to your LDAP server
|
||||
test-connection=Test connection
|
||||
users-dn=Users DN
|
||||
ldap.users-dn.tooltip=Full DN of LDAP tree where your users are. This DN is parent of LDAP users. It could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'
|
||||
authentication-type=Authentication Type
|
||||
ldap.authentication-type.tooltip=LDAP Authentication type. Right now just 'none' (anonymous LDAP authentication) or 'simple' (Bind credential + Bind password authentication) mechanisms are available
|
||||
bind-dn=Bind DN
|
||||
ldap.bind-dn.tooltip=DN of LDAP admin, which will be used by Keycloak to access LDAP server
|
||||
bind-credential=Bind Credential
|
||||
ldap.bind-credential.tooltip=Password of LDAP admin
|
||||
test-authentication=Test authentication
|
||||
custom-user-ldap-filter=Custom User LDAP Filter
|
||||
ldap.custom-user-ldap-filter.tooltip=Additional LDAP Filter for filtering searched users. Leave this empty if you don't need additional filter. Make sure that it starts with '(' and ends with ')'
|
||||
search-scope=Search Scope
|
||||
ldap.search-scope.tooltip=For one level, we search for users just in DNs specified by User DNs. For subtree, we search in whole of their subtree. See LDAP documentation for more details
|
||||
connection-pooling=Connection Pooling
|
||||
ldap.connection-pooling.tooltip=Does Keycloak should use connection pooling for accessing LDAP server
|
||||
ldap.pagination.tooltip=Does the LDAP server support pagination.
|
||||
kerberos-integration=Kerberos Integration
|
||||
allow-kerberos-authentication=Allow Kerberos authentication
|
||||
ldap.allow-kerberos-authentication.tooltip=Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server
|
||||
use-kerberos-for-password-authentication=Use Kerberos For Password Authentication
|
||||
ldap.use-kerberos-for-password-authentication.tooltip=Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API
|
||||
batch-size=Batch Size
|
||||
ldap.batch-size.tooltip=Count of LDAP users to be imported from LDAP to Keycloak within single transaction.
|
||||
ldap.periodic-full-sync.tooltip=Does periodic full synchronization of LDAP users to Keycloak should be enabled or not
|
||||
ldap.periodic-changed-users-sync.tooltip=Does periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not
|
||||
ldap.changed-users-sync-period.tooltip=Period for synchronization of changed or newly created LDAP users in seconds
|
||||
user-federation-mappers=User Federation Mappers
|
||||
create-user-federation-mapper=Create user federation mapper
|
||||
add-user-federation-mapper=Add user federation mapper
|
||||
provider-name=Provider Name
|
||||
no-user-federation-providers-configured=No user federation providers configured
|
||||
add-identity-provider=Add identity provider
|
||||
add-identity-provider-link=Add identity provider link
|
||||
identity-provider=Identity Provider
|
||||
identity-provider-user-id=Identity Provider User ID
|
||||
identity-provider-user-id.tooltip=Unique ID of the user on the Identity Provider side
|
||||
identity-provider-username=Identity Provider Username
|
||||
identity-provider-username.tooltip=Username on the Identity Provider side
|
||||
pagination=Pagination
|
||||
|
||||
browser-flow=Browser Flow
|
||||
browser-flow.tooltip=Select the flow you want to use for browser authentication.
|
||||
registration-flow=Registration Flow
|
||||
registration-flow.tooltip=Select the flow you want to use for registration.
|
||||
direct-grant-flow=Direct Grant Flow
|
||||
direct-grant-flow.tooltip=Select the flow you want to use for direct grant authentication.
|
||||
reset-credentials=Reset Credentials
|
||||
reset-credentials.tooltip=Select the flow you want to use when the user has forgotten their credentials.
|
||||
client-authentication=Client Authentication
|
||||
client-authentication.tooltip=Select the flow you want to use for authentication of clients.
|
||||
new=New
|
||||
copy=Copy
|
||||
add-execution=Add execution
|
||||
add-flow=Add flow
|
||||
auth-type=Auth Type
|
||||
requirement=Requirement
|
||||
config=Config
|
||||
no-executions-available=No executions available
|
||||
authentication-flows=Authentication Flows
|
||||
create-authenticator-config=Create authenticator config
|
||||
authenticator.alias.tooltip=Name of the configuration
|
||||
otp-type=OTP Type
|
||||
time-based=Time Based
|
||||
counter-based=Counter Based
|
||||
otp-type.tooltip=totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.
|
||||
otp-hash-algorithm=OTP Hash Algorithm
|
||||
otp-hash-algorithm.tooltip=What hashing algorithm should be used to generate the OTP.
|
||||
number-of-digits=Number of Digits
|
||||
otp.number-of-digits.tooltip=How many digits should the OTP have?
|
||||
look-ahead-window=Look Ahead Window
|
||||
otp.look-ahead-window.tooltip=How far ahead should the server look just in case the token generator and server are out of time sync or counter sync?
|
||||
initial-counter=Initial Counter
|
||||
otp.initial-counter.tooltip=What should the initial counter value be?
|
||||
otp-token-period=OTP Token Period
|
||||
otp-token-period.tooltip=How many seconds should an OTP token be valid? Defaults to 30 seconds.
|
||||
table-of-password-policies=Table of Password Policies
|
||||
add-policy.placeholder=Add policy...
|
||||
policy-type=Policy Type
|
||||
policy-value=Policy Value
|
||||
admin-events=Admin Events
|
||||
admin-events.tooltip=Displays saved admin events for the realm. Events are related to admin account, for example a realm creation. To enable persisted events go to config.
|
||||
login-events=Login Events
|
||||
filter=Filter
|
||||
update=Update
|
||||
reset=Reset
|
||||
operation-types=Operation Types
|
||||
select-operations.placeholder=Select operations...
|
||||
resource-path=Resource Path
|
||||
resource-path.tooltip=Filter by resource path. Supports wildcards '*' to match a single part of the path and '**' matches multiple parts. For example 'realms/*/clients/asbc' matches client with id asbc in any realm, while or 'realms/master/**' matches anything in the master realm.
|
||||
date-(from)=Date (From)
|
||||
date-(to)=Date (To)
|
||||
authentication-details=Authentication Details
|
||||
ip-address=IP Address
|
||||
time=Time
|
||||
operation-type=Operation Type
|
||||
auth=Auth
|
||||
representation=Representation
|
||||
register=Register
|
||||
required-action=Required Action
|
||||
default-action=Default Action
|
||||
auth.default-action.tooltip=If enabled, any new user will have this required action assigned to it.
|
||||
no-required-actions-configured=No required actions configured
|
||||
defaults-to-id=Defaults to id
|
||||
flows=Flows
|
||||
bindings=Bindings
|
||||
required-actions=Required Actions
|
||||
password-policy=Password Policy
|
||||
otp-policy=OTP Policy
|
||||
user-groups=User Groups
|
||||
default-groups=Default Groups
|
||||
groups.default-groups.tooltip=Set of groups that new users will automatically join.
|
||||
cut=Cut
|
||||
paste=Paste
|
||||
|
||||
create-group=Create group
|
||||
create-authenticator-execution=Create Authenticator Execution
|
||||
create-form-action-execution=Create Form Action Execution
|
||||
create-top-level-form=Create Top Level Form
|
||||
flow.alias.tooltip=Specifies display name for the flow.
|
||||
top-level-flow-type=Top Level Flow Type
|
||||
flow.generic=generic
|
||||
flow.client=client
|
||||
top-level-flow-type.tooltip=What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else
|
||||
create-execution-flow=Create Execution Flow
|
||||
flow-type=Flow Type
|
||||
flow.form.type=form
|
||||
flow-type.tooltip=What kind of form is it
|
||||
form-provider=Form Provider
|
||||
default-groups.tooltip=Newly created or registered users will automatically be added to these groups
|
||||
select-a-type.placeholder=select a type
|
||||
available-groups=Available Groups
|
||||
available-groups.tooltip=Select a group you want to add as a default.
|
||||
value=Value
|
||||
table-of-group-members=Table of group members
|
||||
last-name=Last Name
|
||||
first-name=First Name
|
||||
email=Email
|
||||
toggle-navigation=Toggle navigation
|
||||
manage-account=Manage account
|
||||
sign-out=Sign Out
|
||||
server-info=Server Info
|
||||
resource-not-found=Resource <strong>not found</strong>...
|
||||
resource-not-found.instruction=We could not find the resource you are looking for. Please make sure the URL you entered is correct.
|
||||
go-to-the-home-page=Go to the home page »
|
||||
page-not-found=Page <strong>not found</strong>...
|
||||
page-not-found.instruction=We could not find the page you are looking for. Please make sure the URL you entered is correct.
|
||||
events.tooltip=Displays saved events for the realm. Events are related to user accounts, for example a user login. To enable persisted events go to config.
|
||||
select-event-types.placeholder=Select event types...
|
||||
events-config.tooltip=Displays configuration options to enable persistence of user and admin events.
|
||||
select-an-action.placeholder=Select an action...
|
||||
event-listeners.tooltip=Configure what listeners receive events for the realm.
|
||||
login.save-events.tooltip=If enabled login events are saved to the database which makes events available to the admin and account management consoles.
|
||||
clear-events.tooltip=Deletes all events in the database.
|
||||
events.expiration.tooltip=Sets the expiration for events. Expired events are periodically deleted from the database.
|
||||
admin-events-settings=Admin Events Settings
|
||||
save-events=Save Events
|
||||
admin.save-events.tooltip=If enabled admin events are saved to the database which makes events available to the admin console.
|
||||
saved-types.tooltip=Configure what event types are saved.
|
||||
include-representation=Include Representation
|
||||
include-representation.tooltip=Include JSON representation for create and update requests.
|
||||
clear-admin-events.tooltip=Deletes all admin events in the database.
|
||||
server-version=Server Version
|
||||
info=Info
|
||||
providers=Providers
|
||||
server-time=Server Time
|
||||
server-uptime=Server Uptime
|
||||
memory=Memory
|
||||
total-memory=Total Memory
|
||||
free-memory=Free Memory
|
||||
used-memory=Used Memory
|
||||
system=System
|
||||
current-working-directory=Current Working Directory
|
||||
java-version=Java Version
|
||||
java-vendor=Java Vendor
|
||||
java-runtime=Java Runtime
|
||||
java-vm=Java VM
|
||||
java-vm-version=Java VM Version
|
||||
java-home=Java Home
|
||||
user-name=User Name
|
||||
user-timezone=User Timezone
|
||||
user-locale=User Locale
|
||||
system-encoding=System Encoding
|
||||
operating-system=Operating System
|
||||
os-architecture=OS Architecture
|
||||
spi=SPI
|
||||
granted-roles=Granted Roles
|
||||
granted-protocol-mappers=Granted Protocol Mappers
|
||||
additional-grants=Additional Grants
|
||||
revoke=Revoke
|
||||
new-password=New Password
|
||||
password-confirmation=Password Confirmation
|
||||
credentials.temporary.tooltip=If enabled user is required to change password on next login
|
||||
remove-totp=Remove TOTP
|
||||
credentials.remove-totp.tooltip=Remove one time password generator for user.
|
||||
reset-actions=Reset Actions
|
||||
credentials.reset-actions.tooltip=Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.
|
||||
reset-actions-email=Reset Actions Email
|
||||
send-email=Send email
|
||||
credentials.reset-actions-email.tooltip=Sends an email to user with an embedded link. Clicking on link will allow the user to execute the reset actions. They will not have to login prior to this. For example, set the action to update password, click this button, and the user will be able to change their password without logging in.
|
||||
add-user=Add user
|
||||
created-at=Created At
|
||||
user-enabled=User Enabled
|
||||
user-enabled.tooltip=A disabled user cannot login.
|
||||
user-temporarily-locked=User Temporarily Locked
|
||||
user-temporarily-locked.tooltip=The user may have been locked due to failing to login too many times.
|
||||
unlock-user=Unlock user
|
||||
federation-link=Federation Link
|
||||
email-verified=Email Verified
|
||||
email-verified.tooltip=Has the user's email been verified?
|
||||
required-user-actions=Required User Actions
|
||||
required-user-actions.tooltip=Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.
|
||||
locale=Locale
|
||||
select-one.placeholder=Select one...
|
||||
impersonate=Impersonate
|
||||
impersonate-user=Impersonate user
|
||||
impersonate-user.tooltip=Login as this user. If user is in same realm as you, your current login session will be logged out before you are logged in as this user.
|
||||
identity-provider-alias=Identity Provider Alias
|
||||
provider-user-id=Provider User ID
|
||||
provider-username=Provider Username
|
||||
no-identity-provider-links-available=No identity provider links available
|
||||
group-membership=Group Membership
|
||||
leave=Leave
|
||||
group-membership.tooltip=Groups user is a member of. Select a listed group and click the Leave button to leave the group.
|
||||
membership.available-groups.tooltip=Groups a user can join. Select a group and click the join button.
|
||||
table-of-realm-users=Table of Realm Users
|
||||
view-all-users=View all users
|
||||
unlock-users=Unlock users
|
||||
no-users-available=No users available
|
||||
users.instruction=Please enter a search, or click on view all users
|
||||
consents=Consents
|
||||
started=Started
|
||||
logout-all-sessions=Logout all sessions
|
||||
logout=Logout
|
||||
new-name=New Name
|
||||
ok=Ok
|
||||
attributes=Attributes
|
||||
role-mappings=Role Mappings
|
||||
members=Members
|
||||
details=Details
|
||||
identity-provider-links=Identity Provider Links
|
||||
register-required-action=Register required action
|
||||
gender=Gender
|
||||
address=Address
|
||||
phone=Phone
|
||||
profile-url=Profile URL
|
||||
picture-url=Picture URL
|
||||
website=Website
|
||||
import-keys-and-cert=Import keys and cert
|
||||
import-keys-and-cert.tooltip=Upload the client's key pair and cert.
|
||||
upload-keys=Upload Keys
|
||||
download-keys-and-cert=Download keys and cert
|
||||
no-value-assigned.placeholder=No value assigned
|
||||
remove=Remove
|
||||
no-group-members=No group members
|
||||
temporary=Temporary
|
||||
join=Join
|
||||
event-type=Event Type
|
||||
events-config=Events Config
|
||||
event-listeners=Event Listeners
|
||||
login-events-settings=Login Events Settings
|
||||
clear-events=Clear events
|
||||
saved-types=Saved Types
|
||||
clear-admin-events=Clear admin events
|
||||
clear-changes=Clear changes
|
||||
|
||||
|
|
|
@ -390,6 +390,7 @@ module.controller('RealmThemeCtrl', function($scope, Current, Realm, realm, serv
|
|||
});
|
||||
|
||||
module.controller('RealmCacheCtrl', function($scope, realm, RealmClearUserCache, RealmClearRealmCache, Notifications) {
|
||||
$scope.realm = angular.copy(realm);
|
||||
|
||||
$scope.clearUserCache = function() {
|
||||
RealmClearUserCache.save({ realm: realm.realm}, function () {
|
||||
|
|
|
@ -1,66 +1,66 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Authentication</h1>
|
||||
<h1>{{:: 'authentication' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label for="browser" class="col-md-2 control-label">Browser Flow</label>
|
||||
<label for="browser" class="col-md-2 control-label">{{:: 'browser-flow' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="browser" ng-model="realm.browserFlow" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Select the flow you want to use for browser authentication.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'browser-flow.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="registration" class="col-md-2 control-label">Registration Flow</label>
|
||||
<label for="registration" class="col-md-2 control-label">{{:: 'registration-flow' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="registration" ng-model="realm.registrationFlow" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Select the flow you want to use for registration.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'registration-flow.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="grant" class="col-md-2 control-label">Direct Grant Flow</label>
|
||||
<label for="grant" class="col-md-2 control-label">{{:: 'direct-grant-flow' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="grant" ng-model="realm.directGrantFlow" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Select the flow you want to use for direct grant authentication.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'direct-grant-flow.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="resetCredentials" class="col-md-2 control-label">Reset Credentials</label>
|
||||
<label for="resetCredentials" class="col-md-2 control-label">{{:: 'reset-credentials' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="resetCredentials" ng-model="realm.resetCredentialsFlow" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Select the flow you want to use when the user has forgotten their credentials.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'reset-credentials.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="resetCredentials" class="col-md-2 control-label">Client Authentication</label>
|
||||
<label for="resetCredentials" class="col-md-2 control-label">{{:: 'client-authentication' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="clientAuthentication" ng-model="realm.clientAuthenticationFlow" class="form-control" ng-options="flow.alias as flow.alias for flow in clientFlows">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Select the flow you want to use for authentication of clients.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-authentication.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Authentication</h1>
|
||||
<h1>{{:: 'authentication' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
|
@ -15,17 +15,17 @@
|
|||
</div>
|
||||
<i class="fa fa-question-circle text-muted" tooltip-trigger="mouseover mouseout" tooltip="{{flow.description}}" tooltip-placement="right"> </i>
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-default" data-ng-click="createFlow()">New</button>
|
||||
<button class="btn btn-default" data-ng-click="copyFlow()">Copy</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn" data-ng-click="removeFlow()">Delete</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn" data-ng-click="addExecution()">Add Execution</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn || flow.providerId === 'client-flow'" data-ng-click="addFlow()">Add Flow</button>
|
||||
<button class="btn btn-default" data-ng-click="createFlow()">{{:: 'new' | translate}}</button>
|
||||
<button class="btn btn-default" data-ng-click="copyFlow()">{{:: 'copy' | translate}}</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn" data-ng-click="removeFlow()">{{:: 'delete' | translate}}</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn" data-ng-click="addExecution()">{{:: 'add-execution' | translate}}</button>
|
||||
<button class="btn btn-default" data-ng-hide="flow.builtIn || flow.providerId === 'client-flow'" data-ng-click="addFlow()">{{:: 'add-flow' | translate}}</button>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="executions.length == 0">
|
||||
<th colspan="{{levelmax + 1}}">Auth Type</th>
|
||||
<th colspan="{{choicesmax}}">Requirement</th>
|
||||
<th colspan="{{levelmax + 1}}">{{:: 'auth-type' | translate}}</th>
|
||||
<th colspan="{{choicesmax}}">{{:: 'requirement' | translate}}</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -48,19 +48,19 @@
|
|||
<td ng-repeat="emptee in execution.empties"></td>
|
||||
<td>
|
||||
<div class="dropdown" data-ng-hide="flow.builtIn && !execution.configurable">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Actions <b class="caret"></b></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{:: 'actions' | translate}} <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu" >
|
||||
<li data-ng-hide="flow.builtIn"><a href="" ng-click="removeExecution(execution)">Delete</a></li>
|
||||
<li data-ng-hide="flow.builtIn || !execution.authenticationFlow"><a href="" ng-click="addSubFlowExecution(execution)">Add Execution</a></li>
|
||||
<li data-ng-hide="flow.builtIn || !execution.authenticationFlow"><a href="" ng-click="addSubFlow(execution)">Add Flow</a></li>
|
||||
<li data-ng-show="execution.configurable && execution.authenticationConfig == null"><a href="#/create/authentication/{{realm.realm}}/flows/{{flow.id}}/execution/{{execution.id}}/provider/{{execution.providerId}}">Config</a></li>
|
||||
<li data-ng-show="execution.configurable && execution.authenticationConfig != null"><a href="#/realms/{{realm.realm}}/authentication/flows/{{flow.id}}/config/{{execution.providerId}}/{{execution.authenticationConfig}}">Config</a></li>
|
||||
<li data-ng-hide="flow.builtIn"><a href="" ng-click="removeExecution(execution)">{{:: 'delete' | translate}}</a></li>
|
||||
<li data-ng-hide="flow.builtIn || !execution.authenticationFlow"><a href="" ng-click="addSubFlowExecution(execution)">{{:: 'add-execution' | translate}}</a></li>
|
||||
<li data-ng-hide="flow.builtIn || !execution.authenticationFlow"><a href="" ng-click="addSubFlow(execution)">{{:: 'add-flow' | translate}}</a></li>
|
||||
<li data-ng-show="execution.configurable && execution.authenticationConfig == null"><a href="#/create/authentication/{{realm.realm}}/flows/{{flow.id}}/execution/{{execution.id}}/provider/{{execution.providerId}}">{{:: 'config' | translate}}</a></li>
|
||||
<li data-ng-show="execution.configurable && execution.authenticationConfig != null"><a href="#/realms/{{realm.realm}}/authentication/flows/{{flow.id}}/config/{{execution.providerId}}/{{execution.authenticationConfig}}">{{:: 'config' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="executions.length == 0">
|
||||
<td>No executions available</td>
|
||||
<td>{{:: 'no-executions-available' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/authentication/flows">Authentication Flows</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/authentication/flows">{{:: 'authentication-flows' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/authentication/flows/{{flow.alias}}">{{flow.alias | capitalize}}</a></li>
|
||||
<li class="active" data-ng-show="create">Create Authenticator Config</li>
|
||||
<li class="active" data-ng-show="create">{{:: 'create-authenticator-config' | translate}}</li>
|
||||
<li class="active" data-ng-hide="create">{{config.alias}}</li>
|
||||
</ol>
|
||||
|
||||
<h1 data-ng-show="create">Create Authenticator Config</h1>
|
||||
<h1 data-ng-show="create">{{:: 'create-authenticator-config' | translate}}</h1>
|
||||
<h1 data-ng-hide="create">{{config.alias|capitalize}}<a><i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
||||
data-ng-hide="changed" data-ng-click="remove()"></i></a></h1>
|
||||
|
||||
|
@ -15,32 +15,32 @@
|
|||
|
||||
<fieldset>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-md-2 control-label" for="configId">ID </label>
|
||||
<label class="col-md-2 control-label" for="configId">{{:: 'id' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="configId" type="text" ng-model="config.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="name">Alias</label>
|
||||
<label class="col-md-2 control-label" for="name">{{:: 'alias' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="name" type="text" ng-model="config.alias" data-ng-readonly="!create">
|
||||
</div>
|
||||
<kc-tooltip>Name of the configuration.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'authenticator.alias.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<kc-provider-config realm="realm" config="config.config" properties="configType.properties"></kc-provider-config>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,62 +1,62 @@
|
|||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="username">Username</label>
|
||||
<label class="col-md-2 control-label" for="username">{{:: 'username' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.username" name="username" id="username" onoffswitch />
|
||||
<input ng-model="claims.username" name="username" id="username" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="claimName">Name</label>
|
||||
<label class="col-md-2 control-label" for="claimName">{{:: 'name' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.name" name="claimName" id="claimName" onoffswitch />
|
||||
<input ng-model="claims.name" name="claimName" id="claimName" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="email">Email</label>
|
||||
<label class="col-md-2 control-label" for="email">{{:: 'email' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.email" name="email" id="email" onoffswitch />
|
||||
<input ng-model="claims.email" name="email" id="email" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="gender">Gender</label>
|
||||
<label class="col-md-2 control-label" for="gender">{{:: 'gender' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.gender" name="gender" id="gender" onoffswitch />
|
||||
<input ng-model="claims.gender" name="gender" id="gender" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="address">Address</label>
|
||||
<label class="col-md-2 control-label" for="address">{{:: 'address' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.address" name="address" id="address" onoffswitch />
|
||||
<input ng-model="claims.address" name="address" id="address" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="locale">Locale</label>
|
||||
<label class="col-md-2 control-label" for="locale">{{:: 'locale' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.locale" name="locale" id="locale" onoffswitch />
|
||||
<input ng-model="claims.locale" name="locale" id="locale" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="phone">Phone</label>
|
||||
<label class="col-md-2 control-label" for="phone">{{:: 'phone' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.phone" name="phone" id="phone" onoffswitch />
|
||||
<input ng-model="claims.phone" name="phone" id="phone" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="profile">Profile URL</label>
|
||||
<label class="col-md-2 control-label" for="profile">{{:: 'profile-url' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.profile" name="profile" id="profile" onoffswitch />
|
||||
<input ng-model="claims.profile" name="profile" id="profile" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="picture">Picture URL</label>
|
||||
<label class="col-md-2 control-label" for="picture">{{:: 'picture-url' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.picture" name="picture" id="picture" onoffswitch />
|
||||
<input ng-model="claims.picture" name="picture" id="picture" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="website">Website</label>
|
||||
<label class="col-md-2 control-label" for="website">{{:: 'website' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.website" name="website" id="website" onoffswitch />
|
||||
<input ng-model="claims.website" name="website" id="website" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
<form class="form-horizontal" name="clusteringForm" novalidate kc-read-only="!access.manageClients" data-ng-show="create || registered">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="host">Host</label>
|
||||
<label class="col-md-2 control-label" for="host">{{:: 'host' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-disabled="!create" class="form-control" type="text" id="host" name="host" data-ng-model="node.host" required>
|
||||
</div>
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<kc-tooltip>{{:: 'client-protocol.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="protocol">Client Template</label>
|
||||
<label class="col-md-2 control-label" for="protocol">{{:: 'client-template' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="template"
|
||||
|
@ -67,7 +67,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Client template this client inherits configuration from</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-template.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="protocol == 'openid-connect'">
|
||||
<label class="col-md-2 control-label" for="accessType">{{:: 'access-type' | translate}}</label>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button class="btn btn-default" data-ng-click="done()">{{:: 'Back' | translate}}</button>
|
||||
<button class="btn btn-default" data-ng-click="done()">{{:: 'back' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend collapsed><span class="text">Import Keys and Cert</span> <kc-tooltip>Upload the client's key pair and cert.</kc-tooltip></legend>
|
||||
<legend collapsed><span class="text">{{:: 'import-keys-and-cert' | translate}}</span> <kc-tooltip>{{:: 'import-keys-and-cert.tooltip' | translate}}</kc-tooltip></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="uploadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="uploadKeyFormat"
|
||||
|
@ -20,34 +20,34 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'archive-format.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
||||
<label class="col-md-2 control-label" for="uploadKeyAlias">{{:: 'key-alias' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
||||
</div>
|
||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'key-alias.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
||||
<label class="col-md-2 control-label" for="keyPassword">{{:: 'key-password' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="uploadKeyPassword" name="uploadKeyPassword" data-ng-model="uploadKeyPassword" autofocus required>
|
||||
</div>
|
||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'key-password.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="uploadStorePassword">Store Password</label>
|
||||
<label class="col-md-2 control-label" for="uploadStorePassword">{{:: 'store-password' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
||||
</div>
|
||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'store-password.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Upload Keys </label>
|
||||
<label class="col-md-2 control-label">{{:: 'upload-keys' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>{{:: 'choose-a-file.placeholder' | translate}}</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
|
@ -56,14 +56,14 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">Upload</button>
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">{{:: 'cancel' | translate}}</button>
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">{{:: 'upload' | translate}}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-group col-sm-10" data-ng-hide="!keyInfo.privateKey">
|
||||
<legend collapsed><span class="text">Download Keys and Cert</span> <kc-tooltip>Client key pair, cert, and realm certificate will be stuffed into a PKCS12 or Java keystore that you can use in your clients.</kc-tooltip></legend>
|
||||
<legend collapsed><span class="text">{{:: 'download-keys-and-cert' | translate}}</span> <kc-tooltip>Client key pair, cert, and realm certificate will be stuffed into a PKCS12 or Java keystore that you can use in your clients.</kc-tooltip></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="downloadKeyFormat">{{:: 'archive-format' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="downloadKeyFormat"
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<label class="col-md-2 control-label" for="fullScopeAllowed">{{:: 'full-scope-allowed' | translate}}</label>
|
||||
<kc-tooltip>Client template has full scope allowed, which means this client will have the full scope of all roles.</kc-tooltip>
|
||||
<div class="col-md-1">
|
||||
<input ng-model="template.fullScopeAllowed" name="fullScopeAllowed" id="fullScopeAllowed" ng-disabled="true" onoffswitch />
|
||||
<input ng-model="template.fullScopeAllowed" name="fullScopeAllowed" id="fullScopeAllowed" ng-disabled="true" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<i>inherited</i>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">Client Templates</a></li>
|
||||
<li data-ng-show="create">Add Client Template</li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">{{:: 'client-templates' | translate}}</a></li>
|
||||
<li data-ng-show="create">{{:: 'add-client-template' | translate}}</li>
|
||||
<li data-ng-hide="create">{{template.name}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -11,21 +11,21 @@
|
|||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="name">Name </label>
|
||||
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} </label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="template.name" autofocus>
|
||||
</div>
|
||||
<kc-tooltip>Name of the client template. Must be unique in the realm</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-template.name.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="description" name="description" data-ng-model="template.description">
|
||||
</div>
|
||||
<kc-tooltip>Description of the client template</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-template.description.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="protocol">Protocol</label>
|
||||
<label class="col-md-2 control-label" for="protocol">{{:: 'protocol' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="protocol"
|
||||
|
@ -35,7 +35,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Which SSO protocol configuration is being supplied by this client template</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-template.protocol.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span>Client Templates</span>
|
||||
<kc-tooltip>Client templates allow you to define common configuration that is shared between multiple clients</kc-tooltip>
|
||||
<span>{{:: 'client-templates' | translate}}</span>
|
||||
<kc-tooltip>{{:: 'client-templates.tooltip' | translate}}</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">Client Templates</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">{{:: 'client-templates' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates/{{template.id}}">{{template.name}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates/{{template.id}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||
<li class="active">{{:: 'add-builtin-protocol-mappers' | translate}}</li>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">Client Templates</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">{{:: 'client-templates' | translate}}</a></li>
|
||||
<li>{{template.name}}</li>
|
||||
</ol>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{model.realm.realm}}/client-templates">Client Templates</a></li>
|
||||
<li><a href="#/realms/{{model.realm.realm}}/client-templates">{{:: 'client-templates' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{model.realm.realm}}/client-templates/{{model.template.id}}">{{model.template.name}}</a></li>
|
||||
<li><a href="#/realms/{{model.realm.realm}}/client-templates/{{model.template.id}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||
<li class="active" data-ng-show="model.create">{{:: 'create-protocol-mappers' | translate}}</li>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">Client Templates</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/client-templates">{{:: 'client-templates' | translate}}</a></li>
|
||||
<li>{{template.name}}</li>
|
||||
</ol>
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<kc-tooltip>{{:: 'client-protocol.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="protocol">Client Template</label>
|
||||
<label class="col-md-2 control-label" for="protocol">{{:: 'client-template' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="template"
|
||||
|
@ -55,7 +55,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Client template this client inherits configuration from</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'client-template.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="protocol == 'saml'">
|
||||
<label class="col-md-2 control-label" for="rootUrl">{{:: 'root-url' | translate}} <span class="required">*</span></label>
|
||||
|
@ -65,7 +65,7 @@
|
|||
<kc-tooltip>{{:: 'root-url.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-md-2 control-label" for="masterSamlUrl">Client SAML Endpoint <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label" for="masterSamlUrl">{{:: 'client-saml-endpoint' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
||||
data-ng-model="client.adminUrl">
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<div>
|
||||
<h1 data-ng-show="parentFlow.providerId == 'basic-flow'">Create Authenticator Execution</h1>
|
||||
<h1 data-ng-show="parentFlow.providerId == 'for-flow'">Create Form Action Execution</h1>
|
||||
<h1 data-ng-show="parentFlow.providerId == 'basic-flow'">{{:: 'create-authenticator-execution' | translate}}</h1>
|
||||
<h1 data-ng-show="parentFlow.providerId == 'for-flow'">{{:: 'create-form-action-execution' | translate}}</h1>
|
||||
</div>
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="provider">Provider</label>
|
||||
<label class="col-md-2 control-label" for="provider">{{:: 'provider' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="provider"
|
||||
|
@ -19,8 +19,8 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save>Save</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Create Execution Flow</h1>
|
||||
<h1>{{:: 'create-execution-flow' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="alias">Alias </label>
|
||||
<label class="col-md-2 control-label" for="alias">{{:: 'alias' | translate}} </label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="alias" name="alias" data-ng-model="flow.alias" autofocus required>
|
||||
</div>
|
||||
<kc-tooltip>Specifies display name for the flow.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'flow.alias.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="flow.description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="flow.type == 'client-flow'">
|
||||
<label class="col-md-2 control-label" for="flowType">Flow Type</label>
|
||||
<label class="col-md-2 control-label" for="flowType">{{:: 'flow-type' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="flowType"
|
||||
ng-model="flow.type">
|
||||
<option value="basic-flow">generic</option>
|
||||
<option value="form-flow">form</option>
|
||||
<option value="basic-flow">{{:: 'flow.generic.type' | translate}}</option>
|
||||
<option value="form-flow">{{:: 'flow.form.type' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>What kind of form is it</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'flow-type.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="flow.type == 'form-flow'">
|
||||
<label class="col-md-2 control-label" for="provider">Form Provider</label>
|
||||
<label class="col-md-2 control-label" for="provider">{{:: 'form-provider' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="provider"
|
||||
|
@ -45,8 +45,8 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save>Save</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,40 +1,40 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Create Top Level Flow</h1>
|
||||
<h1>{{:: 'create-top-level-form' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="alias">Alias </label>
|
||||
<label class="col-md-2 control-label" for="alias">{{:: 'alias' | translate}} </label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="alias" name="alias" data-ng-model="flow.alias" autofocus required>
|
||||
</div>
|
||||
<kc-tooltip>Specifies display name for the flow.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'flow.alias.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="flow.description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="flowType">Top Level Flow Type</label>
|
||||
<label class="col-md-2 control-label" for="flowType">{{:: 'top-level-flow-type' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="flowType"
|
||||
ng-model="flow.providerId">
|
||||
<option value="basic-flow">generic</option>
|
||||
<option value="client-flow">client</option>
|
||||
<option value="basic-flow">{{:: 'flow.generic' | translate}}</option>
|
||||
<option value="client-flow">{{:: 'flow.client' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'top-level-flow-type.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save>Save</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<div>
|
||||
<h1>Create Group</h1>
|
||||
<h1>{{:: 'create-group' | translate}}</h1>
|
||||
</div>
|
||||
<form class="form-horizontal" name="clientForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"for="name">Name <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label"for="name">{{:: 'name' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="group.name" autofocus
|
||||
required >
|
||||
|
@ -15,8 +15,8 @@
|
|||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
<tr>
|
||||
<th class="kc-table-actions" colspan="5">
|
||||
<div class="form-inline">
|
||||
<label class="control-label">Default Groups</label>
|
||||
<kc-tooltip>Newly created or registered users will automatically be added to these groups</kc-tooltip>
|
||||
<label class="control-label">{{:: 'default-groups' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'default-groups.tooltip' | translate}}</kc-tooltip>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<button id="removeDefaultGroup" class="btn btn-default" ng-click="removeDefaultGroup()">Remove</button>
|
||||
<button id="removeDefaultGroup" class="btn btn-default" ng-click="removeDefaultGroup()">{{:: 'remove' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -29,7 +29,7 @@
|
|||
<select id="defaultGroups" class="form-control" size=5
|
||||
ng-model="selectedGroup"
|
||||
ng-options="r.path for r in defaultGroups">
|
||||
<option style="display:none" value="">select a type</option>
|
||||
<option style="display:none" value="">{{:: 'select-a-type.placeholder' | translate}}</option>
|
||||
</select>
|
||||
|
||||
|
||||
|
@ -45,11 +45,11 @@
|
|||
<th class="kc-table-actions" colspan="5">
|
||||
|
||||
<div class="form-inline">
|
||||
<label class="control-label">Available Groups</label>
|
||||
<kc-tooltip>Select a group you want to add as a default.</kc-tooltip>
|
||||
<label class="control-label">{{:: 'available-groups' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'available-groups.tooltip' | translate}}</kc-tooltip>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<button id="addDefaultGroup" class="btn btn-default" ng-click="addDefaultGroup()">Add</button>
|
||||
<button id="addDefaultGroup" class="btn btn-default" ng-click="addDefaultGroup()">{{:: 'add' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">{{:: 'user-federation' | translate}}</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
<li data-ng-show="create">{{:: 'add-user-federation-provider' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<kc-tabs-user-federation></kc-tabs-user-federation>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<legend><span class="text">{{:: 'required-settings' | translate}}</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<label class="col-md-2 control-label" for="providerId">{{:: 'provider-id' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">{{:: 'console-display-name' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="{{:: 'defaults-to-id' | translate}}">
|
||||
</div>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'console-display-name.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<label class="col-md-2 control-label" for="priority">{{:: 'priority' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'priority.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div data-ng-repeat="option in providerFactory.options" class="form-group">
|
||||
<label class="col-md-2 control-label">{{option|capitalize}} </label>
|
||||
|
@ -43,50 +43,50 @@
|
|||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Sync settings</span></legend>
|
||||
<legend><span class="text">{{:: 'sync-settings' | translate}}</span></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">{{:: 'periodic-full-sync' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch />
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does periodic full synchronization of provider users to Keycloak should be enabled or not</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'periodic-full-sync.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="fullSyncEnabled">
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">{{:: 'full-sync-period' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" />
|
||||
</div>
|
||||
<kc-tooltip>Period for full synchronization in seconds</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'full-sync-period.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">{{:: 'periodic-changed-users-sync' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch />
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does periodic synchronization of changed or newly created provider users to Keycloak should be enabled or not</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'periodic-changed-users-sync.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="changedSyncEnabled">
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">{{:: 'changed-users-sync-period' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" />
|
||||
</div>
|
||||
<kc-tooltip>Period for synchronization of changed or newly created provider users in seconds</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'changed-users-sync-period.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">{{:: 'synchronize-changed-users' | translate}}</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">{{:: 'synchronize-all-users' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,74 +1,74 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">{{:: 'user-federation' | translate}}</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
<li data-ng-show="create">{{:: 'add-user-federation-provider' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<kc-tabs-user-federation></kc-tabs-user-federation>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<legend><span class="text">{{:: 'required-settings' | translate}}</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<label class="col-md-2 control-label" for="providerId">{{:: 'provider-id' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">{{:: 'console-display-name' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="{{:: 'defaults-to-id' | translate}}">
|
||||
</div>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'console-display-name.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<label class="col-md-2 control-label" for="priority">{{:: 'priority' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'priority.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> Kerberos Realm</label>
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> {{:: 'kerberos-realm' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="kerberosRealm" type="text" ng-model="instance.config.kerberosRealm" required>
|
||||
</div>
|
||||
<kc-tooltip>Name of kerberos realm. For example FOO.ORG</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'kerberos-realm.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> Server principal</label>
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> {{:: 'server-principal' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="serverPrincipal" type="text" ng-model="instance.config.serverPrincipal" required>
|
||||
</div>
|
||||
<kc-tooltip>Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'server-principal.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> KeyTab</label>
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> {{:: 'keytab' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="keyTab" type="text" ng-model="instance.config.keyTab" required>
|
||||
</div>
|
||||
<kc-tooltip>Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'keytab.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="debug">Debug </label>
|
||||
<label class="col-md-2 control-label" for="debug">{{:: 'debug' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch />
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Enable/disable debug logging to standard output for Krb5LoginModule.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'debug.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="allowPasswordAuthentication">Allow Password Authentication </label>
|
||||
<label class="col-md-2 control-label" for="allowPasswordAuthentication">{{:: 'allow-password-authentication' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.allowPasswordAuthentication" id="allowPasswordAuthentication" onoffswitch />
|
||||
<input ng-model="instance.config.allowPasswordAuthentication" id="allowPasswordAuthentication" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Enable/disable possibility of username/password authentication against Kerberos database</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'allow-password-authentication.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowPasswordAuthentication">
|
||||
<label class="col-md-2 control-label" for="editMode">Edit mode</label>
|
||||
<label class="col-md-2 control-label" for="editMode">{{:: 'edit-mode' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="editMode"
|
||||
|
@ -78,29 +78,29 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means user can change his password in Keycloak database and this one will be used instead of Kerberos password then</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'edit-mode.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">Update Profile First Login </label>
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">{{:: 'update-profile-first-login' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch />
|
||||
<input ng-model="instance.config.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Update profile on first login</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'update-profile-first-login.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">{{:: 'user-federation' | translate}}</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
<li data-ng-show="create">{{:: 'add-user-federation-provider' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<kc-tabs-user-federation></kc-tabs-user-federation>
|
||||
|
@ -10,29 +10,29 @@
|
|||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<legend><span class="text">{{:: 'required-settings' | translate}}</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<label class="col-md-2 control-label" for="providerId">{{:: 'provider-id' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">{{:: 'console-display-name' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="{{:: 'defaults-to-id' | translate}}">
|
||||
</div>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'console-display-name.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<label class="col-md-2 control-label" for="priority">{{:: 'priority' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'priority.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="editMode">Edit mode</label>
|
||||
<label class="col-md-2 control-label" for="editMode">{{:: 'edit-mode' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="editMode"
|
||||
|
@ -43,17 +43,17 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>READ_ONLY is a read only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.edit-mode.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-md-2 control-label" for="syncRegistrations">Sync Registrations</label>
|
||||
<label class="col-md-2 control-label" for="syncRegistrations">{{:: 'sync-registrations' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.syncRegistrations" name="syncRegistrations" id="syncRegistrations" onoffswitch />
|
||||
<input ng-model="instance.config.syncRegistrations" name="syncRegistrations" id="syncRegistrations" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Should newly created users be created within LDAP store? Priority effects which provider is chose to sync the new user.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.sync-registrations.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="vendor"><span class="required">*</span> Vendor</label>
|
||||
<label class="col-md-2 control-label" for="vendor"><span class="required">*</span> {{:: 'vendor' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="vendor"
|
||||
|
@ -63,64 +63,55 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>LDAP vendor (provider)</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.vendor.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="usernameLDAPAttribute"><span class="required">*</span> Username LDAP attribute</label>
|
||||
<label class="col-md-2 control-label" for="usernameLDAPAttribute"><span class="required">*</span> {{:: 'username-ldap-attribute' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="usernameLDAPAttribute" type="text" ng-model="instance.config.usernameLDAPAttribute" placeholder="LDAP attribute name for username" required>
|
||||
<input class="form-control" id="usernameLDAPAttribute" type="text" ng-model="instance.config.usernameLDAPAttribute" placeholder="{{:: 'ldap-attribute-name-for-username' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'. For Active directory it can be 'sAMAccountName' or 'cn' .
|
||||
The attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak.
|
||||
</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'username-ldap-attribute.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="rdnLDAPAttribute"><span class="required">*</span> RDN LDAP attribute</label>
|
||||
<label class="col-md-2 control-label" for="rdnLDAPAttribute"><span class="required">*</span> {{:: 'rdn-ldap-attribute' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="rdnLDAPAttribute" type="text" ng-model="instance.config.rdnLDAPAttribute" placeholder="LDAP attribute name for user RDN" required>
|
||||
<input class="form-control" id="rdnLDAPAttribute" type="text" ng-model="instance.config.rdnLDAPAttribute" placeholder="{{:: 'ldap-attribute-name-for-user-rdn' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>Name of LDAP attribute, which is used as RDN (top attribute) of typical user DN. Usually it's the same as Username LDAP attribute, however it's not required.
|
||||
For example for Active directory it's common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName' .
|
||||
</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'rdn-ldap-attribute.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="uuidLDAPAttribute"><span class="required">*</span> UUID LDAP attribute</label>
|
||||
<label class="col-md-2 control-label" for="uuidLDAPAttribute"><span class="required">*</span> {{:: 'uuid-ldap-attribute' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="uuidLDAPAttribute" type="text" ng-model="instance.config.uuidLDAPAttribute" placeholder="LDAP attribute name for UUID" required>
|
||||
<input class="form-control" id="uuidLDAPAttribute" type="text" ng-model="instance.config.uuidLDAPAttribute" placeholder="{{:: 'ldap-attribute-name-for-uuid' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>Name of LDAP attribute, which is used as unique object identifier (UUID) for objects in LDAP. For many LDAP server vendors it's 'entryUUID' however some are different. For example for Active directory it should be 'objectGUID' .
|
||||
If your LDAP server really doesn't support the notion of UUID, you can use any other attribute, which is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN' .
|
||||
</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'uuid-ldap-attribute.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="userObjectClasses"><span class="required">*</span> User Object Classes</label>
|
||||
<label class="col-md-2 control-label" for="userObjectClasses"><span class="required">*</span> {{:: 'user-object-classes' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="userObjectClasses" type="text" ng-model="instance.config.userObjectClasses" placeholder="LDAP User Object Classes (div. by comma)" required>
|
||||
<input class="form-control" id="userObjectClasses" type="text" ng-model="instance.config.userObjectClasses" placeholder="{{:: 'ldap-user-object-classes.placeholder' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>All values of LDAP objectClass attribute for users in LDAP divided by comma. For example: 'inetOrgPerson, organizationalPerson' . Newly created Keycloak users will be written to LDAP
|
||||
with all those object classes and existing LDAP user records are found just if they contain all those object classes. </kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.user-object-classes.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="ldapConnectionUrl"><span class="required">*</span> Connection URL</label>
|
||||
<label class="col-md-2 control-label" for="ldapConnectionUrl"><span class="required">*</span> {{:: 'connection-url' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapConnectionUrl" type="text" ng-model="instance.config.connectionUrl" placeholder="LDAP connection URL" required>
|
||||
<input class="form-control" id="ldapConnectionUrl" type="text" ng-model="instance.config.connectionUrl" placeholder="{{:: 'ldap-connection-url' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>Connection URL to your LDAP server</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.connection-url.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-sm-4" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" data-ng-click="testConnection()">Test connection</a>
|
||||
<a class="btn btn-primary" data-ng-click="testConnection()">{{:: 'test-connection' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="ldapUsersDn"><span class="required">*</span> Users DN</label>
|
||||
<label class="col-md-2 control-label" for="ldapUsersDn"><span class="required">*</span> {{:: 'users-dn' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapUsersDn" type="text" ng-model="instance.config.usersDn" placeholder="LDAP Users DN" required>
|
||||
<input class="form-control" id="ldapUsersDn" type="text" ng-model="instance.config.usersDn" placeholder="{{:: 'ldap-users-dn' | translate}}" required>
|
||||
</div>
|
||||
<kc-tooltip>Full DN of LDAP tree where your users are. This DN is parent of LDAP users. It could be for example 'ou=users,dc=example,dc=com' assuming
|
||||
that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'
|
||||
</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.users-dn.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="authType"><span class="required">*</span> Authentication Type</label>
|
||||
<label class="col-md-2 control-label" for="authType"><span class="required">*</span> {{:: 'authentication-type' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="authType"
|
||||
|
@ -130,34 +121,34 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>LDAP Authentication type. Right now just 'none' (anonymous LDAP authentication) or 'simple' (Bind credential + Bind password authentication) mechanisms are available</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.authentication-type.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-hide="instance.config.authType == 'none'">
|
||||
<label class="col-md-2 control-label" for="ldapBindDn"><span class="required">*</span> Bind DN</label>
|
||||
<label class="col-md-2 control-label" for="ldapBindDn"><span class="required">*</span> {{:: 'bind-dn' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapBindDn" type="text" ng-model="instance.config.bindDn" placeholder="LDAP Bind DN" data-ng-required="instance.config.authType != 'none'">
|
||||
<input class="form-control" id="ldapBindDn" type="text" ng-model="instance.config.bindDn" placeholder="{{:: 'ldap-bind-dn' | translate}}" data-ng-required="instance.config.authType != 'none'">
|
||||
</div>
|
||||
<kc-tooltip>DN of LDAP admin, which will be used by Keycloak to access LDAP server</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.bind-dn.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-hide="instance.config.authType == 'none'">
|
||||
<label class="col-md-2 control-label" for="ldapBindCredential"><span class="required">*</span> Bind Credential</label>
|
||||
<label class="col-md-2 control-label" for="ldapBindCredential"><span class="required">*</span> {{:: 'bind-credential' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapBindCredential" type="password" ng-model="instance.config.bindCredential" placeholder="LDAP Bind Credentials" data-ng-required="instance.config.authType != 'none'">
|
||||
<input class="form-control" id="ldapBindCredential" type="password" ng-model="instance.config.bindCredential" placeholder="{{:: 'ldap-bind-credentials' | translate}}" data-ng-required="instance.config.authType != 'none'">
|
||||
</div>
|
||||
<kc-tooltip>Password of LDAP admin</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.bind-credential.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-sm-4" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" data-ng-click="testAuthentication()">Test authentication</a>
|
||||
<a class="btn btn-primary" data-ng-click="testAuthentication()">{{:: 'test-authentication' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="customUserSearchFilter">Custom User LDAP Filter</label>
|
||||
<label class="col-md-2 control-label" for="customUserSearchFilter">{{:: 'custom-user-ldap-filter' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="customUserSearchFilter" type="text" ng-model="instance.config.customUserSearchFilter" placeholder="LDAP Filter">
|
||||
<input class="form-control" id="customUserSearchFilter" type="text" ng-model="instance.config.customUserSearchFilter" placeholder="{{:: 'ldap-filter' | translate}}">
|
||||
</div>
|
||||
<kc-tooltip>Additional LDAP Filter for filtering searched users. Leave this empty if you don't need additional filter. Make sure that it starts with '(' and ends with ')'</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.custom-user-ldap-filter.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="searchScope">Search scope</label>
|
||||
<label class="col-md-2 control-label" for="searchScope">{{:: 'search-scope' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="searchScope"
|
||||
|
@ -167,122 +158,122 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>For one level, we search for users just in DNs specified by User DNs. For subtree, we search in whole of their subtree. See LDAP documentation for more details</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.search-scope.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="connectionPooling">Connection pooling</label>
|
||||
<label class="col-md-2 control-label" for="connectionPooling">{{:: 'connection-pooling' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.connectionPooling" name="connectionPooling" id="connectionPooling" onoffswitch />
|
||||
<input ng-model="instance.config.connectionPooling" name="connectionPooling" id="connectionPooling" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does Keycloak should use connection pooling for accessing LDAP server</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.connection-pooling.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="pagination">Pagination</label>
|
||||
<label class="col-md-2 control-label" for="pagination">{{:: 'pagination' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.pagination" name="pagination" id="pagination" onoffswitch />
|
||||
<input ng-model="instance.config.pagination" name="pagination" id="pagination" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does the LDAP server support pagination.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.pagination.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Kerberos integration</span></legend>
|
||||
<legend><span class="text">{{:: 'kerberos-integration' | translate}}</span></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="allowKerberosAuthentication">Allow Kerberos authentication </label>
|
||||
<label class="col-md-2 control-label" for="allowKerberosAuthentication">{{:: 'allow-kerberos-authentication' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.allowKerberosAuthentication" id="allowKerberosAuthentication" onoffswitch />
|
||||
<input ng-model="instance.config.allowKerberosAuthentication" id="allowKerberosAuthentication" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.allow-kerberos-authentication.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> Kerberos Realm</label>
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> {{:: 'kerberos-realm' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="kerberosRealm" type="text" ng-model="instance.config.kerberosRealm" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<kc-tooltip>Name of kerberos realm. For example FOO.ORG</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'kerberos-realm.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> Server principal</label>
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> {{:: 'server-principal' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="serverPrincipal" type="text" ng-model="instance.config.serverPrincipal" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<kc-tooltip>Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'server-principal.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> KeyTab</label>
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> {{:: 'keytab' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="keyTab" type="text" ng-model="instance.config.keyTab" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<kc-tooltip>Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'keytab.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="debug">Debug </label>
|
||||
<label class="col-md-2 control-label" for="debug">{{:: 'debug' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch />
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Enable/disable debug logging to standard output for Krb5LoginModule.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'debug.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-md-2 control-label" for="debug">Use Kerberos For Password Authentication </label>
|
||||
<label class="col-md-2 control-label" for="debug">{{:: 'use-kerberos-for-password-authentication' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.useKerberosForPasswordAuthentication" id="useKerberosForPasswordAuthentication" onoffswitch />
|
||||
<input ng-model="instance.config.useKerberosForPasswordAuthentication" id="useKerberosForPasswordAuthentication" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.use-kerberos-for-password-authentication.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Sync settings</span></legend>
|
||||
<legend><span class="text">{{:: 'sync-settings' | translate}}</span></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="batchSizeForSync">Batch size</label>
|
||||
<label class="col-md-2 control-label" for="batchSizeForSync">{{:: 'batch-size' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" ng-model="instance.config.batchSizeForSync" id="batchSizeForSync" />
|
||||
</div>
|
||||
<kc-tooltip>Count of LDAP users to be imported from LDAP to Keycloak within single transaction.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.batch-size.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">{{:: 'periodic-full-sync' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch />
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does periodic full synchronization of LDAP users to Keycloak should be enabled or not</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.periodic-full-sync.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="fullSyncEnabled">
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">{{:: 'full-sync-period' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" />
|
||||
</div>
|
||||
<kc-tooltip>Period for full synchronization in seconds</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'full-sync-period.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">{{:: 'periodic-changed-users-sync' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch />
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>Does periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.periodic-changed-users-sync.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="changedSyncEnabled">
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">{{:: 'changed-users-sync-period' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" />
|
||||
</div>
|
||||
<kc-tooltip>Period for synchronization of changed or newly created LDAP users in seconds</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'ldap.changed-users-sync-period.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">{{:: 'synchronize-changed-users' | translate}}</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">{{:: 'synchronize-all-users' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">{{:: 'user-federation' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{provider.providerName}}/{{provider.id}}">{{provider.displayName|capitalize}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{provider.providerName}}/{{provider.id}}/mappers">User Federation Mappers</a></li>
|
||||
<li class="active" data-ng-show="create">Create User Federation Mapper</li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{provider.providerName}}/{{provider.id}}/mappers">{{:: 'user-federation-mappers' | translate}}</a></li>
|
||||
<li class="active" data-ng-show="create">{{:: 'create-user-federation-mapper' | translate}}</li>
|
||||
<li class="active" data-ng-hide="create">{{mapper.name}}</li>
|
||||
</ol>
|
||||
|
||||
<h1 data-ng-hide="create">{{mapper.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||
<h1 data-ng-show="create">Add User Federation Mapper</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-user-federation-mapper' | translate}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-md-2 control-label" for="mapperId">ID </label>
|
||||
<label class="col-md-2 control-label" for="mapperId">{{:: 'id' | translate}} </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="name">Name <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create" required>
|
||||
</div>
|
||||
<kc-tooltip>Name of the mapper.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'mapper.name.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="create">
|
||||
<label class="col-md-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
||||
<label class="col-md-2 control-label" for="mapperTypeCreate">{{:: 'mapper-type' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="mapperTypeCreate"
|
||||
|
@ -39,7 +39,7 @@
|
|||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-hide="create">
|
||||
<label class="col-md-2 control-label" for="mapperType">Mapper Type</label>
|
||||
<label class="col-md-2 control-label" for="mapperType">{{:: 'mapper-type' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">{{:: 'user-federation' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{provider.providerName}}/{{provider.id}}">{{provider.displayName|capitalize}}</a></li>
|
||||
<li>User Federation Mappers</li>
|
||||
<li>{{:: 'user-federation-mappers' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<kc-tabs-user-federation></kc-tabs-user-federation>
|
||||
|
@ -14,22 +14,22 @@
|
|||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right" data-ng-show="hasAnyMapperTypes">
|
||||
<a class="btn btn-primary" href="#/create/user-federation-mappers/{{realm.realm}}/{{provider.providerName}}/{{provider.id}}">Create</a>
|
||||
<a class="btn btn-primary" href="#/create/user-federation-mappers/{{realm.realm}}/{{provider.providerName}}/{{provider.id}}">{{:: 'create' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="mappers.length == 0">
|
||||
<th>Name</th>
|
||||
<th>Category</th>
|
||||
<th>Type</th>
|
||||
<th>{{:: 'name' | translate}}</th>
|
||||
<th>{{:: 'category' | translate}}</th>
|
||||
<th>{{:: 'type' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -39,7 +39,7 @@
|
|||
<td>{{mapperTypes[mapper.federationMapperType].name}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="mappers.length == 0">
|
||||
<td>No mappers available</td>
|
||||
<td>{{:: 'no-mappers-available' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
<th>Actions</th>
|
||||
<th>{{:: 'key' | translate}}</th>
|
||||
<th>{{:: 'value' | translate}}</th>
|
||||
<th>{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -20,14 +20,14 @@
|
|||
<td>{{key}}</td>
|
||||
<td><input ng-model="group.attributes[key]" class="form-control" type="text" name="{{key}}" id="attribute-{{key}}" /></td>
|
||||
<td class="kc-action-cell">
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" data-ng-click="removeAttribute(key)">Delete</button>
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" data-ng-click="removeAttribute(key)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input ng-model="newAttribute.key" class="form-control" type="text" id="newAttributeKey" /></td>
|
||||
<td><input ng-model="newAttribute.value" class="form-control" type="text" id="newAttributeValue" /></td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="addAttribute()" data-ng-disabled="!newAttribute.key.length || !newAttribute.value.length">Add</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="addAttribute()" data-ng-disabled="!newAttribute.key.length || !newAttribute.value.length">{{:: 'add' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -35,8 +35,8 @@
|
|||
|
||||
<div class="form-group" data-ng-show="access.manageUsers">
|
||||
<div class="col-md-12">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">Groups</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">{{:: 'groups' | translate}}</a></li>
|
||||
<li>{{group.name}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
|||
<form class="form-horizontal" name="clientForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"for="name">Name <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label"for="name">{{:: 'name' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="group.name" autofocus
|
||||
required >
|
||||
|
@ -18,8 +18,8 @@
|
|||
|
||||
<div class="form-group" data-ng-show="access.manageUsers">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed" data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed" data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<th class="kc-table-actions" colspan="5">
|
||||
<div class="form-inline">
|
||||
<div class="pull-right" data-ng-show="access.manageUsers">
|
||||
<button id="createGroup" class="btn btn-default" ng-click="createGroup(tree.currentNode)">New</button>
|
||||
<button id="editGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="edit(tree.currentNode)">Edit</button>
|
||||
<button id="cutGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="cut(tree.currentNode)">Cut</button>
|
||||
<button id="pasteGroup" ng-disabled="!cutNode" class="btn btn-default" ng-click="paste(tree.currentNode)">Paste</button>
|
||||
<button id="removeGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="remove(tree.currentNode)">Delete</button>
|
||||
<button id="createGroup" class="btn btn-default" ng-click="createGroup(tree.currentNode)">{{:: 'new' | translate}}</button>
|
||||
<button id="editGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="edit(tree.currentNode)">{{:: 'edit' | translate}}</button>
|
||||
<button id="cutGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="cut(tree.currentNode)">{{:: 'cut' | translate}}</button>
|
||||
<button id="pasteGroup" ng-disabled="!cutNode" class="btn btn-default" ng-click="paste(tree.currentNode)">{{:: 'paste' | translate}}</button>
|
||||
<button id="removeGroup" ng-disabled="isDisabled()" class="btn btn-default" ng-click="remove(tree.currentNode)">{{:: 'delete' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">Groups</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">{{:: 'groups' | translate}}</a></li>
|
||||
<li>{{group.name}}</li>
|
||||
</ol>
|
||||
<kc-tabs-group></kc-tabs-group>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<caption data-ng-show="users" class="hidden">Table of group members</caption>
|
||||
<caption data-ng-show="users" class="hidden">{{:: 'table-of-group-members' | translate}}</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<tr data-ng-show="searchLoaded && users.length > 0">
|
||||
<th>Username</th>
|
||||
<th>Last Name</th>
|
||||
<th>First Name</th>
|
||||
<th>Email</th>
|
||||
<th>{{:: 'username' | translate}}</th>
|
||||
<th>{{:: 'last-name' | translate}}</th>
|
||||
<th>{{:: 'first-name' | translate}}</th>
|
||||
<th>{{:: 'email' | translate}}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</tr>
|
||||
|
@ -22,9 +22,9 @@
|
|||
<tr>
|
||||
<td colspan="7">
|
||||
<div class="table-nav">
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="users.length < query.max">Next page</button>
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">{{:: 'first-page' | translate}}</button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">{{:: 'previous-page' | translate}}</button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="users.length < query.max">{{:: 'next-page' | translate}}</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -36,12 +36,12 @@
|
|||
<td>{{user.firstName}}</td>
|
||||
<td>{{user.email}}</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/users/{{user.id}}">Edit</button>
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/users/{{user.id}}">{{:: 'edit' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!users || users.length == 0">
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">No group members</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No group members</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">{{:: 'no-group-members' | translate}}</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">{{:: 'no-group-members' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">Groups</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/groups">{{:: 'groups' | translate}}</a></li>
|
||||
<li>{{group.name}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -8,37 +8,37 @@
|
|||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<div class="form-group" kc-read-only="!access.manageUsers">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmRoles.length == 0" ng-disabled="c.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||
Add selected <i class="fa fa-angle-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-right"></i>
|
||||
</button>
|
||||
<kc-tooltip>Realm roles that can be assigned to the group.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'group.add-selected.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
||||
<kc-tooltip>Realm roles mapped to the group</kc-tooltip>
|
||||
<label class="control-label" for="assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group.assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="realm-composite">Effective Roles</label>
|
||||
<kc-tooltip>All realm role mappings. Some roles here might be inherited from a mapped composite role.</kc-tooltip>
|
||||
<label class="control-label" for="realm-composite">{{:: 'effective-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="realm-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
@ -51,40 +51,40 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<span>{{:: 'client-roles' | translate}}</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-md-10" kc-read-only="!access.manageUsers">
|
||||
<div class="row" data-ng-hide="targetClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||
</div>
|
||||
<div class="row" data-ng-show="targetClient">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Assignable roles from this client.</kc-tooltip>
|
||||
<label class="control-label" for="available-client">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned-client">Assigned Roles</label>
|
||||
<kc-tooltip>Role mappings for this client.</kc-tooltip>
|
||||
<label class="control-label" for="assigned-client">{{:: 'assigned-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group.assigned-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">Effective Roles <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="Role mappings for this client. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span></label>
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}} <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'group.effective-roles-client.tooltip' | translate}}" class="fa fa-info-circle"></span></label>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="sr-only">{{:: 'toggle-navigation' | translate}}</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
|
@ -15,10 +15,10 @@
|
|||
{{auth.user.displayName|capitalize}} <b class="caret"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{authUrl}}/realms/{{auth.user.realm}}/account?referrer=security-admin-console">Manage Account</a></li>
|
||||
<li><a href="#/server-info">Server Info</a></li>
|
||||
<li><a href="{{authUrl}}/realms/{{auth.user.realm}}/account?referrer=security-admin-console">{{:: 'manage-account' | translate}}</a></li>
|
||||
<li><a href="#/server-info">{{:: 'server-info' | translate}}</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="" ng-click="auth.authz.logout()">Sign Out</a></li>
|
||||
<li><a href="" ng-click="auth.authz.logout()">{{:: 'sign-out' | translate}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div style="padding: 20px 20px 0 20px">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr><td width="100px">Realm</td><td>{{event.authDetails.realmId}}</td></tr>
|
||||
<tr><td width="100px">Client</td><td>{{event.authDetails.clientId}}</td></tr>
|
||||
<tr><td width="100px">User</td><td>{{event.authDetails.userId}}</td></tr>
|
||||
<tr><td width="100px">IP Address</td><td>{{event.authDetails.ipAddress}}</td></tr>
|
||||
<tr><td width="100px">{{:: 'realm' | translate}}</td><td>{{event.authDetails.realmId}}</td></tr>
|
||||
<tr><td width="100px">{{:: 'client' | translate}}</td><td>{{event.authDetails.clientId}}</td></tr>
|
||||
<tr><td width="100px">{{:: 'user' | translate}}</td><td>{{event.authDetails.userId}}</td></tr>
|
||||
<tr><td width="100px">{{:: 'ip-address' | translate}}</td><td>{{event.authDetails.ipAddress}}</td></tr>
|
||||
</table>
|
||||
</div>
|
|
@ -2,27 +2,27 @@
|
|||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">Role Selector</h4>
|
||||
<h4 class="modal-title">{{:: 'role-selector' | translate}}</h4>
|
||||
</div>
|
||||
<div style="padding: 0 15px 15px 15px;">
|
||||
<form>
|
||||
<div data-ng-show="realmRoles.length > 0" style="margin-bottom: 30px;">
|
||||
<label class="control-label" for="available">Realm Roles</label>
|
||||
<kc-tooltip>Realm roles that can be selected.</kc-tooltip>
|
||||
<label class="control-label" for="available">{{:: 'realm-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'realm-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available" class="form-control" size="5"
|
||||
ng-dblclick="selectRealmRole()"
|
||||
ng-model="selectedRealmRole.role"
|
||||
ng-options="r.name for r in realmRoles | orderBy:'toString()'">
|
||||
<option style="display:none" value="">Select a role</option>
|
||||
<option style="display:none" value="">{{:: 'select-a-role' | translate}}</option>
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" data-ng-disabled="!selectedRealmRole.role" ng-click="selectRealmRole()" tooltip-trigger="mouseover mouseout" tooltip="Select realm role" tooltip-placement="right">
|
||||
Select Realm Role</i>
|
||||
{{:: 'select-realm-role' | translate}}</i>
|
||||
</button>
|
||||
</div>
|
||||
<div data-ng-show="clients.length > 0">
|
||||
<label class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<kc-tooltip>Client roles that can be selected.</kc-tooltip>
|
||||
<span>{{:: 'client-roles' | translate}}</span>
|
||||
<kc-tooltip>{{:: 'client-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="client.selected" ng-options="a.clientId for a in clients" ng-disabled="false">
|
||||
</select>
|
||||
</label>
|
||||
|
@ -30,10 +30,10 @@
|
|||
ng-dblclick="selectClientRole()"
|
||||
ng-model="selectedClientRole.role"
|
||||
ng-options="r.name for r in clientRoles | orderBy:'toString()'">
|
||||
<option style="display:none" value="">Select a role</option>
|
||||
<option style="display:none" value="">{{:: 'select-a-role' | translate}}</option>
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" data-ng-disabled="!selectedClientRole.role" ng-click="selectClientRole()" tooltip-trigger="mouseover mouseout" tooltip="Select client role" tooltip-placement="right">
|
||||
Select Client Role
|
||||
{{:: 'select-client-role' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">Register Required Action</h4>
|
||||
<h4 class="modal-title">{{:: 'register-required-action' | translate}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div>
|
||||
<label class="control-label" for="selector">Required Action</label>
|
||||
<label class="control-label" for="selector">{{:: 'required-action' | translate}}</label>
|
||||
<select id="selector" class="form-control"
|
||||
ng-model="selected.selected"
|
||||
ng-options="r.name for r in unregisteredRequiredActions">
|
||||
|
@ -16,6 +16,6 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="ok()">Ok</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="ok()">{{:: 'ok' | translate}}</button>
|
||||
</div>
|
|
@ -1,7 +1,7 @@
|
|||
<div id="content-area" class="col-sm-12" role="main">
|
||||
<div class="error-container">
|
||||
<h2>Resource <strong>not found</strong>...</h2>
|
||||
<p class="instruction">We could not find the resource you are looking for. Please make sure the URL you entered is correct.</p>
|
||||
<a href="#/" class="link-right">Go to the home page »</a>
|
||||
<h2 translate="resource-not-found"></h2>
|
||||
<p class="instruction">{{:: 'resource-not-found.instruction' | translate}}</p>
|
||||
<a href="#/" class="link-right" translate="go-to-the-home-page"></a>
|
||||
</div>
|
||||
</div>
|
|
@ -1,23 +1,23 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Authentication</h1>
|
||||
<h1>{{:: 'authentication' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label for="type" class="col-md-2 control-label">OTP Type</label>
|
||||
<label for="type" class="col-md-2 control-label">{{:: 'otp-type' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="type" ng-model="realm.otpPolicyType" class="form-control">
|
||||
<option value="totp">Time Based</option>
|
||||
<option value="hotp">Counter Based</option>
|
||||
<option value="totp">{{:: 'time-based' | translate}}</option>
|
||||
<option value="hotp">{{:: 'counter-based' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp-type.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="alg" class="col-md-2 control-label">OTP Hash Algorithm</label>
|
||||
<label for="alg" class="col-md-2 control-label">{{:: 'otp-hash-algorithm' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="alg" ng-model="realm.otpPolicyAlgorithm" class="form-control">
|
||||
|
@ -27,49 +27,49 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>What hashing algorithm should be used to generate the OTP.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp-hash-algorithm.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="digits">Number of Digits</label>
|
||||
<label class="col-md-2 control-label" for="digits">{{:: 'number-of-digits' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="digits" ng-model="realm.otpPolicyDigits" class="form-control" ng-options="item as item for item in optionsDigits">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>How many digits should the OTP have?</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp.number-of-digits.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="lookAhead">Look ahead window</label>
|
||||
<label class="col-md-2 control-label" for="lookAhead">{{:: 'look-ahead-window' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" required min="1" max="120" id="lookAhead" name="lookAhead" data-ng-model="realm.otpPolicyLookAheadWindow" autofocus>
|
||||
</div>
|
||||
<kc-tooltip>How far ahead should the server look just in case the token generator and server are out of time sync or counter sync?</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp.look-ahead-window.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-if="realm.otpPolicyType == 'hotp'">
|
||||
<label class="col-md-2 control-label" for="counter">Initial Counter</label>
|
||||
<label class="col-md-2 control-label" for="counter">{{:: 'initial-counter' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" data-ng-required="realm.otpPolicyType == 'hotp'" min="1" max="120" id="counter" name="counter" data-ng-model="realm.otpPolicyInitialCounter" autofocus>
|
||||
</div>
|
||||
<kc-tooltip>What should the initial counter value be?</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp.initial-counter.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-if="realm.otpPolicyType == 'totp'">
|
||||
<label class="col-md-2 control-label" for="counter">OTP Token Period</label>
|
||||
<label class="col-md-2 control-label" for="counter">{{:: 'otp-token-period' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" data-ng-required="realm.otpPolicyType == 'totp'" min="1" max="120" id="period" name="period" data-ng-model="realm.otpPolicyPeriod">
|
||||
</div>
|
||||
<kc-tooltip>How many seconds should an OTP token be valid? Defaults to 30 seconds.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'otp-token-period.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div id="content-area" class="col-sm-12" role="main">
|
||||
<div class="error-container">
|
||||
<h2>Page <strong>not found</strong>...</h2>
|
||||
<p class="instruction">We could not find the page you are looking for. Please make sure the URL you entered is correct.</p>
|
||||
<a href="#" class="link-right">Go to the home page »</a>
|
||||
<h2 translate="page-not-found"></h2>
|
||||
<p class="instruction">{{:: 'page-not-found.instruction' | translate}}</p>
|
||||
<a href="#" class="link-right" translate="go-to-the-home-page"></a>
|
||||
</div>
|
||||
</div>
|
|
@ -1,11 +1,11 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<h1>Partial Import</h1>
|
||||
<h1>{{:: 'partial-import' | translate}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="partialImportForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">File</label>
|
||||
<label for="name" class="col-sm-2 control-label">{{:: 'file' | translate}}</label>
|
||||
|
||||
<div class="col-md-6" data-ng-hide="importing">
|
||||
<label for="import-file" class="btn btn-default">{{:: 'select-file'| translate}} <i class="pficon pficon-import"></i></label>
|
||||
|
@ -19,7 +19,7 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && isMultiRealm && !hasResults()">
|
||||
<label for="fromRealm" class="col-md-2 control-label">Import from realm</label>
|
||||
<label for="fromRealm" class="col-md-2 control-label">{{:: 'import-from-realm' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="fromRealm" ng-model="fileContent" class="form-control"
|
||||
|
@ -30,52 +30,52 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasArray('users') && !hasResults()">
|
||||
<label class="col-md-2 control-label" for="importUsers">Import Users ({{itemCount('users')}})</label>
|
||||
<label class="col-md-2 control-label" for="importUsers">{{:: 'import-users' | translate}} ({{itemCount('users')}})</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="importUsers" name="importUsers" id="importUsers" onoffswitch on-text="{{:: 'onText'| translate}}" off-text="{{:: 'offText'| translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasArray('clients') && !hasResults()">
|
||||
<label class="col-md-2 control-label" for="importClients">Import Clients ({{itemCount('clients')}})</label>
|
||||
<label class="col-md-2 control-label" for="importClients">{{:: 'import-clients' | translate}} ({{itemCount('clients')}})</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="importClients" name="importClients" id="importClients" onoffswitch on-text="{{:: 'onText'| translate}}" off-text="{{:: 'offText'| translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasArray('identityProviders') && !hasResults()">
|
||||
<label class="col-md-2 control-label" for="importIdentityProviders">Import Identity Providers ({{itemCount('identityProviders')}})</label>
|
||||
<label class="col-md-2 control-label" for="importIdentityProviders">{{:: 'import-identity-providers' | translate}} ({{itemCount('identityProviders')}})</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="importIdentityProviders" name="importIdentityProviders" id="importIdentityProviders" onoffswitch on-text="{{:: 'onText'| translate}}" off-text="{{:: 'offText'| translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasRealmRoles() && !hasResults()">
|
||||
<label class="col-md-2 control-label" for="importRealmRoles">Import Realm Roles ({{itemCount('roles.realm')}})</label>
|
||||
<label class="col-md-2 control-label" for="importRealmRoles">{{:: 'import-realm-roles' | translate}} ({{itemCount('roles.realm')}})</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="importRealmRoles" name="importRealmRoles" id="importRealmRoles" onoffswitch on-text="{{:: 'onText'| translate}}" off-text="{{:: 'offText'| translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasClientRoles() && !hasResults()">
|
||||
<label class="col-md-2 control-label" for="importClientRoles">Import Client Roles ({{itemCount('roles.client')}})</label>
|
||||
<label class="col-md-2 control-label" for="importClientRoles">{{:: 'import-client-roles' | translate}} ({{itemCount('roles.client')}})</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="importClientRoles" name="importClientRoles" id="importClientRoles" onoffswitch on-text="{{:: 'onText'| translate}}" off-text="{{:: 'offText'| translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="importing && hasResources() && !hasResults()">
|
||||
<label for="ifResourceExists" class="col-md-2 control-label">If a resource exists</label>
|
||||
<label for="ifResourceExists" class="col-md-2 control-label">{{:: 'if-resource-exists' | translate}}</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="ifResourceExists" ng-model="ifResourceExists" class="form-control">
|
||||
<option value="FAIL">Fail</option>
|
||||
<option value="SKIP">Skip</option>
|
||||
<option value="OVERWRITE">Overwrite</option>
|
||||
<option value="FAIL">{{:: 'fail' | translate}}</option>
|
||||
<option value="SKIP">{{:: 'skip' | translate}}</option>
|
||||
<option value="OVERWRITE">{{:: 'overwrite' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<kc-tooltip>Specify what should be done if you try to import a resource that already exists.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'if-resource-exists.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
@ -90,10 +90,10 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Action</th>
|
||||
<th>Type</th>
|
||||
<th>Name</th>
|
||||
<th>Id</th>
|
||||
<th>{{:: 'action' | translate}}</th>
|
||||
<th>{{:: 'type' | translate}}</th>
|
||||
<th>{{:: 'name' | translate}}</th>
|
||||
<th>{{:: 'id' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -109,9 +109,9 @@
|
|||
</table>
|
||||
|
||||
<div class="table-nav">
|
||||
<button data-ng-click="setFirstPage()" class="first" ng-disabled="">First page</button>
|
||||
<button data-ng-click="setPreviousPage()" class="prev" ng-disabled="!hasPrevious()">Previous page</button>
|
||||
<button data-ng-click="setNextPage()" class="next" ng-disabled="!hasNext()">Next page</button>
|
||||
<button data-ng-click="setFirstPage()" class="first" ng-disabled="">{{:: 'first-page' | translate}}</button>
|
||||
<button data-ng-click="setPreviousPage()" class="prev" ng-disabled="!hasPrevious()">{{:: 'previous-page' | translate}}</button>
|
||||
<button data-ng-click="setNextPage()" class="next" ng-disabled="!hasNext()">{{:: 'next-page' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Authentication</h1>
|
||||
<h1>{{:: 'authentication' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<table class="table table-striped table-bordered">
|
||||
<caption class="hidden">Table of Password Policies</caption>
|
||||
<caption class="hidden">{{:: 'table-of-password-policies' | translate}}</caption>
|
||||
<thead>
|
||||
<tr ng-show="(allPolicies|removeSelectedPolicies:policy).length > 0">
|
||||
<th colspan="5" class="kc-table-actions">
|
||||
|
@ -14,16 +14,16 @@
|
|||
<select class="form-control" ng-model="selectedPolicy"
|
||||
ng-options="(p.name|capitalize) for p in (allPolicies|removeSelectedPolicies:policy)"
|
||||
data-ng-change="addPolicy(selectedPolicy); selectedPolicy = null">
|
||||
<option value="" disabled selected>Add policy...</option>
|
||||
<option value="" disabled selected>{{:: 'add-policy.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Policy Type</th>
|
||||
<th>Policy Value</th>
|
||||
<th>Actions</th>
|
||||
<th>{{:: 'policy-type' | translate}}</th>
|
||||
<th>{{:: 'policy-value' | translate}}</th>
|
||||
<th>{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -31,10 +31,10 @@
|
|||
<td>{{p.name|capitalize}}</td>
|
||||
<td>
|
||||
<input class="form-control" ng-model="p.value" ng-show="p.name != 'notUsername' "
|
||||
placeholder="No value assigned" min="1" required>
|
||||
placeholder="{{:: 'no-value-assigned.placeholder' | translate}}" min="1" required>
|
||||
</td>
|
||||
<td class="kc-action-cell">
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" ng-click="removePolicy($index)">Delete</button>
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" ng-click="removePolicy($index)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -42,8 +42,8 @@
|
|||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-12">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,42 +1,42 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<h1>Add Realm</h1>
|
||||
<h1>{{:: 'add-realm' | translate}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Import</label>
|
||||
<label for="name" class="col-sm-2 control-label">{{:: 'import' | translate}}</label>
|
||||
|
||||
<div class="col-md-6" data-ng-hide="importing">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<label for="import-file" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" kc-on-read-file="importFile($fileContent)">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-show="importing">
|
||||
<input type="button" class="btn btn-default" data-ng-click="viewImportDetails()" value="View details"/>
|
||||
<input type="button" class="btn btn-default" data-ng-click="reset()" value="Clear import"/>
|
||||
<input type="button" class="btn btn-default" data-ng-click="viewImportDetails()" value="{{:: 'view-details' | translate}}"/>
|
||||
<input type="button" class="btn btn-default" data-ng-click="reset()" value="{{:: 'clear-import' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Name <span class="required">*</span></label>
|
||||
<label for="name" class="col-sm-2 control-label">{{:: 'name' | translate}} <span class="required">*</span></label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="enabled" class="col-sm-2 control-label">Enabled</label>
|
||||
<label for="enabled" class="col-sm-2 control-label">{{:: 'enabled' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
|
||||
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-disabled="!changed">Create</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'create' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Roles</h1>
|
||||
<h1>{{:: 'roles' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">{{:: 'realm-roles' | translate}}</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/default-roles">{{:: 'default-roles' | translate}}</a></li>
|
||||
</ul>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles that can be assigned.</kc-tooltip>
|
||||
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'default.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r for r in availableRealmRoles | orderBy:'toString()'">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmDefaultRole()">
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned">Realm Default Roles</label>
|
||||
<kc-tooltip>Realm level roles assigned to new users.</kc-tooltip>
|
||||
<label class="control-label" for="assigned">{{:: 'realm-default-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'realm-default-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmDefRoles"
|
||||
ng-options="r for r in realm.defaultRoles | orderBy:'toString()'">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmDefRoles.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmDefaultRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -41,36 +41,36 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<span>{{:: 'client-roles' | translate}}</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="client" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-md-10" data-ng-show="client">
|
||||
<div class="row" data-ng-hide="client">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||
</div>
|
||||
<div class="row" data-ng-show="client">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Roles from this client that are assignable as a default.</kc-tooltip>
|
||||
<label class="control-label" for="available-client">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'default.available-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r for r in availableClientRoles | orderBy:'toString()'">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientDefaultRole()">
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned-client">Client Default Roles</label>
|
||||
<kc-tooltip>Roles from this client assigned as a default role.</kc-tooltip>
|
||||
<label class="control-label" for="assigned-client">{{:: 'client-default-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'client-default-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientDefRoles"
|
||||
ng-options="r for r in client.defaultRoles | orderBy:'toString()'">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientDefRoles.length == 0" class="btn btn-default" type="submit" ng-click="rmClientDefaultRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span>Admin Events</span>
|
||||
<kc-tooltip>Displays saved admin events for the realm. Events are related to admin account, for example a realm creation. To enable persisted events go to config.</kc-tooltip>
|
||||
<span>{{:: 'admin-events' | translate}}</span>
|
||||
<kc-tooltip>{{:: 'admin-events.tooltip' | translate}}</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">Login Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">Admin Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">Config</a></li>
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">{{:: 'login-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">{{:: 'admin-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">{{:: 'config' | translate}}</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
|
||||
|
@ -26,61 +26,61 @@
|
|||
<button class="btn btn-default" data-ng-click="filter = !filter">
|
||||
<span class="glyphicon glyphicon-plus" data-ng-show="!filter"></span>
|
||||
<span class="glyphicon glyphicon-minus" data-ng-show="filter"></span>
|
||||
Filter
|
||||
{{:: 'filter' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="update()">Update</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="reset()">Reset</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="update()">{{:: 'update' | translate}}</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="reset()">{{:: 'reset' | translate}}</button>
|
||||
</div>
|
||||
<form class="form-horizontal" data-ng-show="filter">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="adminEnabledEventOperations">Operation Types</label>
|
||||
<label class="col-sm-2 control-label" for="adminEnabledEventOperations">{{:: 'operation-types' | translate}}</label>
|
||||
<div class="col-sm-5">
|
||||
<input ui-select2="adminEnabledEventOperationsOptions" id="adminEnabledEventOperations" ng-model="query.operationTypes" data-placeholder="Select operations..."/>
|
||||
<input ui-select2="adminEnabledEventOperationsOptions" id="adminEnabledEventOperations" ng-model="query.operationTypes" data-placeholder="{{:: 'select-operations.placeholder' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="resource">Resource Path</label>
|
||||
<label class="col-sm-2 control-label" for="resource">{{:: 'resource-path' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="resource" name="resource" data-ng-model="query.resourcePath">
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Filter by resource path. Supports wildcards '*' to match a single part of the path and '**' matches multiple parts. For example 'realms/*/clients/asbc' matches client with id asbc in any realm, while or 'realms/master/**' matches anything in the master realm." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'resource-path.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="dateFrom">Date (From)</label>
|
||||
<label class="col-sm-2 control-label" for="dateFrom">{{:: 'date-(from)' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="dateFrom" name="dateFrom" data-ng-model="query.dateFrom" placeholder="yyyy-MM-dd">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="dateTo">Date (To)</label>
|
||||
<label class="col-sm-2 control-label" for="dateTo">{{:: 'date-(to)' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="dateTo" name="dateTo" data-ng-model="query.dateTo" placeholder="yyyy-MM-dd">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Authentication Details</span></legend>
|
||||
<legend><span class="text">{{:: 'authentication-details' | translate}}</span></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="realm">Realm</label>
|
||||
<label class="col-sm-2 control-label" for="realm">{{:: 'realm' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="realm" name="realm" data-ng-model="query.authRealm">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="client">Client</label>
|
||||
<label class="col-sm-2 control-label" for="client">{{:: 'client' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="client" name="client" data-ng-model="query.authClient">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="user">User</label>
|
||||
<label class="col-sm-2 control-label" for="user">{{:: 'user' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="user" name="user" data-ng-model="query.authUser">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="ipAddress">IP Address</label>
|
||||
<label class="col-sm-2 control-label" for="ipAddress">{{:: 'ip-address' | translate}}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control" type="text" id="ipAddress" name="ipAddress" data-ng-model="query.authIpAddress">
|
||||
</div>
|
||||
|
@ -91,10 +91,10 @@
|
|||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="100px">Time</th>
|
||||
<th width="180px">Operation Type</th>
|
||||
<th width="180px">Resource Path</th>
|
||||
<th>Details</th>
|
||||
<th width="100px">{{:: 'time' | translate}}</th>
|
||||
<th width="180px">{{:: 'operation-type' | translate}}</th>
|
||||
<th width="180px">{{:: 'resource-path' | translate}}</th>
|
||||
<th>{{:: 'details' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
|
@ -113,10 +113,10 @@
|
|||
<td>{{event.resourcePath}}</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default btn-xs" data-ng-click="viewAuth(event)">
|
||||
Auth
|
||||
{{:: 'auth' | translate}}
|
||||
</button>
|
||||
<button type="button" class="btn btn-default btn-xs" data-ng-click="viewRepresentation(event)" data-ng-show="event.representation">
|
||||
Representation
|
||||
{{:: 'representation' | translate}}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,112 +1,112 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span>Events Config</span>
|
||||
<kc-tooltip>Displays configuration options to enable persistence of user and admin events.</kc-tooltip>
|
||||
<span>{{:: 'events-config' | translate}}</span>
|
||||
<kc-tooltip>{{:: 'events-config.tooltip' | translate}}</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">Login Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">Admin Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">Config</a></li>
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">{{:: 'login-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">{{:: 'admin-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">{{:: 'config' | translate}}</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<h2>Events Config</h2>
|
||||
<h2>{{:: 'events-config' | translate}}</h2>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageEvents">
|
||||
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="eventsListeners" class="control-label">Event Listeners</label>
|
||||
<label class="col-md-2 control-label" for="eventsListeners" class="control-label">{{:: 'event-listeners' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 ng-model="eventsConfig.eventsListeners" data-placeholder="Select an action..." multiple>
|
||||
<select ui-select2 ng-model="eventsConfig.eventsListeners" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
|
||||
<option ng-repeat="listener in eventListeners" value="{{listener}}">{{listener}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Configure what listeners receive events for the realm." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'event-listeners.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Login Events Settings</span></legend>
|
||||
<legend><span class="text">{{:: 'login-events-settings' | translate}}</span></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="enabled">Save Events</label>
|
||||
<label class="col-md-2 control-label" for="enabled">{{:: 'save-events' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.eventsEnabled" name="enabled" id="enabled" onoffswitch />
|
||||
<input ng-model="eventsConfig.eventsEnabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="If enabled login events are saved to the database which makes events available to the admin and account management consoles." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'login.save-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="enabledEventTypes" class="control-label">Saved Types</label>
|
||||
<label class="col-md-2 control-label" for="enabledEventTypes" class="control-label">{{:: 'saved-types' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input ui-select2="eventSelectOptions" id="enabledEventTypes" ng-model="eventsConfig.enabledEventTypes" data-placeholder="Select event types..."/>
|
||||
<input ui-select2="eventSelectOptions" id="enabledEventTypes" ng-model="eventsConfig.enabledEventTypes" data-placeholder="{{:: 'select-event-types.placeholder' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Configure what event types are saved." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'saved-types.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageEvents && eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="password">Clear Events</label>
|
||||
<label class="col-md-2 control-label" for="password">{{:: 'clear-events' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearEvents()" >Clear Events</button>
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearEvents()" >{{:: 'clear-events' | translate}}</button>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Deletes all events in the database." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'clear-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-md-2 control-label" for="expiration">Expiration</label>
|
||||
<label class="col-md-2 control-label" for="expiration">{{:: 'expiration' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" data-ng-model="eventsConfig.eventsExpiration" id="expiration" name="expiration" min="0"/>
|
||||
</div>
|
||||
<div class="col-md-2 select-kc">
|
||||
<select name="expirationUnit" data-ng-model="eventsConfig.expirationUnit" >
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
<option>{{:: 'minutes' | translate}}</option>
|
||||
<option>{{:: 'hours' | translate}}</option>
|
||||
<option>{{:: 'days' | translate}}</option>
|
||||
</select>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Sets the expiration for events. Expired events are periodically deleted from the database." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'events.expiration.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Admin Events Settings</span></legend>
|
||||
<legend><span class="text">{{:: 'admin-events-settings' | translate}}</span></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="adminEventsEnabled">Save Events</label>
|
||||
<label class="col-md-2 control-label" for="adminEventsEnabled">{{:: 'save-events' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.adminEventsEnabled" name="adminEventsEnabled" id="adminEventsEnabled" onoffswitch />
|
||||
<input ng-model="eventsConfig.adminEventsEnabled" name="adminEventsEnabled" id="adminEventsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="If enabled admin events are saved to the database which makes events available to the admin console." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'admin.save-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="eventsConfig.adminEventsEnabled">
|
||||
<label class="col-md-2 control-label" for="adminEventsDetailsEnabled">Include Representation</label>
|
||||
<label class="col-md-2 control-label" for="adminEventsDetailsEnabled">{{:: 'include-representation' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.adminEventsDetailsEnabled" name="adminEventsDetailsEnabled" id="adminEventsDetailsEnabled" onoffswitch />
|
||||
<input ng-model="eventsConfig.adminEventsDetailsEnabled" name="adminEventsDetailsEnabled" id="adminEventsDetailsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Include JSON representation for create and update requests." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'include-representation.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageEvents && eventsConfig.adminEventsEnabled">
|
||||
<label class="col-md-2 control-label" for="password">Clear Admin Events</label>
|
||||
<label class="col-md-2 control-label" for="password">{{:: 'clear-admin-events' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearAdminEvents()" >Clear Admin Events</button>
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearAdminEvents()" >{{:: 'clear-admin-events' | translate}}</button>
|
||||
</div>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="Deletes all admin events in the database." class="fa fa-info-circle"></span>
|
||||
<span tooltip-trigger="mouseover mouseout" tooltip-placement="right" tooltip="{{:: 'clear-admin-events.tooltip' | translate}}" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageEvents">
|
||||
<button data-kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<button data-kc-save data-ng-show="changed">Save</button>
|
||||
<button data-kc-reset data-ng-show="changed">{{:: 'clear-changes' | translate}}</button>
|
||||
<button data-kc-save data-ng-show="changed">{{:: 'save' | translate}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span>Events</span>
|
||||
<kc-tooltip>Displays saved events for the realm. Events are related to user accounts, for example a user login. To enable persisted events go to config.</kc-tooltip>
|
||||
<span>{{:: 'events' | translate}}</span>
|
||||
<kc-tooltip>{{:: 'events.tooltip' | translate}}</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">Login Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">Admin Events</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">Config</a></li>
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">{{:: 'login-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/admin-events">{{:: 'admin-events' | translate}}</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">{{:: 'config' | translate}}</a></li>
|
||||
</ul>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
|
@ -24,39 +24,39 @@
|
|||
<button class="btn btn-default" data-ng-click="filter = !filter">
|
||||
<span class="glyphicon glyphicon-plus" data-ng-show="!filter"></span>
|
||||
<span class="glyphicon glyphicon-minus" data-ng-show="filter"></span>
|
||||
Filter
|
||||
{{:: 'filter' | translate}}
|
||||
</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="update()">Update</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="reset()">Reset</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="update()">{{:: 'update' | translate}}</button>
|
||||
<button class="btn btn-default btn-default" data-ng-click="reset()">{{:: 'reset' | translate}}</button>
|
||||
</div>
|
||||
<form class="form-horizontal">
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-md-2 control-label" for="eventTypes">Event Type</label>
|
||||
<label class="col-md-2 control-label" for="eventTypes">{{:: 'event-type' | translate}}</label>
|
||||
<div class="col-sm-5">
|
||||
<input ui-select2="eventSelectOptions" id="eventTypes" ng-model="query.type" data-placeholder="Select event types..."/>
|
||||
<input ui-select2="eventSelectOptions" id="eventTypes" ng-model="query.type" data-placeholder="{{:: 'select-event-types.placeholder' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-md-2 control-label" for="client">Client</label>
|
||||
<label class="col-md-2 control-label" for="client">{{:: 'client' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="client" name="client" data-ng-model="query.client">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-md-2 control-label" for="user">User</label>
|
||||
<label class="col-md-2 control-label" for="user">{{:: 'user' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="user" name="user" data-ng-model="query.user">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-md-2 control-label" for="dateFrom">Date (From)</label>
|
||||
<label class="col-md-2 control-label" for="dateFrom">{{:: 'date-(from)' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="dateFrom" name="dateFrom" data-ng-model="query.dateFrom" placeholder="yyyy-MM-dd">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-md-2 control-label" for="dateTo">Date (To)</label>
|
||||
<label class="col-md-2 control-label" for="dateTo">{{:: 'date-(to)' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="dateTo" name="dateTo" data-ng-model="query.dateTo" placeholder="yyyy-MM-dd">
|
||||
</div>
|
||||
|
@ -66,9 +66,9 @@
|
|||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="100px">Time</th>
|
||||
<th width="180px">Event Type</th>
|
||||
<th>Details</th>
|
||||
<th width="100px">{{:: 'time' | translate}}</th>
|
||||
<th width="180px">{{:: 'event-type' | translate}}</th>
|
||||
<th>{{:: 'details' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
|
@ -86,12 +86,12 @@
|
|||
<td>{{event.type}}</td>
|
||||
<td>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr><td width="100px">Client</td><td>{{event.clientId}}</td></tr>
|
||||
<tr><td>User</td><td>{{event.userId}}</td></tr>
|
||||
<tr><td>IP Address</td><td>{{event.ipAddress}}</td></tr>
|
||||
<tr data-ng-show="event.error"><td>Error</td><td>{{event.error}}</td></tr>
|
||||
<tr><td width="100px">{{:: 'client' | translate}}</td><td>{{event.clientId}}</td></tr>
|
||||
<tr><td>{{:: 'user' | translate}}</td><td>{{event.userId}}</td></tr>
|
||||
<tr><td>{{:: 'ip-address' | translate}}</td><td>{{event.ipAddress}}</td></tr>
|
||||
<tr data-ng-show="event.error"><td>{{:: 'error' | translate}}</td><td>{{event.error}}</td></tr>
|
||||
<tr>
|
||||
<td>Details</td>
|
||||
<td>{{:: 'details' | translate}}</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default btn-xs" ng-click="event.collapse = !event.collapse">
|
||||
<span class="glyphicon glyphicon-plus" data-ng-show="!event.collapse"></span>
|
||||
|
@ -106,7 +106,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="event.representation">
|
||||
<td>Representation</td>
|
||||
<td>{{:: 'representation' | translate}}</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default btn-xs" ng-click="collapseRep = !collapseRep">
|
||||
<span class="glyphicon glyphicon-plus" data-ng-show="!collapseRep"></span>
|
||||
|
|
|
@ -23,20 +23,20 @@
|
|||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="smtpSSL">{{:: 'enable-ssl' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.ssl" name="smtpSSL" id="smtpSSL" onoffswitch onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
<input ng-model="realm.smtpServer.ssl" name="smtpSSL" id="smtpSSL" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="smtpStartTLS">{{:: 'enable-start-tls' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.starttls" name="smtpStartTLS" id="smtpStartTLS" onoffswitch onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
<input ng-model="realm.smtpServer.starttls" name="smtpStartTLS" id="smtpStartTLS" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="smtpAuth">{{:: 'enable-auth' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.auth" name="smtpAuth" id="smtpAuth" onoffswitch onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
<input ng-model="realm.smtpServer.auth" name="smtpAuth" id="smtpAuth" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="realm.smtpServer.auth">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<select class="form-control" id="loginTheme"
|
||||
ng-model="realm.loginTheme"
|
||||
ng-options="o.name as o.name for o in serverInfo.themes.login">
|
||||
<option value="" disabled selected>{{:: 'select-one' | translate}}</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -23,7 +23,7 @@
|
|||
<select class="form-control" id="accountTheme"
|
||||
ng-model="realm.accountTheme"
|
||||
ng-options="o.name as o.name for o in serverInfo.themes.account">
|
||||
<option value="" disabled selected>{{:: 'select-one' | translate}}</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<select class="form-control" id="adminTheme"
|
||||
ng-model="realm.adminTheme"
|
||||
ng-options="o.name as o.name for o in serverInfo.themes.admin">
|
||||
<option value="" disabled selected>{{:: 'select-one' | translate}}</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -49,7 +49,7 @@
|
|||
<select class="form-control" id="emailTheme"
|
||||
ng-model="realm.emailTheme"
|
||||
ng-options="o.name as o.name for o in serverInfo.themes.email">
|
||||
<option value="" disabled selected>{{:: 'select-one' | translate}}</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -79,7 +79,7 @@
|
|||
ng-options="o as o for o in realm.supportedLocales"
|
||||
ng-required="realm.internationalizationEnabled"
|
||||
ng-disabled="!realm.internationalizationEnabled">
|
||||
<option value="" disabled selected>{{:: 'select-one' | translate}}</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Authentication</h1>
|
||||
<h1>{{:: 'authentication' | translate}}</h1>
|
||||
|
||||
<kc-tabs-authentication></kc-tabs-authentication>
|
||||
<table class="table table-striped table-bordered">
|
||||
|
@ -7,14 +7,14 @@
|
|||
<tr data-ng-hide="unregisteredRequiredActions.length == 0">
|
||||
<th colspan = "3" class="kc-table-actions">
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-default" data-ng-click="register()">Register</button>
|
||||
<button class="btn btn-default" data-ng-click="register()">{{:: 'register' | translate}}</button>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="requiredActions.length == 0">
|
||||
<th>Required Action</th>
|
||||
<th>Enabled</th>
|
||||
<th>Default Action <i class="fa fa-question-circle text-muted" tooltip-trigger="mouseover mouseout" tooltip="If enabled, any new user will have this required action assigned to it." tooltip-placement="top"></i></th>
|
||||
<th>{{:: 'required-action' | translate}}</th>
|
||||
<th>{{:: 'enabled' | translate}}</th>
|
||||
<th>{{:: 'default-action' | translate}} <i class="fa fa-question-circle text-muted" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'auth.default-action.tooltip' | translate}}" tooltip-placement="top"></i></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -24,7 +24,7 @@
|
|||
<td><input type="checkbox" ng-model="requiredAction.defaultAction" ng-change="updateRequiredAction(requiredAction)" id="{{requiredAction.alias}}.defaultAction"></td>
|
||||
</tr>
|
||||
<tr data-ng-show="requiredActions.length == 0">
|
||||
<td>No required actions configured</td>
|
||||
<td>{{:: 'no-required-actions-configured' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">{{:: 'roles' | translate}}</a></li>
|
||||
<li data-ng-hide="create">{{role.name}}</li>
|
||||
<li data-ng-show="create">Add Role</li>
|
||||
<li data-ng-show="create">{{:: 'add-role' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<h1 data-ng-hide="create">{{role.name|capitalize}} <i id="removeRole" class="pficon pficon-delete clickable" data-ng-show="!create && access.manageRealm"
|
||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||
<h1 data-ng-show="create">Add Role</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-role' | translate}}</h1>
|
||||
|
||||
<form class="form-horizontal clearfix" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Role</span></legend>
|
||||
<legend><span class="text">{{:: 'role' | translate}}</span></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="name"><span class="required" data-ng-show="create">*</span> Role name</label>
|
||||
<label class="col-md-2 control-label" for="name"><span class="required" data-ng-show="create">*</span> {{:: 'role-name' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
|
||||
|
@ -22,71 +22,71 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="scopeParamRequired">Scope Param Required </label>
|
||||
<kc-tooltip>This role will be granted just if scope parameter with role name is used during authorization/token request.</kc-tooltip>
|
||||
<label class="col-md-2 control-label" for="scopeParamRequired">{{:: 'scope-param-required' | translate}} </label>
|
||||
<kc-tooltip>{{:: 'scope-param-required.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="role.scopeParamRequired" name="scopeParamRequired" id="scopeParamRequired" onoffswitch />
|
||||
<input ng-model="role.scopeParamRequired" name="scopeParamRequired" id="scopeParamRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="create">
|
||||
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
||||
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">{{:: 'composite-roles' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
|
||||
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'composite-roles.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
|
||||
<button kc-save data-ng-show="changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
|
||||
<legend uncollapsed class="collapsible"><span class="text">Composite Roles</span> </legend>
|
||||
<legend uncollapsed class="collapsible"><span class="text">{{:: 'composite-roles' | translate}}</span> </legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<label class="control-label">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'composite.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles | orderBy:'name'">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmRoles.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label">Associated Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<label class="control-label">{{:: 'associated-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'composite.associated-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings | orderBy:'name'">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -95,37 +95,37 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<span>{{:: 'client-roles' | translate}}</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row" data-ng-hide="compositeClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||
</div>
|
||||
<div class="row" data-ng-show="compositeClient">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Roles from this client that you can associate to this composite role.</kc-tooltip>
|
||||
<label class="control-label" for="available-client">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'composite.available-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles | orderBy:'name'">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||
Add selected <i class="fa fa-angle-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned-client">Associated Roles</label>
|
||||
<kc-tooltip>Client roles associated with this composite role.</kc-tooltip>
|
||||
<label class="control-label" for="assigned-client">{{:: 'associated-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'composite.associated-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings | orderBy:'name'">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||
<i class="fa fa-angle-left"></i> Remove selected
|
||||
<i class="fa fa-angle-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
<h1>Roles</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/roles">{{:: 'realm-roles' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/default-roles">{{:: 'default-roles' | translate}}</a></li>
|
||||
</ul>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
|
@ -13,7 +13,7 @@
|
|||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="searchQuery" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="searchQuery" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
|
@ -21,33 +21,33 @@
|
|||
</div>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<a id="createRole" class="btn btn-default" href="#/create/role/{{realm.realm}}">Add Role</a>
|
||||
<a id="createRole" class="btn btn-default" href="#/create/role/{{realm.realm}}">{{:: 'add-role' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-show="roles && roles.length > 0">
|
||||
<th>Role Name</th>
|
||||
<th>Composite</th>
|
||||
<th>Description</th>
|
||||
<th colspan="2">Actions</th>
|
||||
<th>{{:: 'role-name' | translate}}</th>
|
||||
<th>{{:: 'composite' | translate}}</th>
|
||||
<th>{{:: 'description' | translate}}</th>
|
||||
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="role in roles | orderBy:'name' | filter:{name: searchQuery}">
|
||||
<td><a href="#/realms/{{realm.realm}}/roles/{{role.id}}">{{role.name}}</a></td>
|
||||
<td>{{role.composite}}</td>
|
||||
<td translate="{{role.composite}}"></td>
|
||||
<td>{{role.description}}</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/roles/{{role.id}}">Edit</button>
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/roles/{{role.id}}">{{:: 'edit' | translate}}</button>
|
||||
</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeRole(role)">Delete</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeRole(role)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="(roles | filter:{name: searchQuery}).length == 0">
|
||||
<td class="text-muted" colspan="3" data-ng-show="searchQuery">No results</td>
|
||||
<td class="text-muted" colspan="3" data-ng-hide="searchQuery">No realm roles available</td>
|
||||
<td class="text-muted" colspan="3" data-ng-show="searchQuery">{{:: 'no-results' | translate}}</td>
|
||||
<td class="text-muted" colspan="3" data-ng-hide="searchQuery">{{:: 'no-realm-roles-available' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -8,37 +8,37 @@
|
|||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<div class="form-group" kc-read-only="!access.manageUsers">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<label class="control-label" for="available">{{:: 'available-roles' | translate}}</label>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmRoles.length == 0" ng-disabled="c.length == 0" class="btn btn-default" type="submit" ng-click="addRealmRole()">
|
||||
Add selected <i class="fa fa-angle-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-right"></i>
|
||||
</button>
|
||||
<kc-tooltip>Realm roles that can be assigned to the user.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'user.add-selected.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
||||
<kc-tooltip>Realm roles mapped to the user</kc-tooltip>
|
||||
<label class="control-label" for="assigned">{{:: 'assigned-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'user.assigned-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button ng-disabled="selectedRealmMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteRealmRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="realm-composite">Effective Roles</label>
|
||||
<kc-tooltip>All realm role mappings. Some roles here might be inherited from a mapped composite role.</kc-tooltip>
|
||||
<label class="control-label" for="realm-composite">{{:: 'effective-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'user.effective-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="realm-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
@ -51,40 +51,40 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<span>{{:: 'client-roles' | translate}}</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-md-10" kc-read-only="!access.manageUsers">
|
||||
<div class="row" data-ng-hide="targetClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
<div class="col-md-4"><span class="text-muted">{{:: 'select-client-to-view-roles' | translate}}</span></div>
|
||||
</div>
|
||||
<div class="row" data-ng-show="targetClient">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Assignable roles from this client.</kc-tooltip>
|
||||
<label class="control-label" for="available-client">{{:: 'available-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'user.available-roles.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientRoles.length == 0" class="btn btn-default" type="submit" ng-click="addClientRole()">
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
{{:: 'add-selected' | translate}} <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned-client">Assigned Roles</label>
|
||||
<kc-tooltip>Role mappings for this client.</kc-tooltip>
|
||||
<label class="control-label" for="assigned-client">{{:: 'assigned-roles' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'user.assigned-roles-client.tooltip' | translate}}</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button ng-disabled="selectedClientMappings.length == 0" class="btn btn-default" type="submit" ng-click="deleteClientRole()">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
<i class="fa fa-angle-double-left"></i> {{:: 'remove-selected' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">Effective Roles <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="Role mappings for this client. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span></label>
|
||||
<label class="control-label" for="client-composite">{{:: 'effective-roles' | translate}} <span tooltip-placement="right" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'user.effective-roles-client.tooltip' | translate}}" class="fa fa-info-circle"></span></label>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
Server Info
|
||||
{{:: 'server-info' | translate}}
|
||||
<i id="serverInfoReload" class="pficon pficon-restart clickable" data-ng-click="serverInfoReload()"></i>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="#/server-info">Info</a></li>
|
||||
<li class="active"><a href="#/server-info/providers">Providers</a></li>
|
||||
<li><a href="#/server-info">{{:: 'info' | translate}}</a></li>
|
||||
<li class="active"><a href="#/server-info/providers">{{:: 'providers' | translate}}</a></li>
|
||||
</ul>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
|
@ -16,15 +16,15 @@
|
|||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="search" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="20%">SPI</th>
|
||||
<th>Providers</th>
|
||||
<th width="20%">{{:: 'spi' | translate}}</th>
|
||||
<th>{{:: 'providers' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -1,100 +1,100 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
Server Info
|
||||
{{:: 'server-info' | translate}}
|
||||
<i id="serverInfoReload" class="pficon pficon-restart clickable" data-ng-click="serverInfoReload()"></i>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#/server-info">Info</a></li>
|
||||
<li><a href="#/server-info/providers">Providers</a></li>
|
||||
<li class="active"><a href="#/server-info">{{:: 'info' | translate}}</a></li>
|
||||
<li><a href="#/server-info/providers">{{:: 'providers' | translate}}</a></li>
|
||||
</ul>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td width="20%">Server Version</td>
|
||||
<td width="20%">{{:: 'server-version' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.version}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Server Time</td>
|
||||
<td>{{:: 'server-time' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.serverTime}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Server Uptime</td>
|
||||
<td>{{:: 'server-uptime' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.uptime}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<fieldset>
|
||||
<legend>Memory</legend>
|
||||
<legend>{{:: 'memory' | translate}}</legend>
|
||||
<table class="table table-striped table-bordered" style="margin-top: 0;">
|
||||
<tr>
|
||||
<td width="20%">Total Memory</td>
|
||||
<td width="20%">{{:: 'total-memory' | translate}}</td>
|
||||
<td>{{serverInfo.memoryInfo.totalFormated}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Free Memory</td>
|
||||
<td>{{:: 'free-memory' | translate}}</td>
|
||||
<td>{{serverInfo.memoryInfo.freeFormated}} ({{serverInfo.memoryInfo.freePercentage}}%)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Used Memory</td>
|
||||
<td>{{:: 'used-memory' | translate}}</td>
|
||||
<td>{{serverInfo.memoryInfo.usedFormated}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>System</legend>
|
||||
<legend>{{:: 'system' | translate}}</legend>
|
||||
<table class="table table-striped table-bordered" style="margin-top: 0;">
|
||||
<tr>
|
||||
<td width="20%">Current Working Directory</td>
|
||||
<td width="20%">{{:: 'current-working-directory' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.userDir}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java Version</td>
|
||||
<td>{{:: 'java-version' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaVersion}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java Vendor</td>
|
||||
<td>{{:: 'java-vendor' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaVendor}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java Runtime</td>
|
||||
<td>{{:: 'java-runtime' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaRuntime}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java VM</td>
|
||||
<td>{{:: 'java-vm' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaVm}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java VM Version</td>
|
||||
<td>{{:: 'java-vm-version' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaVmVersion}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Java Home</td>
|
||||
<td>{{:: 'java-home' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.javaHome}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>User Name</td>
|
||||
<td>{{:: 'user-name' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.userName}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>User Timezone</td>
|
||||
<td>{{:: 'user-timezone' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.userTimezone}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>User Locale</td>
|
||||
<td>{{:: 'user-locale' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.userLocale}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>System Encoding</td>
|
||||
<td>{{:: 'system-encoding' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.fileEncoding}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Operating System</td>
|
||||
<td>{{:: 'operating-system' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.osName}} {{serverInfo.systemInfo.osVersion}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OS Architecture</td>
|
||||
<td>{{:: 'os-architecture' | translate}}</td>
|
||||
<td>{{serverInfo.systemInfo.osArchitecture}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -10,9 +10,9 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
<th>Actions</th>
|
||||
<th>{{:: 'key' | translate}}</th>
|
||||
<th>{{:: 'value' | translate}}</th>
|
||||
<th>{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -20,14 +20,14 @@
|
|||
<td>{{key}}</td>
|
||||
<td><input ng-model="user.attributes[key]" class="form-control" type="text" name="{{key}}" id="attribute-{{key}}" /></td>
|
||||
<td class="kc-action-cell">
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" data-ng-click="removeAttribute(key)">Delete</button>
|
||||
<button type="button" class="btn btn-default btn-block btn-sm" data-ng-click="removeAttribute(key)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input ng-model="newAttribute.key" class="form-control" type="text" id="newAttributeKey" /></td>
|
||||
<td><input ng-model="newAttribute.value" class="form-control" type="text" id="newAttributeValue" /></td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="addAttribute()" data-ng-disabled="!newAttribute.key.length || !newAttribute.value.length">Add</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="addAttribute()" data-ng-disabled="!newAttribute.key.length || !newAttribute.value.length">{{:: 'add' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -35,8 +35,8 @@
|
|||
|
||||
<div class="form-group" data-ng-show="access.manageUsers">
|
||||
<div class="col-md-12">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -9,11 +9,11 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Client</th>
|
||||
<th>Granted Roles</th>
|
||||
<th>Granted Protocol Mappers</th>
|
||||
<th>Additional Grants</th>
|
||||
<th>Action</th>
|
||||
<th>{{:: 'client' | translate}}</th>
|
||||
<th>{{:: 'granted-roles' | translate}}</th>
|
||||
<th>{{:: 'granted-protocol-mappers' | translate}}</th>
|
||||
<th>{{:: 'additional-grants' | translate}}</th>
|
||||
<th>{{:: 'action' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -43,7 +43,7 @@
|
|||
</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" ng-click="revokeConsent(consent.clientId)">
|
||||
<i class="pficon pficon-delete"></i> Revoke
|
||||
<i class="pficon pficon-delete"></i> {{:: 'revoke' | translate}}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -9,60 +9,60 @@
|
|||
<form class="form-horizontal" name="userForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="password">New password <span class="required" data-ng-show="create">*</span></label>
|
||||
<label class="col-md-2 control-label" for="password">{{:: 'new-password' | translate}} <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="password" name="password" data-ng-model="password" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="confirmPassword">Password confirmation <span class="required" data-ng-show="create">*</span></label>
|
||||
<label class="col-md-2 control-label" for="confirmPassword">{{:: 'password-confirmation' | translate}} <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-md-2 control-label" for="temporaryPassword">Temporary</label>
|
||||
<label class="col-md-2 control-label" for="temporaryPassword">{{:: 'temporary' | translate}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="temporaryPassword" name="temporaryPassword" id="temporaryPassword" onoffswitch />
|
||||
<input ng-model="temporaryPassword" name="temporaryPassword" id="temporaryPassword" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
|
||||
</div>
|
||||
<kc-tooltip>If enabled user is required to change password on next login</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'credentials.temporary.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="password && confirmPassword">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)">Reset Password</button>
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)">{{:: 'reset-password' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="border-top" data-ng-show="user.totp">
|
||||
<div class="form-group" data-ng-show="user.totp">
|
||||
<label class="col-md-2 control-label">Remove totp</label>
|
||||
<label class="col-md-2 control-label">{{:: 'remove-totp' | translate}}</label>
|
||||
<div class="col-sm-5" data-ng-show="user.totp">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="removeTotp()" tooltip-trigger="mouseover mouseout" tooltip="Remove one time password generator for user." tooltip-placement="right">Remove TOTP</button>
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="removeTotp()" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'credentials.remove-totp.tooltip' | translate}}" tooltip-placement="right">{{:: 'remove-totp' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset >
|
||||
<fieldset class="border-top" data-ng-show="user.email">
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="reqActions">Reset Actions</label>
|
||||
<label class="col-md-2 control-label" for="reqActions">{{:: 'reset-actions' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 id="reqActions" ng-model="emailActions" data-placeholder="Select an action..." multiple>
|
||||
<select ui-select2 id="reqActions" ng-model="emailActions" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
|
||||
<option ng-repeat="action in userReqActionList" value="{{action.alias}}">{{action.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<kc-tooltip>Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'credentials.reset-actions.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="reqActionsEmail">Reset Actions Email</label>
|
||||
<label class="col-md-2 control-label" for="reqActionsEmail">{{:: 'reset-actions-email' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<button id="reqActionsEmail" class="btn btn-default" data-ng-click="sendExecuteActionsEmail()">Send Email</button>
|
||||
<button id="reqActionsEmail" class="btn btn-default" data-ng-click="sendExecuteActionsEmail()">{{:: 'send-email' | translate}}</button>
|
||||
</div>
|
||||
<kc-tooltip>Sends an email to user with an embedded link. Clicking on link will allow the user to execute the reset actions. They will not have to login prior to this. For example, set the action to update password, click this button, and the user will be able to change their password without logging in.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'credentials.reset-actions-email.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li data-ng-hide="create">{{user.username}}</li>
|
||||
<li data-ng-show="create">Add User</li>
|
||||
<li data-ng-show="create">{{:: 'add-user' | translate}}</li>
|
||||
</ol>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
@ -11,21 +11,21 @@
|
|||
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"for="id">ID</label>
|
||||
<label class="col-md-2 control-label"for="id">{{:: 'id' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="id" name="id" data-ng-model="user.id" autofocus data-ng-readonly="true">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"for="id">Created at</label>
|
||||
<label class="col-md-2 control-label"for="id">{{:: 'created-at' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
{{user.createdTimestamp|date:'shortDate'}} {{user.createdTimestamp|date:'mediumTime'}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
|
||||
<label class="col-md-2 control-label"for="username">{{:: 'username' | translate}} <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<!-- Characters >,<,/,\ are forbidden in username -->
|
||||
<input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus
|
||||
|
@ -35,7 +35,7 @@
|
|||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="email">Email</label>
|
||||
<label class="col-md-2 control-label" for="email">{{:: 'email' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="email" name="email" id="email"
|
||||
|
@ -43,7 +43,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="firstName">First Name</label>
|
||||
<label class="col-md-2 control-label" for="firstName">{{:: 'first-name' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" name="firstName" id="firstName"
|
||||
|
@ -51,7 +51,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="lastName">Last Name</label>
|
||||
<label class="col-md-2 control-label" for="lastName">{{:: 'last-name' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" name="lastName" id="lastName"
|
||||
|
@ -60,79 +60,79 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-md-2 control-label" for="userEnabled">User Enabled</label>
|
||||
<label class="col-md-2 control-label" for="userEnabled">{{:: 'user-enabled' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" ng-disabled="!access.manageUsers" onoffswitch />
|
||||
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" ng-disabled="!access.manageUsers" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<kc-tooltip>A disabled user cannot login.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'user-enabled.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="realm.bruteForceProtected && !create">
|
||||
<label class="col-md-2 control-label" for="temporarilyDisabled">User Temporarily Locked</label>
|
||||
<label class="col-md-2 control-label" for="temporarilyDisabled">{{:: 'user-temporarily-locked' | translate}}</label>
|
||||
<div class="col-md-1">
|
||||
<input ng-model="temporarilyDisabled" name="temporarilyDisabled" id="temporarilyDisabled" data-ng-readonly="true" data-ng-disabled="true" onoffswitch />
|
||||
<input ng-model="temporarilyDisabled" name="temporarilyDisabled" id="temporarilyDisabled" data-ng-readonly="true" data-ng-disabled="true" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<kc-tooltip>The user may have been locked due to failing to login too many times.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'user-temporarily-locked.tooltip' | translate}}</kc-tooltip>
|
||||
<div class="col-sm-2">
|
||||
<button type="submit" data-ng-click="unlockUser()" data-ng-show="temporarilyDisabled" class="btn btn-default">Unlock User</button>
|
||||
<button type="submit" data-ng-click="unlockUser()" data-ng-show="temporarilyDisabled" class="btn btn-default">{{:: 'unlock-user' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="!create && user.federationLink">
|
||||
<label class="col-md-2 control-label" for="userEnabled">Federation Link</label>
|
||||
<label class="col-md-2 control-label" for="userEnabled">{{:: 'federation-link' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<a href="{{federationLink}}">{{federationLinkName}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-md-2 control-label" for="emailVerified">Email verified</label>
|
||||
<label class="col-md-2 control-label" for="emailVerified">{{:: 'email-verified' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" ng-disabled="!access.manageUsers" onoffswitch />
|
||||
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" ng-disabled="!access.manageUsers" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<kc-tooltip>Has the user's email been verified?</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'email-verified.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="reqActions">Required User Actions</label>
|
||||
<label class="col-md-2 control-label" for="reqActions">{{:: 'required-user-actions' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 id="reqActions" ng-model="user.requiredActions" data-placeholder="Select an action..." multiple>
|
||||
<select ui-select2 id="reqActions" ng-model="user.requiredActions" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
|
||||
<option ng-repeat="action in userReqActionList" value="{{action.alias}}">{{action.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<kc-tooltip>Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'required-user-actions.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix" data-ng-if="realm.internationalizationEnabled">
|
||||
<label class="col-md-2 control-label" for="locale">Locale</label>
|
||||
<label class="col-md-2 control-label" for="locale">{{:: 'locale' | translate}}</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="locale"
|
||||
ng-model="user.attributes.locale"
|
||||
ng-options="o as o for o in realm.supportedLocales">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="impersonate">Impersonate user</label>
|
||||
<label class="col-md-2 control-label" for="impersonate">{{:: 'impersonate-user' | translate}}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<button id="impersonate" data-ng-show="access.impersonation" class="btn btn-default" data-ng-click="impersonate()">Impersonate</button>
|
||||
<button id="impersonate" data-ng-show="access.impersonation" class="btn btn-default" data-ng-click="impersonate()">{{:: 'impersonate' | translate}}</button>
|
||||
</div>
|
||||
<kc-tooltip>Login as this user. If user is in same realm as you, your current login session will be logged out before you are logged in as this user.</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'impersonate-user.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-show="changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-disabled="!changed">Save</button>
|
||||
<button kc-reset data-ng-disabled="!changed">Cancel</button>
|
||||
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
|
||||
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
<h1 data-ng-show="create">Add Identity Provider Link</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-identity-provider-link' | translate}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" for="identityProvider">Identity Provier <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label" for="identityProvider">{{:: 'identity-provider' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<select class="form-control" id="identityProvider"
|
||||
|
@ -23,18 +23,18 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="userId">Identity Provider User ID <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label" for="userId">{{:: 'identity-provider-user-id' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="userId" type="text" ng-model="federatedIdentity.userId" required>
|
||||
</div>
|
||||
<kc-tooltip>Unique ID of the user on the Identity Provider side</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'identity-provider-user-id.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-md-2 control-label" for="userName">Identity Provider Username <span class="required">*</span></label>
|
||||
<label class="col-md-2 control-label" for="userName">{{:: 'identity-provider-username' | translate}} <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="userName" type="text" ng-model="federatedIdentity.userName" required>
|
||||
</div>
|
||||
<kc-tooltip>Username on the Identity Provider side</kc-tooltip>
|
||||
<kc-tooltip>{{:: 'identity-provider-username.tooltip' | translate}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
@ -42,8 +42,8 @@
|
|||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save>{{:: 'save' | translate}}</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -12,16 +12,16 @@
|
|||
<th class="kc-table-actions" colspan="4">
|
||||
<div class="form-inline">
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="#/create/federated-identity/{{realm.realm}}/{{user.id}}">Create</a>
|
||||
<a class="btn btn-primary" href="#/create/federated-identity/{{realm.realm}}/{{user.id}}">{{:: 'create' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="federatedIdentities.length == 0">
|
||||
<th>Identity Provider Alias</th>
|
||||
<th>Provider user ID</th>
|
||||
<th>Provider username</th>
|
||||
<th>Action</th>
|
||||
<th>{{:: 'identity-provider-alias' | translate}}</th>
|
||||
<th>{{:: 'provider-user-id' | translate}}</th>
|
||||
<th>{{:: 'provider-username' | translate}}</th>
|
||||
<th>{{:: 'action' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -30,11 +30,11 @@
|
|||
<td>{{identity.userId}}</td>
|
||||
<td>{{identity.userName}}</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" ng-click="removeProviderLink(identity)">Remove</button>
|
||||
<button class="btn btn-default btn-block btn-sm" ng-click="removeProviderLink(identity)">{{:: 'remove' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="federatedIdentities.length == 0">
|
||||
<td>No identity provider links available</td>
|
||||
<td>{{:: 'no-identity-provider-links-available' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span>User Federation</span>
|
||||
<span>{{:: 'user-federation' | translate}}</span>
|
||||
</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
|
@ -12,17 +12,17 @@
|
|||
<select class="form-control" ng-model="selectedProvider"
|
||||
ng-options="p.id for p in providers"
|
||||
data-ng-change="addProvider(selectedProvider); selectedProvider = null">
|
||||
<option value="" disabled selected>Add provider...</option>
|
||||
<option value="" disabled selected>{{:: 'add-provider.placeholder' | translate}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-show="instances && instances.length > 0">
|
||||
<th>ID</th>
|
||||
<th>Provider Name</th>
|
||||
<th>Priority</th>
|
||||
<th colspan="2">Actions</th>
|
||||
<th>{{:: 'id' | translate}}</th>
|
||||
<th>{{:: 'provider-name' | translate}}</th>
|
||||
<th>{{:: 'priority' | translate}}</th>
|
||||
<th colspan="2">{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -31,14 +31,14 @@
|
|||
<td>{{instance.providerName|capitalize}}</td>
|
||||
<td>{{instance.priority}}</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">Edit</button>
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{:: 'edit' | translate}}</button>
|
||||
</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeUserFederation(instance)">Delete</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeUserFederation(instance)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!instances || instances.length == 0">
|
||||
<td class="text-muted">No user federation providers configured</td>
|
||||
<td class="text-muted">{{:: 'no-user-federation-providers-configured' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -18,11 +18,11 @@
|
|||
<tr>
|
||||
<th class="kc-table-actions" colspan="5">
|
||||
<div class="form-inline">
|
||||
<label class="control-label">Group Membership</label>
|
||||
<kc-tooltip>Groups user is a member of. Select a listed group and click the Leave button to leave the group.</kc-tooltip>
|
||||
<label class="control-label">{{:: 'group-membership' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'group-membership.tooltip' | translate}}</kc-tooltip>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageUsers">
|
||||
<button id="leaveGroups" class="btn btn-default" ng-click="leaveGroup()">Leave</button>
|
||||
<button id="leaveGroups" class="btn btn-default" ng-click="leaveGroup()">{{:: 'leave' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
@ -34,7 +34,7 @@
|
|||
<select id="groupMembership" class="form-control" size=5
|
||||
ng-model="selectedGroup"
|
||||
ng-options="r.path for r in groupMemberships">
|
||||
<option style="display:none" value="">select a type</option>
|
||||
<option style="display:none" value="">{{:: 'select-a-type.placeholder' | translate}}</option>
|
||||
</select>
|
||||
|
||||
|
||||
|
@ -50,11 +50,11 @@
|
|||
<th class="kc-table-actions" colspan="5">
|
||||
|
||||
<div class="form-inline">
|
||||
<label class="control-label">Available Groups</label>
|
||||
<kc-tooltip>Groups a user can join. Select a group and click the join button.</kc-tooltip>
|
||||
<label class="control-label">{{:: 'available-groups' | translate}}</label>
|
||||
<kc-tooltip>{{:: 'membership.available-groups.tooltip' | translate}}</kc-tooltip>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageUsers">
|
||||
<button id="joinGroup" class="btn btn-default" ng-click="joinGroup()">Join</button>
|
||||
<button id="joinGroup" class="btn btn-default" ng-click="joinGroup()">{{:: 'join' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
|
|
@ -1,37 +1,37 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>Users</h1>
|
||||
<h1>{{:: 'users' | translate}}</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<caption data-ng-show="users" class="hidden">Table of realm users</caption>
|
||||
<caption data-ng-show="users" class="hidden">{{:: 'table-of-realm-users' | translate}}</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="{{access.impersonation == true ? '8' : '7'}}">
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="query.search" class="form-control search" onkeydown="if (event.keyCode == 13) document.getElementById('userSearch').click()">
|
||||
<input type="text" placeholder="{{:: 'search.placeholder' | translate}}" data-ng-model="query.search" class="form-control search" onkeydown="if (event.keyCode == 13) document.getElementById('userSearch').click()">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" id="userSearch" data-ng-click="firstPage()"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="viewAllUsers" class="btn btn-default" ng-click="query.search = null; firstPage()">View all users</button>
|
||||
<button id="viewAllUsers" class="btn btn-default" ng-click="query.search = null; firstPage()">{{:: 'view-all-users' | translate}}</button>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageUsers">
|
||||
<button data-ng-click="unlockUsers()" class="btn btn-default">Unlock Users</button>
|
||||
<a id="createUser" class="btn btn-default" href="#/create/user/{{realm.realm}}">Add User</a>
|
||||
<button data-ng-click="unlockUsers()" class="btn btn-default">{{:: 'unlock-users' | translate}}</button>
|
||||
<a id="createUser" class="btn btn-default" href="#/create/user/{{realm.realm}}">{{:: 'add-user' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr data-ng-show="searchLoaded && users.length > 0">
|
||||
<th class="w-15">ID</th>
|
||||
<th class="w-15">Username</th>
|
||||
<th class="w-15">Email</th>
|
||||
<th class="w-15">Last Name</th>
|
||||
<th class="w-15">First Name</th>
|
||||
<th colspan="{{access.impersonation == true ? '3' : '2'}}">Actions</th>
|
||||
<th class="w-15">{{:: 'id' | translate}}</th>
|
||||
<th class="w-15">{{:: 'username' | translate}}</th>
|
||||
<th class="w-15">{{:: 'email' | translate}}</th>
|
||||
<th class="w-15">{{:: 'last-name' | translate}}</th>
|
||||
<th class="w-15">{{:: 'first-name' | translate}}</th>
|
||||
<th colspan="{{access.impersonation == true ? '3' : '2'}}">{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -39,9 +39,9 @@
|
|||
<tr>
|
||||
<td colspan="7">
|
||||
<div class="table-nav">
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="users.length < query.max">Next page</button>
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">{{:: 'first-page' | translate}}</button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">{{:: 'previous-page' | translate}}</button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="users.length < query.max">{{:: 'next-page' | translate}}</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -54,19 +54,19 @@
|
|||
<td class="clip">{{user.lastName}}</td>
|
||||
<td class="clip">{{user.firstName}}</td>
|
||||
<td class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/users/{{user.id}}">Edit</button>
|
||||
<button class="btn btn-default btn-block btn-sm" kc-open="/realms/{{realm.realm}}/users/{{user.id}}">{{:: 'edit' | translate}}</button>
|
||||
</td>
|
||||
<td data-ng-show="access.impersonation" class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="impersonate(user.id)">Impersonate</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="impersonate(user.id)">{{:: 'impersonate' | translate}}</button>
|
||||
</td>
|
||||
<td data-ng-show="access.manageUsers" class="kc-action-cell">
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeUser(user)">Delete</button>
|
||||
<button class="btn btn-default btn-block btn-sm" data-ng-click="removeUser(user)">{{:: 'delete' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!users || users.length == 0">
|
||||
<td class="text-muted" data-ng-show="!users">Please enter a search, or click on view all users</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">No results</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No users available</td>
|
||||
<td class="text-muted" data-ng-show="!users">{{:: 'users.instruction' | translate}}</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">{{:: 'no-results' | translate}}</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">{{:: 'no-users-available' | translate}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.id}}">{{user.username}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.id}}/consents">consents</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.id}}/consents">{{:: 'consents' | translate}}</a></li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -11,9 +11,9 @@
|
|||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IP Address</th>
|
||||
<th>Started</th>
|
||||
<th>Last Refresh</th>
|
||||
<th>{{:: 'ip-address' | translate}}</th>
|
||||
<th>{{:: 'started' | translate}}</th>
|
||||
<th>{{:: 'last-refresh' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -27,7 +27,7 @@
|
|||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-cancel data-ng-click="cancel()">Back</button>
|
||||
<button kc-cancel data-ng-click="cancel()">{{:: 'back' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
|
||||
|
@ -11,16 +11,16 @@
|
|||
<tr data-ng-show="access.manageUsers">
|
||||
<th class="kc-table-actions" colspan="6">
|
||||
<div class="pull-right" data-ng-show="access.manageUsers">
|
||||
<a id="logoutAllSessions" class="btn btn-default" ng-click="logoutAll()">Logout All Sessions</a>
|
||||
<a id="logoutAllSessions" class="btn btn-default" ng-click="logoutAll()">{{:: 'logout-all-sessions' | translate}}</a>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>IP Address</th>
|
||||
<th>Started</th>
|
||||
<th>Last Access</th>
|
||||
<th>{{:: 'ip-address' | translate}}</th>
|
||||
<th>{{:: 'started' | translate}}</th>
|
||||
<th>{{:: 'last-access' | translate}}</th>
|
||||
<th>{{:: 'clients' | translate}}</th>
|
||||
<th data-ng-show="access.manageUsers">Action</th>
|
||||
<th data-ng-show="access.manageUsers">{{:: 'action' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -35,7 +35,7 @@
|
|||
</ul>
|
||||
</td>
|
||||
<td class="kc-action-cell" data-ng-show="access.manageUsers">
|
||||
<button class="btn btn-default btn-block btn-sm" ng-click="logoutSession(session.id)">Logout</button>
|
||||
<button class="btn btn-default btn-block btn-sm" ng-click="logoutSession(session.id)">{{:: 'logout' | translate}}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
<div class="modal-body">
|
||||
<form>
|
||||
<div>
|
||||
<label class="control-label" for="name">New name</label>
|
||||
<label class="control-label" for="name">{{:: 'new-name' | translate}}</label>
|
||||
<input class="form-control" type="text" id="name" data-ng-model="name.value">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="ok()">Ok</button>
|
||||
<button type="button" class="btn btn-default" ng-click="cancel()">{{:: 'cancel' | translate}}</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="ok()">{{:: 'ok' | translate}}</button>
|
||||
</div>
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="realm-selector">
|
||||
<h2 data-ng-show="current.realm">{{current.realm.realm|capitalize}} <i class="fa fa-angle-down"></i></h2>
|
||||
<h2 data-ng-hide="current.realm">Select realm <i class="fa fa-angle-down"></i></h2>
|
||||
<h2 data-ng-hide="current.realm">{{:: 'select-realm' | translate}} <i class="fa fa-angle-down"></i></h2>
|
||||
<div class="realm-dropmenu">
|
||||
<!-- if it has more than 5 it generates a scroll bar -->
|
||||
<ul>
|
||||
|
@ -11,13 +11,13 @@
|
|||
</li>
|
||||
</ul>
|
||||
<div class="realm-add" data-ng-show="auth.user && access.createRealm">
|
||||
<a href="#/create/realm" class="btn btn-sm btn-block btn-primary">Add Realm</a>
|
||||
<a href="#/create/realm" class="btn btn-sm btn-block btn-primary">{{:: 'add-realm' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-category" data-ng-show="current.realm">
|
||||
<h2>Configure</h2>
|
||||
<h2>{{:: 'configure' | translate}}</h2>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="((!path[2]
|
||||
|| path[2] == 'required-credentials'
|
||||
|
@ -27,25 +27,25 @@
|
|||
|| path[2] == 'cache-settings'
|
||||
|| path[2] == 'defense'
|
||||
|| path[2] == 'keys-settings' || path[2] == 'smtp-settings' || path[2] == 'ldap-settings' || path[2] == 'auth-settings') && path[3] != 'clients') && 'active'">
|
||||
<a href="#/realms/{{realm.realm}}"><span class="pficon pficon-settings"></span> Realm Settings</a>
|
||||
<a href="#/realms/{{realm.realm}}"><span class="pficon pficon-settings"></span> {{:: 'realm-settings' | translate}}</a>
|
||||
</li>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'clients' || path[1] == 'client' || path[3] == 'clients') && 'active'"><a href="#/realms/{{realm.realm}}/clients"><i class="fa fa-cube"></i> Clients</a></li>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'client-templates' || path[1] == 'client-template' || path[3] == 'client-templates') && 'active'"><a href="#/realms/{{realm.realm}}/client-templates"><i class="fa fa-cubes"></i> Client Templates</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || path[2] == 'default-roles' || (path[1] == 'role' && path[3] != 'clients')) && 'active'"><a href="#/realms/{{realm.realm}}/roles"><i class="fa fa-tasks"></i> Roles</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'identity-provider-settings' || path[2] == 'identity-provider-mappers') && 'active'"><a href="#/realms/{{realm.realm}}/identity-provider-settings"><i class="fa fa-exchange"></i> Identity Providers</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'user-federation' || path[2] == 'user-federation') && 'active'"><a href="#/realms/{{realm.realm}}/user-federation"><i class="fa fa-database"></i> User Federation</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'authentication' || path[2] == 'authentication') && 'active'"><a href="#/realms/{{realm.realm}}/authentication/flows"><i class="fa fa-lock"></i> Authentication</a></li>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'clients' || path[1] == 'client' || path[3] == 'clients') && 'active'"><a href="#/realms/{{realm.realm}}/clients"><i class="fa fa-cube"></i> {{:: 'clients' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'client-templates' || path[1] == 'client-template' || path[3] == 'client-templates') && 'active'"><a href="#/realms/{{realm.realm}}/client-templates"><i class="fa fa-cubes"></i> {{:: 'client-templates' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || path[2] == 'default-roles' || (path[1] == 'role' && path[3] != 'clients')) && 'active'"><a href="#/realms/{{realm.realm}}/roles"><i class="fa fa-tasks"></i> {{:: 'roles' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'identity-provider-settings' || path[2] == 'identity-provider-mappers') && 'active'"><a href="#/realms/{{realm.realm}}/identity-provider-settings"><i class="fa fa-exchange"></i> {{:: 'identity-providers' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'user-federation' || path[2] == 'user-federation') && 'active'"><a href="#/realms/{{realm.realm}}/user-federation"><i class="fa fa-database"></i> {{:: 'user-federation' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'authentication' || path[2] == 'authentication') && 'active'"><a href="#/realms/{{realm.realm}}/authentication/flows"><i class="fa fa-lock"></i> {{:: 'authentication' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="nav-category" data-ng-show="current.realm">
|
||||
<h2>Manage</h2>
|
||||
<h2>{{:: 'manage' | translate}}</h2>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'groups' || path[1] == 'group') && 'active'"><a href="#/realms/{{realm.realm}}/groups"><span class="pficon pficon-users"></span> Groups</a></li>
|
||||
<li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users"><span class="pficon pficon-user"></span> Users</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm"><i class="fa fa-clock-o"></i> Sessions</a></li>
|
||||
<li data-ng-show="access.viewEvents" data-ng-class="(path[2] == 'events' || path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events"><i class="fa fa-calendar"></i> Events</a></li>
|
||||
<li data-ng-show="access.manageRealm" ng-class="(path[2] =='partial-import') && 'active'"><a href="#/realms/{{realm.realm}}/partial-import"><span class="pficon pficon-import"></span> Import</a></li>
|
||||
<li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'groups' || path[1] == 'group') && 'active'"><a href="#/realms/{{realm.realm}}/groups"><span class="pficon pficon-users"></span> {{:: 'groups' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users"><span class="pficon pficon-user"></span> {{:: 'users' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm"><i class="fa fa-clock-o"></i> {{:: 'sessions' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewEvents" data-ng-class="(path[2] == 'events' || path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events"><i class="fa fa-calendar"></i> {{:: 'events' | translate}}</a></li>
|
||||
<li data-ng-show="access.manageRealm" ng-class="(path[2] =='partial-import') && 'active'"><a href="#/realms/{{realm.realm}}/partial-import"><span class="pficon pficon-import"></span> {{:: 'import' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
|
@ -1,7 +1,7 @@
|
|||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: path[3] == 'flows'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/flows">Flows</a></li>
|
||||
<li ng-class="{active: path[3] == 'flow-bindings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/flow-bindings">Bindings</a></li>
|
||||
<li ng-class="{active: path[3] == 'required-actions'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/required-actions">Required Actions</a></li>
|
||||
<li ng-class="{active: path[3] == 'password-policy'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/password-policy">Password Policy</a></li>
|
||||
<li ng-class="{active: path[3] == 'otp-policy'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/otp-policy">OTP Policy</a></li>
|
||||
<li ng-class="{active: path[3] == 'flows'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/flows">{{:: 'flows' | translate}}</a></li>
|
||||
<li ng-class="{active: path[3] == 'flow-bindings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/flow-bindings">{{:: 'bindings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[3] == 'required-actions'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/required-actions">{{:: 'required-actions' | translate}}</a></li>
|
||||
<li ng-class="{active: path[3] == 'password-policy'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/password-policy">{{:: 'password-policy' | translate}}</a></li>
|
||||
<li ng-class="{active: path[3] == 'otp-policy'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/authentication/otp-policy">{{:: 'otp-policy' | translate}}</a></li>
|
||||
</ul>
|
|
@ -1,6 +1,6 @@
|
|||
<div data-ng-controller="ClientTemplateTabCtrl">
|
||||
|
||||
<h1 data-ng-show="create">Add Client Template</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-client-template' | translate}}</h1>
|
||||
<h1 data-ng-hide="create">
|
||||
{{template.name|capitalize}}
|
||||
<i id="removeClientTemplate" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="removeClientTemplate()"></i>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div data-ng-controller="GroupTabCtrl">
|
||||
<h1>
|
||||
<span>User Groups</span>
|
||||
<span>{{:: 'user-groups' | translate}}</span>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: path[2] == 'groups'}"><a href="#/realms/{{realm.realm}}/groups">Groups</a></li>
|
||||
<li ng-class="{active: path[2] == 'default-groups'}"><a href="#/realms/{{realm.realm}}/default-groups">Default Groups</a><kc-tooltip>Set of groups that new users will automatically join.</kc-tooltip>
|
||||
<li ng-class="{active: path[2] == 'groups'}"><a href="#/realms/{{realm.realm}}/groups">{{:: 'groups' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'default-groups'}"><a href="#/realms/{{realm.realm}}/default-groups">{{:: 'default-groups' | translate}}</a><kc-tooltip>{{:: 'groups.default-groups.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
|
@ -5,9 +5,9 @@
|
|||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}">Settings</a></li>
|
||||
<li ng-class="{active: path[4] == 'attributes'}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/attributes">Attributes</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}" ><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/role-mappings">Role Mappings</a></li>
|
||||
<li ng-class="{active: path[4] == 'members'}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/members">Members</a></li>
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'attributes'}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/attributes">{{:: 'attributes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}" ><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/role-mappings">{{:: 'role-mappings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'members'}"><a href="#/realms/{{realm.realm}}/groups/{{group.id}}/members">{{:: 'members' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
|
@ -3,11 +3,11 @@
|
|||
{{identityProvider.alias|capitalize}}
|
||||
<i class="pficon pficon-delete clickable" data-ng-hide="newIdentityProvider || changed" data-ng-click="removeIdentityProvider()"></i>
|
||||
</h1>
|
||||
<h1 data-ng-show="path[0] == 'create'">Add Identity Provider</h1>
|
||||
<h1 data-ng-show="path[0] == 'create'">{{:: 'add-identity-provider' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li ng-class="{active: !path[6] && path.length > 5}"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}"><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
<li ng-class="{active: path[6] == 'export'}"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider && identityProvider.providerId == 'saml'">Export</a></li>
|
||||
<li ng-class="{active: !path[6] && path.length > 5}"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}"><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'export'}"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider && identityProvider.providerId == 'saml'">{{:: 'export' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
{{instance.displayName|capitalize}}
|
||||
<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageUsers" data-ng-click="removeUserFederation()"></i>
|
||||
</h1>
|
||||
<h1 data-ng-show="create">Add User Federation Provider</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-user-federation-provider' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="create">
|
||||
<li ng-class="{active: !path[6]}"><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">Settings</a></li>
|
||||
<li ng-class="{active: path[6] == 'mappers'}"><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}/mappers">Mappers</a></li>
|
||||
<li ng-class="{active: !path[6]}"><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'mappers'}"><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}/mappers">{{:: 'mappers' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
{{user.username|capitalize}}
|
||||
<i id="removeUser" class="pficon pficon-delete clickable" data-ng-show="!create && access.manageUsers" data-ng-click="removeUser()"></i>
|
||||
</h1>
|
||||
<h1 data-ng-show="create">Add User</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-user' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-show="!create">
|
||||
<li ng-class="{active: !path[4] && path[0] != 'create'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}">Details</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-attributes'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/user-attributes">Attributes</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-credentials'}" data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/user-credentials">Credentials</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/role-mappings">Role Mappings</a></li>
|
||||
<li ng-class="{active: path[4] == 'groups'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/groups">Groups</a></li>
|
||||
<li ng-class="{active: path[4] == 'consents'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/consents">Consents</a></li>
|
||||
<li ng-class="{active: path[4] == 'sessions'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/sessions">Sessions</a></li>
|
||||
<li ng-class="{active: path[4] == 'federated-identity' || path[1] == 'federated-identity'}" data-ng-show="user.federatedIdentities != null"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/federated-identity">Identity Provider Links</a></li>
|
||||
<li ng-class="{active: !path[4] && path[0] != 'create'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}">{{:: 'details' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-attributes'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/user-attributes">{{:: 'attributes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-credentials'}" data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/user-credentials">{{:: 'credentials' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/role-mappings">{{:: 'role-mappings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'groups'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/groups">{{:: 'groups' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'consents'}"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/consents">{{:: 'consents' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'sessions'}" ><a href="#/realms/{{realm.realm}}/users/{{user.id}}/sessions">{{:: 'sessions' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'federated-identity' || path[1] == 'federated-identity'}" data-ng-show="user.federatedIdentities != null"><a href="#/realms/{{realm.realm}}/users/{{user.id}}/federated-identity">{{:: 'identity-provider-links' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
Loading…
Reference in a new issue