Move existing themes under a default folder
This commit is contained in:
@ -0,0 +1,11 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{title}}</h4>
|
||||
</div>
|
||||
<div class="modal-body" ng-bind-html="message"></div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" data-ng-class="btns.cancel.cssClass" ng-click="cancel()">{{btns.cancel.label}}</button>
|
||||
<button type="button" data-ng-class="btns.ok.cssClass" ng-click="ok()">{{btns.ok.label}}</button>
|
||||
</div>
|
@ -0,0 +1,14 @@
|
||||
<div data-ng-controller="ClientTabCtrl">
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<ul id="authz-tabs" class="nav nav-tabs nav-tabs-pf" data-ng-hide="create && !path[4]" style="margin-left: 15px">
|
||||
<li ng-class="{active: !path[6]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'resource'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/resource">{{:: 'authz-resources' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'scope'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/scope">{{:: 'authz-authz-scopes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'policy'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/policy">{{:: 'authz-policies' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'permission'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission">{{:: 'authz-permissions' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'evaluate'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/evaluate">{{:: 'authz-evaluate' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] == 'export-settings'}" data-ng-hide="create"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/export-settings">{{:: 'authz-export-settings' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
67
default-themes/base/admin/resources/templates/kc-component-config.html
Executable file
67
default-themes/base/admin/resources/templates/kc-component-config.html
Executable file
@ -0,0 +1,67 @@
|
||||
<div>
|
||||
<div data-ng-repeat="option in properties" class="form-group" data-ng-controller="ProviderConfigCtrl">
|
||||
<label class="col-md-2 control-label">{{:: option.label | translate}}</label>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'String'">
|
||||
<input class="form-control" type="text" data-ng-model="config[ option.name ][0]" >
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Password'">
|
||||
<input class="form-control" type="password" data-ng-model="config[ option.name ][0]" >
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'boolean'">
|
||||
<input ng-model="config[ option.name ][0]" value="'true'" id="option.name" name="option.name" onoffswitchstring on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'List'">
|
||||
<select ng-model="config[ option.name ][0]" ng-options="data for data in option.options">
|
||||
<option value="" selected> {{:: 'selectOne' | translate}} </option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'MultivaluedList'">
|
||||
<input ui-select2="option.mvOptions" ng-model="config[ option.name ]" data-placeholder="{{:: 'selectMultiple' | translate}}..."/>
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Role'">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<input class="form-control" type="text" data-ng-model="config[ option.name ]" >
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-ng-if="option.type == 'ClientList'">
|
||||
<input type="hidden" ui-select2="clientsUiSelect" id="clients" data-ng-init="initSelectedClient(option.name, config)" data-ng-model="selectedClient" data-ng-change="changeClient(option.name, config, selectedClient, true);" data-placeholder="{{:: 'selectOne' | translate}}...">
|
||||
</input>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'File'">
|
||||
<div class="controls kc-button-input-file">
|
||||
<input class="form-control" type="text" data-ng-model="config[option.name][0]" >
|
||||
<label for="{{option.name}}" class="btn btn-default">{{:: 'select-file' | translate}} <i class="pficon pficon-import"></i></label>
|
||||
<input id="{{option.name}}" type="file" class="hidden" ng-file-select="uploadFile($files, option.name, config)">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Script'">
|
||||
<div ng-model="config[option.name]" placeholder="Enter your script..." ui-ace="{ onLoad : initEditor, useWrapMode: true, showGutter: true, theme:'github', mode: 'javascript'}">
|
||||
{{config[option.name]}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6" data-ng-if="option.type == 'MultivaluedString'">
|
||||
<div class="input-group" ng-repeat="(i, currentOption) in config[option.name] track by $index">
|
||||
<input class="form-control" ng-model="config[option.name][i]">
|
||||
<div class="input-group-btn" data-ng-if="$index < config[option.name].length - 1">
|
||||
<button class="btn btn-default" type="button" data-ng-click="deleteValueFromMultivalued(option.name, $index)"><span class="fa fa-minus"></span></button>
|
||||
</div>
|
||||
|
||||
<div class="input-group-btn" data-ng-if="$index === config[option.name].length - 1">
|
||||
<button class="btn btn-default" type="button" data-ng-click="addValueToMultivalued(option.name)"><span class="fa fa-plus"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<kc-tooltip>{{:: option.helpText | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</div>
|
18
default-themes/base/admin/resources/templates/kc-copy.html
Executable file
18
default-themes/base/admin/resources/templates/kc-copy.html
Executable file
@ -0,0 +1,18 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{title}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div>
|
||||
<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' | translate}}</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="ok()">{{:: 'ok' | translate}}</button>
|
||||
</div>
|
@ -0,0 +1,12 @@
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-default dropdown-toggle" type="button" id="{{id}}" data-toggle="dropdown">
|
||||
<span ng-show="kcModel">{{kcModel}}</span>
|
||||
<span ng-hide="kcModel" class="control-label">{{kcPlaceholder}}</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li role="presentation" ng-repeat="option in kcOptions">
|
||||
<a href="" role="menuitem" tabindex="-1" ng-click="updateModel(option)">{{option}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
22
default-themes/base/admin/resources/templates/kc-edit.html
Normal file
22
default-themes/base/admin/resources/templates/kc-edit.html
Normal file
@ -0,0 +1,22 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{title}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div>
|
||||
<label class="control-label" for="name">{{:: 'new-name' | translate}}</label>
|
||||
<input class="form-control" type="text" id="name" data-ng-model="name.value">
|
||||
</div>
|
||||
<div>
|
||||
<label class="control-label" for="name">{{:: 'new-description' | translate}}</label>
|
||||
<input class="form-control" type="text" id="description" data-ng-model="description.value">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<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>
|
64
default-themes/base/admin/resources/templates/kc-menu.html
Executable file
64
default-themes/base/admin/resources/templates/kc-menu.html
Executable file
@ -0,0 +1,64 @@
|
||||
<div kc-sidebar-resize class="col-sm-3 col-md-2 col-sm-pull-9 col-md-pull-10 sidebar-pf sidebar-pf-left" data-ng-controller="RealmDropdownCtrl">
|
||||
|
||||
<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' | 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>
|
||||
<li data-ng-repeat="realm in current.realms | orderBy:'realm'" data-ng-if="realm.realm != current.realm.realm">
|
||||
<a href="" ng-click="changeRealm(realm.realm)">{{realm.realm|capitalize}}</a>
|
||||
</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' | translate}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-category" data-ng-show="current.realm && (access.viewRealm || access.queryClients || access.viewIdentityProviders)">
|
||||
<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'
|
||||
|| path[2] == 'login-settings'
|
||||
|| path[2] == 'keys'
|
||||
|| path[2] == 'theme-settings'
|
||||
|| path[2] == 'localization'
|
||||
|| path[2] == 'token-settings'
|
||||
|| path[2] == 'client-registration'
|
||||
|| path[2] == 'cache-settings'
|
||||
|| path[2] == 'client-initial-access'
|
||||
|| 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' | translate}}</a>
|
||||
</li>
|
||||
<li data-ng-show="access.queryClients" data-ng-class="(path[1] == 'client' || path[2] == 'clients' || 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[1] == 'client-scope' || path[2] == 'client-scopes' || path[3] == 'client-scopes') && 'active'"><a href="#/realms/{{realm.realm}}/client-scopes"><i class="fa fa-cubes"></i> {{:: 'client-scopes' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'role' || path[2] == 'roles' || path[2] == 'default-roles') && 'active'"><a href="#/realms/{{realm.realm}}/roles"><i class="fa fa-tasks"></i> {{:: 'roles' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewIdentityProviders" data-ng-class="(path[1] == 'identity-provider' || 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-storage'
|
||||
|| path[2] == 'user-federation'
|
||||
|| path[2] == 'user-storage'
|
||||
|| path[2] == 'ldap-mappers'
|
||||
) && '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 && (access.viewRealm || access.queryGroups || access.queryUsers || access.viewEvents)">
|
||||
<h2>{{:: 'manage' | translate}}</h2>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li data-ng-show="access.queryGroups" data-ng-class="(path[1] == 'group' || path[2] == 'groups'
|
||||
|| path[2] == 'default-groups') && 'active'"><a href="#/realms/{{realm.realm}}/groups"><span class="pficon pficon-users"></span> {{:: 'groups' | translate}}</a></li>
|
||||
<li data-ng-show="access.queryUsers" data-ng-class="(path[1] == 'user' || path[2] == 'users' || path[2] == 'users-permissions') && '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'
|
||||
|| path[2] == 'admin-events') && '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>
|
||||
<li data-ng-show="access.manageRealm" ng-class="(path[2] =='partial-export') && 'active'"><a href="#/realms/{{realm.realm}}/partial-export"><span class="pficon pficon-export"></span> {{:: 'export' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
10
default-themes/base/admin/resources/templates/kc-modal-message.html
Executable file
10
default-themes/base/admin/resources/templates/kc-modal-message.html
Executable file
@ -0,0 +1,10 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{title}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">{{message}}</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" data-ng-class="btns.ok.cssClass" ng-click="ok()">{{btns.ok.label}}</button>
|
||||
</div>
|
11
default-themes/base/admin/resources/templates/kc-modal.html
Normal file
11
default-themes/base/admin/resources/templates/kc-modal.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="cancel()">
|
||||
<span class="pficon pficon-close"></span>
|
||||
</button>
|
||||
<h4 class="modal-title">{{title}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">{{message}}</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" data-ng-class="btns.cancel.cssClass" ng-click="cancel()">{{btns.cancel.label}}</button>
|
||||
<button type="button" data-ng-class="btns.ok.cssClass" ng-click="ok()">{{btns.ok.label}}</button>
|
||||
</div>
|
25
default-themes/base/admin/resources/templates/kc-paging.html
Normal file
25
default-themes/base/admin/resources/templates/kc-paging.html
Normal file
@ -0,0 +1,25 @@
|
||||
<div ng-hide="numberOfPages < 2" class="dataTables_footer">
|
||||
<div class="dataTables_paginate paging_bootstrap_input">
|
||||
<ul class="pagination">
|
||||
<li class="first" ng-class="{disabled: !hasPrevious()}" ng-click="firstPage()">
|
||||
<span class="i fa fa-angle-double-left"></span>
|
||||
</li>
|
||||
<li class="prev" ng-class="{disabled: !hasPrevious()}" ng-click="previousPage()">
|
||||
<span class="i fa fa-angle-left"></span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="pagination-input">
|
||||
<input ng-model="currentPageInput" kc-valid-page class="paginate_input" type="text">
|
||||
<span class="paginate_of">of <b>{{numberOfPages}}</b></span>
|
||||
</div>
|
||||
<ul class="pagination">
|
||||
<li class="next" ng-class="{disabled: !hasNext()}" ng-click="nextPage()">
|
||||
<span class="i fa fa-angle-right"></span>
|
||||
</li>
|
||||
<li class="last" ng-class="{disabled: !hasNext()}" ng-click="lastPage()">
|
||||
<span class="i fa fa-angle-double-right">
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
91
default-themes/base/admin/resources/templates/kc-provider-config.html
Executable file
91
default-themes/base/admin/resources/templates/kc-provider-config.html
Executable file
@ -0,0 +1,91 @@
|
||||
<div>
|
||||
<div data-ng-repeat="option in properties" class="form-group" data-ng-controller="ProviderConfigCtrl">
|
||||
<label class="col-md-2 control-label">{{:: option.label | translate}}</label>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'String'">
|
||||
<input class="form-control" type="text" data-ng-model="config[ option.name ]" >
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Password'">
|
||||
<input class="form-control" type="password" data-ng-model="config[ option.name ]" >
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'boolean'">
|
||||
<input ng-model="config[ option.name ]" value="'true'" name="option.name" id="option.name" onoffswitchstring on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'List'">
|
||||
<select ng-model="config[ option.name ]" ng-options="data for data in option.options">
|
||||
<option value="" selected> {{:: 'selectOne' | translate}} </option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Role'">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<input class="form-control" type="text" data-ng-model="config[ option.name ]" >
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-ng-if="option.type == 'ClientList'">
|
||||
<input type="hidden" ui-select2="clientsUiSelect" id="clients" data-ng-init="initSelectedClient(option.name, config)" data-ng-model="selectedClient" data-ng-change="changeClient(option.name, config, selectedClient, false);" data-placeholder="{{:: 'selectOne' | translate}}...">
|
||||
</input>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Script'">
|
||||
<div ng-model="config[option.name]" placeholder="Enter your script..." ui-ace="{ onLoad : initEditor, useWrapMode: true, showGutter: true, theme:'github', mode: 'javascript'}">
|
||||
{{config[option.name]}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6" data-ng-if="option.type == 'MultivaluedString'">
|
||||
<div class="input-group" ng-repeat="(i, currentOption) in config[option.name] track by $index">
|
||||
<input class="form-control" ng-model="config[option.name][i]">
|
||||
<div class="input-group-btn" data-ng-if="$index < config[option.name].length - 1">
|
||||
<button class="btn btn-default" type="button" data-ng-click="deleteValueFromMultivalued(option.name, $index)"><span class="fa fa-minus"></span></button>
|
||||
</div>
|
||||
|
||||
<div class="input-group-btn" data-ng-if="$index === config[option.name].length - 1">
|
||||
<button class="btn btn-default" type="button" data-ng-click="addValueToMultivalued(option.name)"><span class="fa fa-plus"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Text'">
|
||||
<textarea class="form-control" data-ng-model="config[ option.name ]"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" data-ng-if="option.type == 'Map'">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{:: 'key' | translate}}</th>
|
||||
<th>{{:: 'value' | translate}}</th>
|
||||
<th>{{:: 'actions' | translate}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="mapEntry in jsonParseMap(option.name)">
|
||||
<td>{{mapEntry['key']}}</td>
|
||||
<td><input ng-model="mapEntry['value']"
|
||||
ng-change="updateMapEntry(option.name, mapEntry['key'], mapEntry['value'])"
|
||||
class="form-control" type="text" name="{{mapEntry['key']}}" id="mapValue-{{option.name}}-{{mapEntry['key']}}"/></td>
|
||||
<td class="kc-action-cell" id="removeMapEntry-{{option.name}}" data-ng-click="removeMapEntry(option.name, mapEntry['key'])">{{:: 'delete' | translate}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input ng-model="newMapEntries[option.name].key" class="form-control" type="text" id="newMapEntryKey-{{option.name}}"/></td>
|
||||
<td><input ng-model="newMapEntries[option.name].value" class="form-control" type="text" id="newMapEntryValue-{{option.name}}"/></td>
|
||||
<td class="kc-action-cell" id="addMapEntry-{{option.name}}" data-ng-click="addMapEntry(option.name)"
|
||||
data-ng-disabled="!newMapEntry.key.length || !newMapEntry.value.length">{{:: 'add' | translate}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<kc-tooltip>{{:: option.helpText | translate}}</kc-tooltip>
|
||||
</div>
|
||||
</div>
|
12
default-themes/base/admin/resources/templates/kc-switch.html
Normal file
12
default-themes/base/admin/resources/templates/kc-switch.html
Normal file
@ -0,0 +1,12 @@
|
||||
<span>
|
||||
<div class='onoffswitch' tabindex='0'>
|
||||
<input type='checkbox' ng-model='ngModel' class='onoffswitch-checkbox' name='{{name}}' id='{{id}}'>
|
||||
<label for='{{id}}' class='onoffswitch-label'>
|
||||
<span class='onoffswitch-inner'>
|
||||
<span class='onoffswitch-active'>{{kcOnText}}</span>
|
||||
<span class='onoffswitch-inactive'>{{kcOffText}}</span>
|
||||
</span>
|
||||
<span class='onoffswitch-switch'></span>
|
||||
</label>
|
||||
</div>
|
||||
</span>
|
16
default-themes/base/admin/resources/templates/kc-tabs-authentication.html
Executable file
16
default-themes/base/admin/resources/templates/kc-tabs-authentication.html
Executable file
@ -0,0 +1,16 @@
|
||||
<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' | 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>
|
||||
<li ng-class="{active: path[3] == 'webauthn-policy'}" data-ng-show="access.viewRealm && serverInfo.featureEnabled('WEB_AUTHN')">
|
||||
<a href="#/realms/{{realm.realm}}/authentication/webauthn-policy">{{:: 'webauthn-policy' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'webauthn-policy.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[3] == 'webauthn-policy-passwordless'}" data-ng-show="access.viewRealm && serverInfo.featureEnabled('WEB_AUTHN')">
|
||||
<a href="#/realms/{{realm.realm}}/authentication/webauthn-policy-passwordless">{{:: 'webauthn-policy-passwordless' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'webauthn-policy-passwordless.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[3] == 'ciba-policy'}" data-ng-show="access.viewRealm && serverInfo.featureEnabled('CIBA')"><a href="#/realms/{{realm.realm}}/authentication/ciba-policy">{{:: 'ciba-policy' | translate}}</a></li>
|
||||
</ul>
|
17
default-themes/base/admin/resources/templates/kc-tabs-client-role.html
Executable file
17
default-themes/base/admin/resources/templates/kc-tabs-client-role.html
Executable file
@ -0,0 +1,17 @@
|
||||
<div data-ng-controller="RoleTabCtrl">
|
||||
<h1 data-ng-show="create">{{:: 'add-role' | translate}}</h1>
|
||||
<h1 data-ng-hide="create">{{role.name|capitalize}}<i class="pficon pficon-delete clickable" data-ng-show="!create && client.access.configure"
|
||||
data-ng-hide="changed" data-ng-click="remove()"></i></h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-show="!create">
|
||||
<li ng-class="{active: !path[6]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">{{:: 'details' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] && path[6] == 'role-attributes'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}/role-attributes">{{:: 'attributes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[6] && path[6] == 'permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && access.manageAuthorization && client.access.configure">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}/permissions">{{:: 'authz-permissions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'manage-permissions-role.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[6] && path[6] == 'users'}" data-ng-show="access.viewUsers">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}/users">{{:: 'authz-users' | translate}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
20
default-themes/base/admin/resources/templates/kc-tabs-client-scope.html
Executable file
20
default-themes/base/admin/resources/templates/kc-tabs-client-scope.html
Executable file
@ -0,0 +1,20 @@
|
||||
<div data-ng-controller="ClientScopeTabCtrl">
|
||||
|
||||
<h1 data-ng-show="create">{{:: 'add-client-scope' | translate}}</h1>
|
||||
<h1 data-ng-hide="create">
|
||||
{{clientScope.name|capitalize}}
|
||||
<i id="removeClientScope" class="pficon pficon-delete clickable" data-ng-show="access.manageClients" data-ng-click="removeClientScope()"></i>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-hide="create && !path[4]">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/client-scopes/{{clientScope.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}">
|
||||
<a href="#/realms/{{realm.realm}}/client-scopes/{{clientScope.id}}/mappers">{{:: 'mappers' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'mappers.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="client.protocol != 'docker-v2'">
|
||||
<a href="#/realms/{{realm.realm}}/client-scopes/{{clientScope.id}}/scope-mappings">{{:: 'scope' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'scope.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
63
default-themes/base/admin/resources/templates/kc-tabs-client.html
Executable file
63
default-themes/base/admin/resources/templates/kc-tabs-client.html
Executable file
@ -0,0 +1,63 @@
|
||||
<div data-ng-controller="ClientTabCtrl">
|
||||
|
||||
<h1 data-ng-show="create">{{:: 'add-client' | translate}}</h1>
|
||||
<h1 data-ng-hide="create">
|
||||
{{client.clientId|capitalize}}
|
||||
<i id="removeClient" class="pficon pficon-delete clickable" data-ng-show="client.access.manage" data-ng-click="removeClient()"></i>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="create && !path[4]">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'credentials'}"
|
||||
data-ng-show="!client.publicClient && client.protocol == 'openid-connect' && !client.origin">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'saml'}" data-ng-show="client.protocol == 'saml' && (client.attributes['saml.client.signature'] == 'true' || client.attributes['saml.encrypt'] == 'true')"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">{{:: 'saml-keys' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'roles'}" data-ng-show="!client.origin"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">{{:: 'roles' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'client-scopes'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/client-scopes/setup-scopes">{{:: 'client-scopes' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'client-scopes.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">{{:: 'mappers' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'mappers.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">{{:: 'scope' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'scope.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'authz'}"
|
||||
data-ng-show="!disableAuthorizationTab && client.authorizationServicesEnabled && !client.origin">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server">{{:: 'authz-authorization' |
|
||||
translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'revocation'}" data-ng-show="client.protocol != 'docker-v2' && client.protocol != 'saml' && !client.origin"><a
|
||||
href="#/realms/{{realm.realm}}/clients/{{client.id}}/revocation">{{:: 'revocation' | translate}}</a>
|
||||
</li>
|
||||
<!-- <li ng-class="{active: path[4] == 'identity-provider'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/identity-provider">Identity Provider</a></li> -->
|
||||
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/sessions">{{:: 'sessions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'sessions.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'offline-access'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/offline-access">{{:: 'offline-access' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'offline-access.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'clustering'}" data-ng-show="!client.publicClient && !client.origin"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">{{:: 'clustering' | translate}}</a></li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'installation'}" data-ng-show="!client.origin">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/installation">{{:: 'installation' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'installation.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'service-account-roles'}" data-ng-show="client.serviceAccountsEnabled && !(client.bearerOnly || client.publicClient)">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/service-account-roles">{{:: 'service-account-roles' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'service-account-roles.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && client.access.manage && access.manageAuthorization">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/permissions">{{:: 'authz-permissions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'manage-permissions-client.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
16
default-themes/base/admin/resources/templates/kc-tabs-clients.html
Executable file
16
default-themes/base/admin/resources/templates/kc-tabs-clients.html
Executable file
@ -0,0 +1,16 @@
|
||||
<div >
|
||||
<h1>
|
||||
<span>{{:: 'clients' | translate}}</span>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: path[2] == 'clients'}">
|
||||
<a href="#/realms/{{realm.realm}}/clients">{{:: 'lookup' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'clients.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[2] == 'client-stores'}" data-ng-hide="!clientStorageProviders || clientStorageProviders.length == 0">
|
||||
<a href="#/realms/{{realm.realm}}/client-stores">{{:: 'client-storage' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'client-stores.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
11
default-themes/base/admin/resources/templates/kc-tabs-group-list.html
Executable file
11
default-themes/base/admin/resources/templates/kc-tabs-group-list.html
Executable file
@ -0,0 +1,11 @@
|
||||
<div data-ng-controller="GroupTabCtrl">
|
||||
<h1>
|
||||
<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' | translate}}</a></li>
|
||||
<li data-ng-show="access.viewRealm" 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>
|
17
default-themes/base/admin/resources/templates/kc-tabs-group.html
Executable file
17
default-themes/base/admin/resources/templates/kc-tabs-group.html
Executable file
@ -0,0 +1,17 @@
|
||||
<div data-ng-controller="GroupTabCtrl">
|
||||
<h1>
|
||||
{{group.name|capitalize}}
|
||||
<i id="removeGroup" class="pficon pficon-delete clickable" data-ng-show="group.access.manage" data-ng-click="removeGroup()"></i>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<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>
|
||||
<li ng-class="{active: path[4] == 'permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && group.access.manage && access.manageAuthorization">
|
||||
<a href="#/realms/{{realm.realm}}/groups/{{group.id}}/permissions">{{:: 'authz-permissions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'manage-permissions-group.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
@ -0,0 +1,16 @@
|
||||
<div data-ng-controller="IdentityProviderTabCtrl">
|
||||
<h1 data-ng-hide="path[0] == 'create'">
|
||||
<span data-ng-show="identityProvider.displayName">{{identityProvider.displayName}}</span>
|
||||
<span data-ng-show="!identityProvider.displayName && provider.groupName == 'Social'">{{provider.name}}</span>
|
||||
<span data-ng-show="!identityProvider.displayName && provider.groupName != 'Social'">{{identityProvider.alias}}</span>
|
||||
|
||||
<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' | 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' | 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] == 'permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && !newIdentityProvider && access.manageAuthorization"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/permissions">{{:: 'authz-permissions' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
@ -0,0 +1,12 @@
|
||||
<div data-ng-controller="LDAPTabCtrl">
|
||||
<h1 data-ng-hide="create">
|
||||
{{instance.name|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' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="create">
|
||||
<li ng-class="{active: path[4] == 'ldap'}"><a href="#/realms/{{realm.realm}}/user-storage/providers/ldap/{{instance.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'ldap-mappers'}"><a href="#/realms/{{realm.realm}}/ldap-mappers/{{instance.id}}">{{:: 'mappers' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
20
default-themes/base/admin/resources/templates/kc-tabs-realm.html
Executable file
20
default-themes/base/admin/resources/templates/kc-tabs-realm.html
Executable file
@ -0,0 +1,20 @@
|
||||
<div data-ng-controller="RealmTabCtrl">
|
||||
<h1 data-ng-hide="createRealm">
|
||||
{{realm.realm|capitalize}}
|
||||
<i id="removeRealm" class="pficon pficon-delete clickable" data-ng-show="access.manageRealm" data-ng-click="removeRealm()"></i>
|
||||
</h1>
|
||||
<h1 data-ng-show="createRealm">{{:: 'add-realm' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: !path[2]}"><a href="#/realms/{{realm.realm}}">{{:: 'realm-tab-general' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'login-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/login-settings">{{:: 'realm-tab-login' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'keys'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/keys">{{:: 'realm-tab-keys' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'smtp-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/smtp-settings">{{:: 'realm-tab-email' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'theme-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/theme-settings">{{:: 'realm-tab-themes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'localization'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/localization">{{:: 'realm-tab-localization' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'cache-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/cache-settings">{{:: 'realm-tab-cache' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'token-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/token-settings">{{:: 'realm-tab-tokens' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'client-registration'}" data-ng-show="access.viewClients"><a href="#/realms/{{realm.realm}}/client-registration/client-initial-access">{{:: 'realm-tab-client-registration' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'defense'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/defense/headers">{{:: 'realm-tab-security-defenses' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
16
default-themes/base/admin/resources/templates/kc-tabs-role.html
Executable file
16
default-themes/base/admin/resources/templates/kc-tabs-role.html
Executable file
@ -0,0 +1,16 @@
|
||||
<div data-ng-controller="RoleTabCtrl">
|
||||
<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' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-show="!create">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/roles/{{role.id}}">{{:: 'details' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-attributes'}"><a href="#/realms/{{realm.realm}}/roles/{{role.id}}/role-attributes">{{:: 'attributes' | translate}}</a></li>
|
||||
<li ng-class="{active: path[4] == 'permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && access.manageRealm && access.manageAuthorization">
|
||||
<a href="#/realms/{{realm.realm}}/roles/{{role.id}}/permissions">{{:: 'authz-permissions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'manage-permissions-role.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'users'}" data-ng-show="access.manageRealm && access.manageAuthorization">
|
||||
<a href="#/realms/{{realm.realm}}/roles/{{role.id}}/users">{{:: 'authz-users' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
@ -0,0 +1,11 @@
|
||||
<div data-ng-controller="UserStorageTabCtrl">
|
||||
<h1 data-ng-hide="create">
|
||||
{{instance.name|capitalize}}
|
||||
<i class="pficon pficon-delete clickable" data-ng-show="!create && access.manageUsers" data-ng-click="removeUserStorage()"></i>
|
||||
</h1>
|
||||
<h1 data-ng-show="create">{{:: 'add-user-storage-provider' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="create">
|
||||
<li ng-class="{active: !path[6]}"><a href="#/realms/{{realm.realm}}/user-storage/providers/{{instance.providerName}}/{{instance.id}}">{{:: 'settings' | translate}}</a></li>
|
||||
</ul>
|
||||
</div>
|
18
default-themes/base/admin/resources/templates/kc-tabs-user.html
Executable file
18
default-themes/base/admin/resources/templates/kc-tabs-user.html
Executable file
@ -0,0 +1,18 @@
|
||||
<div data-ng-controller="UserTabCtrl">
|
||||
<h1 data-ng-hide="create">
|
||||
{{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' | 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' | 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="user.access.manage"><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>
|
11
default-themes/base/admin/resources/templates/kc-tabs-users.html
Executable file
11
default-themes/base/admin/resources/templates/kc-tabs-users.html
Executable file
@ -0,0 +1,11 @@
|
||||
<div >
|
||||
<h1>{{:: 'users' | translate}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: path[2] == 'users'}"><a href="#/realms/{{realm.realm}}/users">{{:: 'lookup' | translate}}</a></li>
|
||||
<li ng-class="{active: path[2] == 'users-permissions'}" data-ng-show="serverInfo.featureEnabled('ADMIN_FINE_GRAINED_AUTHZ') && access.manageUsers && access.manageAuthorization">
|
||||
<a href="#/realms/{{realm.realm}}/users-permissions">{{:: 'authz-permissions' | translate}}</a>
|
||||
<kc-tooltip>{{:: 'manage-permissions-users.tooltip' | translate}}</kc-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
Reference in New Issue
Block a user