add some breadcrumbs, add app role

This commit is contained in:
Bill Burke 2014-08-14 18:46:53 -04:00
parent c38ec33881
commit f7a7c3ca7b
45 changed files with 2856 additions and 2800 deletions

View file

@ -1,24 +1,28 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-hide="create"><span>{{application.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<form class="form-horizontal" name="claimForm"> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<div data-ng-include data-src="'partials/claims.html'"></div> <li class="active">Claims</li>
<div class="pull-right form-actions" data-ng-show="access.manageApplications"> </ol>
<button kc-reset data-ng-show="changed">Clear changes</button> <h2 data-ng-hide="create"><span>{{application.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2>
<button kc-save data-ng-show="changed">Save</button> <form class="form-horizontal" name="claimForm">
</div> <div data-ng-include data-src="'partials/claims.html'"></div>
</form> <div class="pull-right form-actions" data-ng-show="access.manageApplications">
</div> <button kc-reset data-ng-show="changed">Clear changes</button>
</div> <button kc-save data-ng-show="changed">Save</button>
</div>
</form>
</div>
</div>

View file

@ -1,33 +1,37 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-hide="create"><span>{{application.name}}</span> Credentials</h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageApplications"> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<fieldset > <li class="active">Claims</li>
<legend><span class="text">Client Secret</span></legend> </ol>
<div class="form-group"> <h2 data-ng-hide="create"><span>{{application.name}}</span> Credentials</h2>
<label class="col-sm-2 control-label" for="secret">Secret</label> <form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageApplications">
<div class="col-sm-4"> <fieldset >
<input ng-disabled="true" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret" autofocus <legend><span class="text">Client Secret</span></legend>
required> <div class="form-group">
</div> <label class="col-sm-2 control-label" for="secret">Secret</label>
</div> <div class="col-sm-4">
</fieldset> <input ng-disabled="true" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret" autofocus
<div class="pull-right form-actions" data-ng-show="access.manageApplications"> required>
<button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg">Regenerate Secret </div>
</button> </div>
</div> </fieldset>
</form> <div class="pull-right form-actions" data-ng-show="access.manageApplications">
</div> <button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg">Regenerate Secret
</div> </button>
</div>
</form>
</div>
</div>

View file

@ -1,130 +1,132 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-hide="create"><span>{{application.name}}</span> Settings</h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<ol class="breadcrumb" data-ng-show="create"> <li class="active">Settings</li>
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li> </ol>
<li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li> <ol class="breadcrumb" data-ng-show="create">
<li class="active">Add Application</li> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
</ol> <li class="active">Add Application</li>
<h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add Application</h2> </ol>
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p> <h2 data-ng-hide="create"><span>{{application.name}}</span> Application Settings</h2>
<h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add Application</h2>
<form class="form-horizontal" name="applicationForm" novalidate kc-read-only="!access.manageApplications"> <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
<fieldset class="border-top">
<div class="form-group"> <form class="form-horizontal" name="applicationForm" novalidate kc-read-only="!access.manageApplications">
<label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label> <fieldset class="border-top">
<div class="col-sm-4"> <div class="form-group">
<input class="form-control" type="text" id="name" name="name" data-ng-model="application.name" autofocus required> <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
</div> <div class="col-sm-4">
</div> <input class="form-control" type="text" id="name" name="name" data-ng-model="application.name" autofocus required>
<div class="form-group clearfix block"> </div>
<label class="col-sm-2 control-label" for="enabled">Enabled</label> </div>
<div class="col-sm-6"> <div class="form-group clearfix block">
<input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch /> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
</div> <div class="col-sm-6">
<span tooltip-placement="right" tooltip="Disabled applications cannot initiate a login or have obtain access tokens." class="fa fa-info-circle"></span> <input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
<div class="form-group"> <span tooltip-placement="right" tooltip="Disabled applications cannot initiate a login or have obtain access tokens." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="accessType">Access Type</label> </div>
<div class="col-sm-6"> <div class="form-group">
<div class="select-kc"> <label class="col-sm-2 control-label" for="accessType">Access Type</label>
<select id="accessType" <div class="col-sm-6">
ng-change="changeAccessType()" <div class="select-kc">
ng-model="accessType" <select id="accessType"
ng-options="aType for aType in accessTypes"> ng-change="changeAccessType()"
</select> ng-model="accessType"
</div> ng-options="aType for aType in accessTypes">
</div> </select>
<span tooltip-placement="right" tooltip="'Confidential' applications require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' applications are web services that never initiate a login." class="fa fa-info-circle"></span> </div>
</div> </div>
<div class="form-group" data-ng-show="!application.bearerOnly"> <span tooltip-placement="right" tooltip="'Confidential' applications require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' applications are web services that never initiate a login." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label> </div>
<div class="col-sm-6 multiple" ng-repeat="redirectUri in application.redirectUris"> <div class="form-group" data-ng-show="!application.bearerOnly">
<div class="input-group kc-item-deletable"> <label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}" <div class="col-sm-6 multiple" ng-repeat="redirectUri in application.redirectUris">
name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly /> <div class="input-group kc-item-deletable">
<span class="input-group-btn"> <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
<button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)"> name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
Delete</button> <span class="input-group-btn">
</span> <button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)">
</div> Delete</button>
</div> </span>
<div class="col-sm-6 multiple"> </div>
<div class="input-group"> </div>
<input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri" <div class="col-sm-6 multiple">
placeholder="New Redirect URI..." data-ng-model="newRedirectUri" <div class="input-group">
data-ng-class="{'input-below':application.redirectUris.length}" /> <input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri"
<span class="input-group-btn"> placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
<button class="btn btn-default" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button> data-ng-class="{'input-below':application.redirectUris.length}" />
</span> <span class="input-group-btn">
</div> <button class="btn btn-default" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
</div> </span>
<span tooltip-placement="right" tooltip="Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port." class="fa fa-info-circle"></span> </div>
</div> </div>
<div class="form-group" data-ng-show="!application.bearerOnly && !create"> <span tooltip-placement="right" tooltip="Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="baseUrl">Base URL</label> </div>
<div class="col-sm-6"> <div class="form-group" data-ng-show="!application.bearerOnly && !create">
<input class="form-control" type="text" name="baseUrl" id="baseUrl" <label class="col-sm-2 control-label" for="baseUrl">Base URL</label>
data-ng-model="application.baseUrl"> <div class="col-sm-6">
</div> <input class="form-control" type="text" name="baseUrl" id="baseUrl"
<span tooltip-placement="right" tooltip="Optional URL to use when linking to this application. i.e. the welcome page." class="fa fa-info-circle"></span> data-ng-model="application.baseUrl">
</div> </div>
<div class="form-group" data-ng-hide="create"> <span tooltip-placement="right" tooltip="Optional URL to use when linking to this application. i.e. the welcome page." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="adminUrl">Admin URL</label> </div>
<div class="col-sm-6"> <div class="form-group" data-ng-hide="create">
<input class="form-control" type="text" name="adminUrl" id="adminUrl" <label class="col-sm-2 control-label" for="adminUrl">Admin URL</label>
data-ng-model="application.adminUrl"> <div class="col-sm-6">
</div> <input class="form-control" type="text" name="adminUrl" id="adminUrl"
<span tooltip-placement="right" tooltip="URL to the admin interface of the application. Set this if the application supports the adapter REST API. This REST API allows the auth server to push revocation policies and other adminstrative tasks. Usually this is set to the base URL of the application." class="fa fa-info-circle"></span> data-ng-model="application.adminUrl">
</div> </div>
<div class="form-group" data-ng-show="!application.bearerOnly && !create"> <span tooltip-placement="right" tooltip="URL to the admin interface of the application. Set this if the application supports the adapter REST API. This REST API allows the auth server to push revocation policies and other adminstrative tasks. Usually this is set to the base URL of the application." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label> </div>
<div class="col-sm-6 multiple" ng-repeat="webOrigin in application.webOrigins"> <div class="form-group" data-ng-show="!application.bearerOnly && !create">
<div class="input-group kc-item-deletable"> <label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}" <div class="col-sm-6 multiple" ng-repeat="webOrigin in application.webOrigins">
name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly /> <div class="input-group kc-item-deletable">
<span class="input-group-btn"> <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
<button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)"> name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
Delete</button> <span class="input-group-btn">
</span> <button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)">
</div> Delete</button>
</div> </span>
<div class="col-sm-6 multiple"> </div>
<div class="input-group"> </div>
<input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin" <div class="col-sm-6 multiple">
placeholder="New Web Origin..." data-ng-model="newWebOrigin" <div class="input-group">
data-ng-class="{'input-below':application.webOrigins.length}" /> <input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin"
<span class="input-group-btn"> placeholder="New Web Origin..." data-ng-model="newWebOrigin"
<button class="btn btn-default" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button> data-ng-class="{'input-below':application.webOrigins.length}" />
</span> <span class="input-group-btn">
</div> <button class="btn btn-default" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
</div> </span>
<span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="fa fa-info-circle"></span> </div>
</div> </div>
</fieldset> <span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="fa fa-info-circle"></span>
</div>
<div class="pull-right form-actions" data-ng-show="create && access.manageApplications"> </fieldset>
<button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <div class="pull-right form-actions" data-ng-show="create && access.manageApplications">
</div> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<div class="pull-right form-actions" data-ng-show="!create && access.manageApplications"> <button kc-save data-ng-show="changed">Save</button>
<button kc-reset data-ng-show="changed">Clear changes</button> </div>
<button kc-save data-ng-show="changed">Save</button> <div class="pull-right form-actions" data-ng-show="!create && access.manageApplications">
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Application</button> <button kc-reset data-ng-show="changed">Clear changes</button>
</div> <button kc-save data-ng-show="changed">Save</button>
</form> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Application</button>
</div> </div>
</div> </form>
</div>
</div>

View file

@ -1,44 +1,47 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<ol class="breadcrumb" data-ng-hide="create">
<div id="content"> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<h2><span>{{application.name}}</span> Installation <span tooltip-placement="right" tooltip="Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your client applications." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<form class="form-horizontal" name="realmForm" novalidate> <li class="active">Installation</li>
<fieldset class="border-top"> </ol>
<div class="form-group input-select"> <h2><span>{{application.name}}</span> Adapter Installation <span tooltip-placement="right" tooltip="Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your client applications." class="fa fa-info-circle"></span></h2>
<label class="col-sm-2 control-label" for="configFormats">Format Option</label> <form class="form-horizontal" name="realmForm" novalidate>
<div class="col-sm-4"> <fieldset class="border-top">
<div class="input-group"> <div class="form-group input-select">
<div class="select-kc"> <label class="col-sm-2 control-label" for="configFormats">Format Option</label>
<select id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats"> <div class="col-sm-4">
<option value="" selected> Select a Format </option> <div class="input-group">
</select> <div class="select-kc">
</div> <select id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats">
</div> <option value="" selected> Select a Format </option>
</div> </select>
</div> </div>
<div class="form-group" ng-show="installation"> </div>
<div class="col-sm-12"> </div>
<textarea class="form-control" rows="20" kc-select-action="click">{{installation}}</textarea> </div>
</div> <div class="form-group" ng-show="installation">
</div> <div class="col-sm-12">
</fieldset> <textarea class="form-control" rows="20" kc-select-action="click">{{installation}}</textarea>
</form> </div>
</div>
<div class="pull-right form-actions" ng-show="installation"> </fieldset>
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit">Download</a> </form>
</div>
</div> <div class="pull-right form-actions" ng-show="installation">
</div> <a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit">Download</a>
</div>
</div>
</div>

View file

@ -1,61 +1,61 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="">Application List</a></li> <li class="active"><a href="">Application List</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Applications <span tooltip-placement="right" tooltip="Applications are trusted browser apps and web services in a realm. These applications can request a login. You can also define application specific roles." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> Applications <span tooltip-placement="right" tooltip="Applications are trusted browser apps and web services in a realm. These applications can request a login. You can also define application specific roles." class="fa fa-info-circle"></span></h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="3"> <th class="kc-table-actions" colspan="3">
<div class="search-comp clearfix"> <div class="search-comp clearfix">
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name" <input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}"> onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
<button type="submit" class="kc-icon-search" tooltip-placement="right" <button type="submit" class="kc-icon-search" tooltip-placement="right"
tooltip="Search by application name."> tooltip="Search by application name.">
Icon: search Icon: search
</button> </button>
</div> </div>
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary" href="#/create/application/{{realm.realm}}">Add Application</a> <a class="btn btn-primary" href="#/create/application/{{realm.realm}}">Add Application</a>
</div> </div>
</th> </th>
</tr> </tr>
<tr data-ng-hide="applications.length == 0"> <tr data-ng-hide="applications.length == 0">
<th>Application Name</th> <th>Application Name</th>
<th>Enabled</th> <th>Enabled</th>
<th>Base URL</th> <th>Base URL</th>
</tr> </tr>
</thead> </thead>
<!--<tfoot data-ng-show="applications && applications.length > 5"> <!--<tfoot data-ng-show="applications && applications.length > 5">
<tr> <tr>
<td colspan="3"> <td colspan="3">
<div class="table-nav"> <div class="table-nav">
<a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#" page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
class="next">Next class="next">Next
page</a><a href="#" class="last">Last page</a> page</a><a href="#" class="last">Last page</a>
</div> </div>
</td> </td>
</tr> </tr>
</tfoot>--> </tfoot>-->
<tbody> <tbody>
<tr ng-repeat="app in applications | filter:search"> <tr ng-repeat="app in applications | filter:search">
<td><a href="#/realms/{{realm.realm}}/applications/{{app.name}}">{{app.name}}</a></td> <td><a href="#/realms/{{realm.realm}}/applications/{{app.name}}">{{app.name}}</a></td>
<td>{{app.enabled}}</td> <td>{{app.enabled}}</td>
<td ng-class="{'text-muted': !app.baseUrl}"> <td ng-class="{'text-muted': !app.baseUrl}">
<a href="{{app.baseUrl}}" data-ng-show="app.baseUrl">{{app.baseUrl}}</a> <a href="{{app.baseUrl}}" data-ng-show="app.baseUrl">{{app.baseUrl}}</a>
<span data-ng-hide="app.baseUrl">Not defined</span> <span data-ng-hide="app.baseUrl">Not defined</span>
</tr> </tr>
<tr data-ng-show="applications.length == 0"> <tr data-ng-show="applications.length == 0">
<td>No applications available</td> <td>No applications available</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="feedback warning inline" data-ng-show="search && applications.length == 0"> <div class="feedback warning inline" data-ng-show="search && applications.length == 0">
<p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p> <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,36 +1,40 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb">
<h2 data-ng-hide="create"><span>{{application.name}}</span> Revocation Policies</h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm"> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<fieldset class="border-top"> <li class="active">Revocation</li>
<div class="form-group"> </ol>
<label class="col-sm-2 control-label" for="notBefore">Not Before</label> <h2 data-ng-hide="create"><span>{{application.name}}</span> Revocation Policies</h2>
<div class="col-sm-4"> <form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus> <fieldset class="border-top">
</div> <div class="form-group">
<span tooltip-placement="right" tooltip="Revoke any tokens issued before this date for this application." class="fa fa-info-circle"></span> <label class="col-sm-2 control-label" for="notBefore">Not Before</label>
</div> <div class="col-sm-4">
</fieldset> <input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
<div class="pull-right form-actions" data-ng-show="access.manageApplications"> </div>
<button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear <span tooltip-placement="right" tooltip="Revoke any tokens issued before this date for this application." class="fa fa-info-circle"></span>
</button> </div>
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now </fieldset>
</button> <div class="pull-right form-actions" data-ng-show="access.manageApplications">
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="If admin URL is configured for this application, push this policy to that application." tooltip-placement="bottom">Push <button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear
</button> </button>
</div> <button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now
</form> </button>
</div> <button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="If admin URL is configured for this application, push this policy to that application." tooltip-placement="bottom">Push
</div> </button>
</div>
</form>
</div>
</div>

View file

@ -1,145 +1,150 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-show="create">
<ol class="breadcrumb" data-ng-hide="create"> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li> <li class="active">Add role</li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> </ol>
<li class="active">{{role.name}}</li>
</ol> <ol class="breadcrumb" data-ng-hide="create">
<li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<h2 data-ng-hide="create" class="pull-left"><span>{{application.name}}</span> {{role.name}} Application Role</h2> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<h2 data-ng-show="create" class="pull-left"><span>{{application.name}}</span> Add Application Role</h2> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<p class="subtitle"><span class="required">*</span> Required fields</p> <li class="active">{{role.name}}</li>
</ol>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications">
<h2 data-ng-hide="create" class="pull-left"><span>{{application.name}}</span> {{role.name}} Application Role</h2>
<fieldset class="border-top"> <h2 data-ng-show="create" class="pull-left"><span>{{application.name}}</span> Add Application Role</h2>
<div class="form-group"> <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
<label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications">
<div class="col-sm-4">
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus <fieldset class="border-top">
required data-ng-readonly="!create"> <div class="form-group">
</div> <label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
</div>
<div class="form-group"> <div class="col-sm-4">
<label class="col-sm-2 control-label" for="description">Description </label> <input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
required data-ng-readonly="!create">
<div class="col-sm-4"> </div>
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea> </div>
<!-- Replaced by the textarea above <input type="text" id="description" name="description" data-ng-model="role.description" autofocus <div class="form-group">
required> --> <label class="col-sm-2 control-label" for="description">Description </label>
</div>
</div> <div class="col-sm-4">
<div class="form-group clearfix block"> <textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
<label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label> <!-- Replaced by the textarea above <input type="text" id="description" name="description" data-ng-model="role.description" autofocus
<div class="col-sm-4"> required> -->
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch /> </div>
</div> </div>
<span tooltip-placement="right" tooltip="When this role is assigned to a user, the user implicitly is assigned every role associated with the composite role." class="fa fa-info-circle"></span> </div> <div class="form-group clearfix block">
</div> <label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
</fieldset> <div class="col-sm-4">
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)"> </div>
<legend uncollapsed><span class="text">Composite Realm Roles</span> </legend> <span tooltip-placement="right" tooltip="When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly." class="fa fa-info-circle"></span>
<div class="form-group col-sm-10"> </div>
<div class="controls changing-selectors"> </fieldset>
<div class="select-title">
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label> <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
<select id="available" class="form-control" multiple size="5" <legend uncollapsed><span class="text">Composite Realm Roles</span> </legend>
ng-multiple="true" <div class="form-group col-sm-10">
ng-model="selectedRealmRoles" <div class="controls changing-selectors">
ng-options="r.name for r in realmRoles"> <div class="select-title">
</select> <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label>
</div> <select id="available" class="form-control" multiple size="5"
<div class="middle-buttons kc-vertical"> ng-multiple="true"
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Associate role" tooltip-placement="right"> ng-model="selectedRealmRoles"
<span class="kc-icon-arrow-right">Move right</span> ng-options="r.name for r in realmRoles">
</button> </select>
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left"> </div>
<span class="kc-icon-arrow-left">Move left</span> <div class="middle-buttons kc-vertical">
</button> <button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Associate role" tooltip-placement="right">
</div> <span class="kc-icon-arrow-right">Move right</span>
<div class="select-title"> </button>
<label class="control-label" for="assigned">Associated Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label> <button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left">
<select id="assigned" class="form-control" multiple size=5 <span class="kc-icon-arrow-left">Move left</span>
ng-multiple="true" </button>
ng-model="selectedRealmMappings" </div>
ng-options="r.name for r in realmMappings"> <div class="select-title">
</select> <label class="control-label" for="assigned">Associated Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label>
</div> <select id="assigned" class="form-control" multiple size=5
</div> ng-multiple="true"
</div> ng-model="selectedRealmMappings"
</fieldset> ng-options="r.name for r in realmMappings">
</select>
<fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)"> </div>
<legend uncollapsed><span class="text">Composite Application Roles</span> </legend> </div>
<div class="form-group input-select"> </div>
<label class="col-sm-2 control-label" for="applications">Application</label> </fieldset>
<div class="col-sm-4">
<div class="input-group"> <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
<div class="select-kc"> <legend uncollapsed><span class="text">Composite Application Roles</span> </legend>
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications"> <div class="form-group input-select">
<option value="" selected> Select an Application...</option> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view/modify roles associated with this composite." class="fa fa-info-circle"></span></label>
</select> <div class="col-sm-4">
</div> <div class="input-group">
<span tooltip-placement="right" tooltip="Select an application to view/modify roles associated with this composite." class="fa fa-info-circle"></span> </div> <div class="select-kc">
</div> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications">
</div> <option value="" selected> Select an Application...</option>
</div> </select>
<div class="form-group" ng-show="compositeApp"> </div>
<div class="controls changing-selectors application col-sm-10">
<div class="select-title"> </div>
<label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that you can associate to this composite role." class="fa fa-info-circle"></span></label> </div>
<select id="available-app" class="form-control" multiple size="5" </div>
ng-multiple="true" <div class="form-group" ng-show="compositeApp">
ng-model="selectedApplicationRoles" <div class="controls changing-selectors application col-sm-10">
ng-options="r.name for r in applicationRoles"> <div class="select-title">
</select> <label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that you can associate to this composite role." class="fa fa-info-circle"></span></label>
</div> <select id="available-app" class="form-control" multiple size="5"
<div class="middle-buttons kc-vertical"> ng-multiple="true"
<button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Associate role" tooltip-placement="right"> ng-model="selectedApplicationRoles"
<span class="kc-icon-arrow-right">Move right</span> ng-options="r.name for r in applicationRoles">
</button> </select>
<button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Disassociate role" tooltip-placement="left"> </div>
<span class="kc-icon-arrow-left">Move left</span> <div class="middle-buttons kc-vertical">
</button> <button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Associate role" tooltip-placement="right">
</div> <span class="kc-icon-arrow-right">Move right</span>
<div class="select-title"> </button>
<label class="control-label" for="assigned-app">Associated Roles <span tooltip-placement="right" tooltip="Application roles associated with this composite role." class="fa fa-info-circle"></span></label> <button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Disassociate role" tooltip-placement="left">
<select id="assigned-app" class="form-control" multiple size=5 <span class="kc-icon-arrow-left">Move left</span>
ng-multiple="true" </button>
ng-model="selectedApplicationMappings" </div>
ng-options="r.name for r in applicationMappings"> <div class="select-title">
</select> <label class="control-label" for="assigned-app">Associated Roles <span tooltip-placement="right" tooltip="Application roles associated with this composite role." class="fa fa-info-circle"></span></label>
</div> <select id="assigned-app" class="form-control" multiple size=5
</div> ng-multiple="true"
</div> ng-model="selectedApplicationMappings"
</fieldset> ng-options="r.name for r in applicationMappings">
</select>
<div class="pull-right form-actions" data-ng-show="create && access.manageApplications"> </div>
<button kc-cancel data-ng-click="cancel()">Cancel</button> </div>
<button kc-save data-ng-show="changed">Save</button> </div>
</div> </fieldset>
<div class="pull-right form-actions" data-ng-show="!create && access.manageApplications">
<button kc-reset data-ng-show="changed">Clear changes</button> <div class="pull-right form-actions" data-ng-show="create && access.manageApplications">
<button kc-save data-ng-show="changed">Save</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<div class="pull-right form-actions" data-ng-show="!create && access.manageApplications">
</form> <button kc-reset data-ng-show="changed">Clear changes</button>
</div> <button kc-save data-ng-show="changed">Save</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div>
</form>
</div>
</div> </div>

View file

@ -1,70 +1,74 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2><span>{{application.name}}</span> Application Roles</h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<table class="table table-striped table-bordered"> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<thead> <li class="active">Roles</li>
<tr> </ol>
<th class="kc-table-actions" colspan="3" data-ng-show="access.manageApplications"> <h2><span>{{application.name}}</span> Application Roles</h2>
<div class="pull-right"> <table class="table table-striped table-bordered">
<a class="btn btn-primary" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a> <thead>
<!-- <button class="remove disabled">Remove</button> --> <tr>
</div> <th class="kc-table-actions" colspan="3" data-ng-show="access.manageApplications">
</th> <div class="pull-right">
</tr> <a class="btn btn-primary" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a>
<!--<tr data-ng-show="roles && roles.length > 5"> <!-- <button class="remove disabled">Remove</button> -->
<th class="kc-table-actions" colspan="3"> </div>
<div class="search-comp clearfix"> </th>
<input type="text" placeholder="Search..." class="search"> </tr>
<button class="icon-search" tooltip-placement="right" <!--<tr data-ng-show="roles && roles.length > 5">
tooltip="Search by role name."> <th class="kc-table-actions" colspan="3">
Icon: search <div class="search-comp clearfix">
</button> <input type="text" placeholder="Search..." class="search">
</div> <button class="icon-search" tooltip-placement="right"
</th> tooltip="Search by role name.">
</tr> Icon: search
--> </button>
<tr data-ng-hide="!roles || roles.length == 0"> </div>
<th>Role Name</th> </th>
<th>Composite</th> </tr>
<th>Description</th> -->
</tr> <tr data-ng-hide="!roles || roles.length == 0">
</thead> <th>Role Name</th>
<!--<tfoot data-ng-show="roles && roles.length > 5"> <th>Composite</th>
<tr> <th>Description</th>
<td colspan="3"> </tr>
<div class="table-nav"> </thead>
<a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous <!--<tfoot data-ng-show="roles && roles.length > 5">
page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#" <tr>
class="next">Next <td colspan="3">
page</a><a href="#" class="last">Last page</a> <div class="table-nav">
</div> <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
</td> page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
</tr> class="next">Next
</tfoot> page</a><a href="#" class="last">Last page</a>
--> </div>
<tbody> </td>
<tr ng-repeat="role in roles"> </tr>
<td><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles/{{role.name}}">{{role.name}}</a></td> </tfoot>
<td>{{role.composite}}</td> -->
<td>{{role.description}}</td> <tbody>
</tr> <tr ng-repeat="role in roles">
<tr data-ng-show="!roles || roles.length == 0"> <td><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles/{{role.name}}">{{role.name}}</a></td>
<td>No application roles available</td> <td>{{role.composite}}</td>
</tr> <td>{{role.description}}</td>
</tbody> </tr>
</table> <tr data-ng-show="!roles || roles.length == 0">
</div> <td>No application roles available</td>
</div> </tr>
</tbody>
</table>
</div>
</div>

View file

@ -1,131 +1,135 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li data-ng-show="!application.bearerOnly"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2><span>{{application.name}}</span> Scope Mappings <span tooltip-placement="right" tooltip="Scope mappings allow you to restrict which user role mappings are included within the access token requested by the application." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<p class="subtitle"></p> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageApplications"> <li class="active">Scope</li>
<fieldset class="border-top"> </ol>
<div class="form-group"> <h2><span>{{application.name}}</span> Scope Mappings <span tooltip-placement="right" tooltip="Scope mappings allow you to restrict which user role mappings are included within the access token requested by the application." class="fa fa-info-circle"></span></h2>
<label class="col-sm-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label> <p class="subtitle"></p>
<div class="col-sm-4"> <form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageApplications">
<input ng-model="application.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch /> <fieldset class="border-top">
</div> <div class="form-group">
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="fa fa-info-circle"></span> <label class="col-sm-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label>
</div> <div class="col-sm-4">
</fieldset> <input ng-model="application.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
</form> </div>
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="fa fa-info-circle"></span>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications" data-ng-show="!application.fullScopeAllowed"> </div>
<fieldset> </fieldset>
<legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></legend> </form>
<div class="form-group col-sm-10">
<div class="controls changing-selectors"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications" data-ng-show="!application.fullScopeAllowed">
<div class="select-title"> <fieldset>
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="fa fa-info-circle"></span></label> <legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></legend>
<select id="available" class="form-control" multiple size="5" <div class="form-group col-sm-10">
ng-multiple="true" <div class="controls changing-selectors">
ng-model="selectedRealmRoles" <div class="select-title">
ng-options="r.name for r in realmRoles"> <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="fa fa-info-circle"></span></label>
</select> <select id="available" class="form-control" multiple size="5"
</div> ng-multiple="true"
<div class="middle-buttons kc-vertical"> ng-model="selectedRealmRoles"
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"> ng-options="r.name for r in realmRoles">
<span class="kc-icon-arrow-right">Assign role</span> </select>
</button> </div>
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left"> <div class="middle-buttons kc-vertical">
<span class="kc-icon-arrow-left">Unassign role</span> <button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
</button> <span class="kc-icon-arrow-right">Assign role</span>
</div> </button>
<div class="select-title"> <button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left">
<label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></label> <span class="kc-icon-arrow-left">Unassign role</span>
<select id="assigned" class="form-control" multiple size=5 </button>
ng-multiple="true" </div>
ng-model="selectedRealmMappings" <div class="select-title">
ng-options="r.name for r in realmMappings"> <label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></label>
</select> <select id="assigned" class="form-control" multiple size=5
</div> ng-multiple="true"
<div class="middle-buttons"> ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
</div> </select>
<div class="select-title"> </div>
<label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned realm level roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label> <div class="middle-buttons">
<select id="realm-composite" class="form-control" multiple size=5 -
ng-disabled="true" </div>
ng-model="dummymodel" <div class="select-title">
ng-options="r.name for r in realmComposite"> <label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned realm level roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label>
</select> <select id="realm-composite" class="form-control" multiple size=5
</div> ng-disabled="true"
</div> ng-model="dummymodel"
</div> ng-options="r.name for r in realmComposite">
</fieldset> </select>
</div>
<fieldset ng-show="applications.length > 0"> </div>
<legend><span class="text">Application Roles</span> </legend> </div>
<div class="form-group input-select"> </fieldset>
<label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="fa fa-info-circle"></span></label>
<div class="col-sm-4"> <fieldset ng-show="applications.length > 0">
<div class="input-group"> <legend><span class="text">Application Roles</span> </legend>
<div class="select-kc"> <div class="form-group input-select">
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications|remove:application:'id')" ng-disabled="false"> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="fa fa-info-circle"></span></label>
<option value="" selected> Select an Application </option> <div class="col-sm-4">
</select> <div class="input-group">
</div> <div class="select-kc">
</div> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications|remove:application:'id')" ng-disabled="false">
</div> <option value="" selected> Select an Application </option>
</select>
</div> </div>
<div class="form-group" ng-show="targetApp"> </div>
<div class="controls changing-selectors col-sm-10"> </div>
<div class="select-title">
<label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="fa fa-info-circle"></span></label> </div>
<select id="app-available" class="form-control" multiple size="5" <div class="form-group" ng-show="targetApp">
ng-multiple="true" <div class="controls changing-selectors col-sm-10">
ng-model="selectedApplicationRoles" <div class="select-title">
ng-options="r.name for r in applicationRoles"> <label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="fa fa-info-circle"></span></label>
</select> <select id="app-available" class="form-control" multiple size="5"
</div> ng-multiple="true"
<div class="middle-buttons kc-vertical"> ng-model="selectedApplicationRoles"
<button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right"> ng-options="r.name for r in applicationRoles">
<span class="kc-icon-arrow-right">Move right</span> </select>
</button> </div>
<button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left"> <div class="middle-buttons kc-vertical">
<span class="kc-icon-arrow-left">Move left</span> <button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right">
</button> <span class="kc-icon-arrow-right">Move right</span>
</div> </button>
<div class="select-title"> <button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left">
<label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="fa fa-info-circle"></span></label> <span class="kc-icon-arrow-left">Move left</span>
<select id="app-assigned" class="form-control" multiple size=5 </button>
ng-multiple="true" </div>
ng-model="selectedApplicationMappings" <div class="select-title">
ng-options="r.name for r in applicationMappings"> <label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="fa fa-info-circle"></span></label>
</select> <select id="app-assigned" class="form-control" multiple size=5
</div> ng-multiple="true"
<div class="middle-buttons"> ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
</div> </select>
<div class="select-title"> </div>
<label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned application roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label> <div class="middle-buttons">
<select id="app-composite" class="form-control" multiple size=5 -
ng-disabled="true" </div>
ng-model="dummymodel" <div class="select-title">
ng-options="r.name for r in applicationComposite"> <label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned application roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label>
</select> <select id="app-composite" class="form-control" multiple size=5
</div> ng-disabled="true"
</div> ng-model="dummymodel"
</div> ng-options="r.name for r in applicationComposite">
</fieldset> </select>
</form> </div>
</div> </div>
</div>
</fieldset>
</form>
</div>
</div> </div>

View file

@ -1,62 +1,66 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
<li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li> <li data-ng-show="!application.bearerOnly && !application.publicClient"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/revocation">Revocation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2><span>{{application.name}}</span> Sessions <span tooltip-placement="right" tooltip="View active sessions for this application. Allows you to see which users are active and when they logged in." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<form class="form-horizontal" name="sessionStats"> <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
<fieldset class="border-top"> <li class="active">Application Sessions</li>
<div class="form-group"> </ol>
<label class="col-sm-2 control-label" for="activeSessions">Active Sessions</label> <h2><span>{{application.name}}</span> Active Sessions <span tooltip-placement="right" tooltip="View active sessions for this application. Allows you to see which users are active and when they logged in." class="fa fa-info-circle"></span></h2>
<div class="col-sm-4"> <form class="form-horizontal" name="sessionStats">
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true"> <fieldset class="border-top">
</div> <div class="form-group">
<span tooltip-placement="right" tooltip="Total number of active user sessions for this application." class="fa fa-info-circle"></span> <label class="col-sm-2 control-label" for="activeSessions">Active Sessions</label>
</div> <div class="col-sm-4">
</fieldset> <input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
</form> </div>
<table class="table table-striped table-bordered" data-ng-show="count > 0"> <span tooltip-placement="right" tooltip="Total number of active user sessions for this application." class="fa fa-info-circle"></span>
<thead> </div>
<tr> </fieldset>
<th class="kc-table-actions" colspan="3"> </form>
<div class="pull-right"> <table class="table table-striped table-bordered" data-ng-show="count > 0">
<a class="btn btn-primary" ng-click="loadUsers()" tooltip-placement="left" tooltip="Warning, this is a potentially expensive operation depending on number of active sessions.">Show Sessions</a> <thead>
</div> <tr>
</th> <th class="kc-table-actions" colspan="3">
</tr> <div class="pull-right">
<tr data-ng-show="sessions"> <a class="btn btn-primary" ng-click="loadUsers()" tooltip-placement="left" tooltip="Warning, this is a potentially expensive operation depending on number of active sessions.">Show Sessions</a>
<th>User</th> </div>
<th>From IP</th> </th>
<th>Session Start</th> </tr>
</tr> <tr data-ng-show="sessions">
</thead> <th>User</th>
<tfoot data-ng-show="sessions && sessions.length > 5"> <th>From IP</th>
<tr> <th>Session Start</th>
<td colspan="7"> </tr>
<div class="table-nav"> </thead>
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button> <tfoot data-ng-show="sessions && sessions.length > 5">
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button> <tr>
<button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">Next page</button> <td colspan="7">
</div> <div class="table-nav">
</td> <button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
</tr> <button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
</tfoot> <button data-ng-click="nextPage()" class="next" ng-disabled="sessions.length < query.max">Next page</button>
<tbody> </div>
<tr data-ng-repeat="session in sessions"> </td>
<td><a href="#/realms/{{realm.realm}}/users/{{session.user}}">{{session.user}}</a></td> </tr>
<td>{{session.ipAddress}}</td> </tfoot>
<td>{{session.start | date:'medium'}}</td> <tbody>
</tr> <tr data-ng-repeat="session in sessions">
</tbody> <td><a href="#/realms/{{realm.realm}}/users/{{session.user}}">{{session.user}}</a></td>
</table> <td>{{session.ipAddress}}</td>
</div> <td>{{session.start | date:'medium'}}</td>
</tr>
</tbody>
</table>
</div>
</div> </div>

View file

@ -1,39 +1,39 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="#/realms/{{realm.realm}}/defense/headers">Headers</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/defense/headers">Headers</a></li>
<li><a href="#/realms/{{realm.realm}}/defense/brute-force">Brute Force Detection</a></li> <li><a href="#/realms/{{realm.realm}}/defense/brute-force">Brute Force Detection</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<div data-ng-show="access.viewRealm"> <div data-ng-show="access.viewRealm">
<h2><span>{{realm.realm}}</span> Browser Security Headers <span tooltip-placement="right" tooltip="HTTP Response header values that you can set to help prevent clickjacking and XSS attacks." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> Browser Security Headers <span tooltip-placement="right" tooltip="HTTP Response header values that you can set to help prevent clickjacking and XSS attacks." class="fa fa-info-circle"></span></h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="xFrameOptions"><a href="http://tools.ietf.org/html/rfc7034">X-Frame-Options</a></label> <label class="col-sm-2 control-label" for="xFrameOptions"><a href="http://tools.ietf.org/html/rfc7034">X-Frame-Options</a></label>
<div class="col-sm-6"> <div class="col-sm-6">
<input class="form-control" id="xFrameOptions" type="text" ng-model="realm.browserSecurityHeaders.xFrameOptions"> <input class="form-control" id="xFrameOptions" type="text" ng-model="realm.browserSecurityHeaders.xFrameOptions">
</div> </div>
<span tooltip-placement="right" tooltip="Click on label link for more information. The default value prevents pages from being included via non-origin iframes." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Click on label link for more information. The default value prevents pages from being included via non-origin iframes." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="contentSecurityPolicy"><a href="http://www.w3.org/TR/CSP/">Content-Security-Policy</a></label> <label class="col-sm-2 control-label" for="contentSecurityPolicy"><a href="http://www.w3.org/TR/CSP/">Content-Security-Policy</a></label>
<div class="col-sm-6"> <div class="col-sm-6">
<input class="form-control" id="contentSecurityPolicy" type="text" ng-model="realm.browserSecurityHeaders.contentSecurityPolicy"> <input class="form-control" id="contentSecurityPolicy" type="text" ng-model="realm.browserSecurityHeaders.contentSecurityPolicy">
</div> </div>
<span tooltip-placement="right" tooltip="Click on label link for more information. The default value prevents pages from being included via non-origin iframes." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Click on label link for more information. The default value prevents pages from being included via non-origin iframes." class="fa fa-info-circle"></span>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageRealm"> <div class="pull-right form-actions" data-ng-show="access.manageRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
<div data-ng-hide="access.viewRealm"> <div data-ng-hide="access.viewRealm">
<h2 ><span>{{realm.realm}}</span></h2> <h2 ><span>{{realm.realm}}</span></h2>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,85 +1,85 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/users">User List</a></li> <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li> <li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 class="pull-left"><span>{{realm.realm}}</span> Provider Settings</h2> <h2 class="pull-left"><span>{{realm.realm}}</span> Provider Settings</h2>
<p class="subtitle"><span class="required">*</span> Required fields</p> <p class="subtitle"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset> <fieldset>
<legend><span class="text">Required Settings</span></legend> <legend><span class="text">Required Settings</span></legend>
<div class="form-group clearfix" data-ng-show="!create"> <div class="form-group clearfix" data-ng-show="!create">
<label class="col-sm-2 control-label" for="providerId">Provider ID </label> <label class="col-sm-2 control-label" for="providerId">Provider ID </label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly> <input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="consoleDisplayName">Console display name </label> <label class="col-sm-2 control-label" for="consoleDisplayName">Console display name </label>
<div class="col-sm-4"> <div class="col-sm-4">
<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">
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="priority">Priority </label> <label class="col-sm-2 control-label" for="priority">Priority </label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="priority" type="text" ng-model="instance.priority"> <input class="form-control" id="priority" type="text" ng-model="instance.priority">
</div> </div>
</div> </div>
<div data-ng-repeat="option in providerFactory.options" class="form-group"> <div data-ng-repeat="option in providerFactory.options" class="form-group">
<label class="col-sm-2 control-label">{{option|capitalize}} </label> <label class="col-sm-2 control-label">{{option|capitalize}} </label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" data-ng-model="instance.config[ option ]" > <input class="form-control" type="text" data-ng-model="instance.config[ option ]" >
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend><span class="text">Sync settings</span></legend> <legend><span class="text">Sync settings</span></legend>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="fullSyncEnabled">Periodic full sync</label> <label class="col-sm-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch /> <input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix" data-ng-show="fullSyncEnabled"> <div class="form-group clearfix" data-ng-show="fullSyncEnabled">
<label class="col-sm-2 control-label" for="fullSyncPeriod">Full sync period</label> <label class="col-sm-2 control-label" for="fullSyncPeriod">Full sync period</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" /> <input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" />
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label> <label class="col-sm-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch /> <input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix" data-ng-show="changedSyncEnabled"> <div class="form-group clearfix" data-ng-show="changedSyncEnabled">
<label class="col-sm-2 control-label" for="changedSyncPeriod">Changed users sync period</label> <label class="col-sm-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" /> <input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers"> <div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
<button kc-cancel data-ng-click="cancel()">Cancel</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers"> <div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
<button kc-delete data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button> <button kc-delete data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button>
<button kc-delete data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button> <button kc-delete data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,4 +1,4 @@
<div id="wrapper" class="container"> <div id="wrapper" class="container">
<div class="row"> <div class="row">
</div> </div>
</div> </div>

View file

@ -1,14 +1,14 @@
<div id="wrapper" class="container"> <div id="wrapper" class="container">
<div class="row"> <div class="row">
<div class="bs-sidebar col-md-3 clearfix"></div> <div class="bs-sidebar col-md-3 clearfix"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<div class="error-container"> <div class="error-container">
<h2>Page <strong>not found</strong>...</h2> <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> <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 &raquo;</a> <a href="#" class="link-right">Go to the home page &raquo;</a>
<!-- <a href="#" class="link-right">Go to the realm page &raquo;</a> --> <!-- <a href="#" class="link-right">Go to the realm page &raquo;</a> -->
</div> </div>
</div> </div>
<div id="container-right-bg"></div> <div id="container-right-bg"></div>
</div> </div>
</div> </div>

View file

@ -1,22 +1,26 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-hide="create"><span>{{oauth.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<form class="form-horizontal" name="claimForm"> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
<div data-ng-include data-src="'partials/claims.html'"></div> <li class="active">Claims</li>
<div class="pull-right form-actions" data-ng-show="access.manageClients"> </ol>
<button kc-reset data-ng-show="changed">Clear changes</button> <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2>
<button kc-save data-ng-show="changed">Save</button> <form class="form-horizontal" name="claimForm">
</div> <div data-ng-include data-src="'partials/claims.html'"></div>
</form> <div class="pull-right form-actions" data-ng-show="access.manageClients">
</div> <button kc-reset data-ng-show="changed">Clear changes</button>
</div> <button kc-save data-ng-show="changed">Save</button>
</div>
</form>
</div>
</div>

View file

@ -1,32 +1,36 @@
<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-hide="create"><span>{{oauth.name}}</span> Credentials</h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageClients"> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
<fieldset > <li class="active">Credentials</li>
<legend><span class="text">Client Secret</span></legend> </ol>
<div class="form-group"> <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Credentials</h2>
<label class="col-sm-2 control-label" for="secret">Secret</label> <form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageClients">
<div class="col-sm-4"> <fieldset >
<input ng-disabled="true" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret" autofocus <legend><span class="text">Client Secret</span></legend>
required> <div class="form-group">
</div> <label class="col-sm-2 control-label" for="secret">Secret</label>
</div> <div class="col-sm-4">
</fieldset> <input ng-disabled="true" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret" autofocus
<div class="pull-right form-actions" data-ng-show="access.manageClients"> required>
<button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg">Regenerate Secret </div>
</button> </div>
</div> </fieldset>
</form> <div class="pull-right form-actions" data-ng-show="access.manageClients">
</div> <button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg">Regenerate Secret
</div> </button>
</div>
</form>
</div>
</div>

View file

@ -1,121 +1,123 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add OAuth Client</h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
<ol class="breadcrumb" data-ng-hide="create"> <li class="active">Settings</li>
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li> </ol>
<li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li> <ol class="breadcrumb" data-ng-show="create">
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<li class="active">Settings</li> <li class="active">Add OAuth Client</li>
</ol> </ol>
<h2 data-ng-hide="create"><span>{{oauth.name}}</span> Settings</h2> <h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add OAuth Client</h2>
<form class="form-horizontal" name="oauthForm" novalidate kc-read-only="!access.manageClients"> <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
<fieldset class="border-top"> <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Settings</h2>
<form class="form-horizontal" name="oauthForm" novalidate kc-read-only="!access.manageClients">
<div class="form-group"> <fieldset class="border-top">
<label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
<div class="col-sm-4"> <div class="form-group">
<input class="form-control" type="text" id="name" name="name" data-ng-model="oauth.name" autofocus <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
required> <div class="col-sm-4">
</div> <input class="form-control" type="text" id="name" name="name" data-ng-model="oauth.name" autofocus
</div> required>
</div>
<div class="form-group clearfix block"> </div>
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
<div class="col-sm-4"> <div class="form-group clearfix block">
<input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch /> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
</div> <div class="col-sm-4">
<span tooltip-placement="right" tooltip="Disabled oauth clients cannot obtain access tokens." class="fa fa-info-circle"></span> <input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
<div class="form-group"> <span tooltip-placement="right" tooltip="Disabled oauth clients cannot obtain access tokens." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="accessType">Access Type</label> </div>
<div class="col-sm-4"> <div class="form-group">
<div class="select-kc"> <label class="col-sm-2 control-label" for="accessType">Access Type</label>
<select id="accessType" <div class="col-sm-4">
ng-change="changeAccessType()" <div class="select-kc">
ng-model="accessType" <select id="accessType"
ng-options="aType for aType in accessTypes"> ng-change="changeAccessType()"
</select> ng-model="accessType"
</div> ng-options="aType for aType in accessTypes">
</div> </select>
<span tooltip-placement="right" tooltip="'Confidential' oauth clients require a secret to initiate login protocol. 'Public' clients do not require a secret." class="fa fa-info-circle"></span> </div>
</div> </div>
<div class="form-group clearfix block"> <span tooltip-placement="right" tooltip="'Confidential' oauth clients require a secret to initiate login protocol. 'Public' clients do not require a secret." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="directGrantsOnly">Direct Grants Only</label> </div>
<div class="col-sm-4"> <div class="form-group clearfix block">
<input ng-model="oauth.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch /> <label class="col-sm-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
</div> <div class="col-sm-4">
<span tooltip-placement="right" tooltip="When enabled, client can only obtain grants from grant REST API." class="fa fa-info-circle"></span> <input ng-model="oauth.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch />
</div> </div>
<div class="form-group" data-ng-hide="oauth.directGrantsOnly"> <span tooltip-placement="right" tooltip="When enabled, client can only obtain grants from grant REST API." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label> </div>
<div class="col-sm-6 multiple" ng-repeat="redirectUri in oauth.redirectUris"> <div class="form-group" data-ng-hide="oauth.directGrantsOnly">
<div class="input-group kc-item-deletable"> <label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}" <div class="col-sm-6 multiple" ng-repeat="redirectUri in oauth.redirectUris">
name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly /> <div class="input-group kc-item-deletable">
<span class="input-group-btn"> <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
<button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)"> name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
Delete</button> <span class="input-group-btn">
</span> <button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)">
</div> Delete</button>
</div> </span>
<div class="col-sm-6 multiple"> </div>
<div class="input-group"> </div>
<input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri" <div class="col-sm-6 multiple">
placeholder="New Redirect URI..." data-ng-model="newRedirectUri" <div class="input-group">
data-ng-class="{'input-below':oauth.redirectUris.length}" /> <input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri"
<span class="input-group-btn"> placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
<button class="btn btn-default" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button> data-ng-class="{'input-below':oauth.redirectUris.length}" />
</span> <span class="input-group-btn">
</div> <button class="btn btn-default" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
</div> </span>
<span tooltip-placement="right" tooltip="Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port." class="fa fa-info-circle"></span> </div>
</div> </div>
<div class="form-group" data-ng-hide="create"> <span tooltip-placement="right" tooltip="Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed i.e. 'http://example.com/*'. Relative path can be specified too i.e. /my/relative/path/*. Relative paths will generate a redirect URI using the request's host and port." class="fa fa-info-circle"></span>
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label> </div>
<div class="col-sm-6 multiple" ng-repeat="webOrigin in oauth.webOrigins"> <div class="form-group" data-ng-hide="create">
<div class="input-group kc-item-deletable"> <label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}" <div class="col-sm-6 multiple" ng-repeat="webOrigin in oauth.webOrigins">
name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly /> <div class="input-group kc-item-deletable">
<span class="input-group-btn"> <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
<button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)"> name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
Delete</button> <span class="input-group-btn">
</span> <button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)">
</div> Delete</button>
</div> </span>
<div class="col-sm-6 multiple"> </div>
<div class="input-group"> </div>
<input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin" <div class="col-sm-6 multiple">
placeholder="New Web Origin..." data-ng-model="newWebOrigin" <div class="input-group">
data-ng-class="{'input-below':oauth.webOrigins.length}" /> <input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin"
<span class="input-group-btn"> placeholder="New Web Origin..." data-ng-model="newWebOrigin"
<button class="btn btn-default" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button> data-ng-class="{'input-below':oauth.webOrigins.length}" />
</span> <span class="input-group-btn">
</div> <button class="btn btn-default" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
</div> </span>
<span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="fa fa-info-circle"></span> </div>
</div> </div>
</fieldset> <span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="fa fa-info-circle"></span>
</div>
<div class="pull-right form-actions" data-ng-show="create && access.manageClients"> </fieldset>
<button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <div class="pull-right form-actions" data-ng-show="create && access.manageClients">
</div> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<div class="pull-right form-actions" data-ng-show="!create && access.manageClients"> <button kc-save data-ng-show="changed">Save</button>
<button kc-reset data-ng-show="changed">Clear changes</button> </div>
<button kc-save data-ng-show="changed">Save</button> <div class="pull-right form-actions" data-ng-show="!create && access.manageClients">
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Client</button> <button kc-reset data-ng-show="changed">Clear changes</button>
</div> <button kc-save data-ng-show="changed">Save</button>
</form> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Client</button>
</div> </div>
</form>
</div>
</div> </div>

View file

@ -1,29 +1,33 @@
<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb" data-ng-hide="create">
<h2>OAuth Client Installation <span tooltip-placement="right" tooltip="Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your client applications." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<form class="form-horizontal" name="realmForm" novalidate> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">{{oauth.name}}</a></li>
<fieldset> <li class="active">Installation</li>
<div class="form-group"> </ol>
<div class="col-sm-12"> <h2>{{oauth.name}} Adapter Installation <span tooltip-placement="right" tooltip="Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your client applications." class="fa fa-info-circle"></span></h2>
<textarea class="form-control" rows="20" kc-select-action="click">{{installation | json}}</textarea> <form class="form-horizontal" name="realmForm" novalidate>
</div> <fieldset>
</div> <div class="form-group">
</fieldset> <div class="col-sm-12">
</form> <textarea class="form-control" rows="20" kc-select-action="click">{{installation | json}}</textarea>
</div>
<div class="pull-right form-actions"> </div>
<a class="btn btn-primary btn-lg" href="{{download}}" download="keycloak.json" type="submit">Download</a> </fieldset>
</div> </form>
</div> <div class="pull-right form-actions">
<a class="btn btn-primary btn-lg" href="{{download}}" download="keycloak.json" type="submit">Download</a>
</div>
</div>
</div> </div>

View file

@ -1,58 +1,58 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="">OAuth List</a></li> <li class="active"><a href="">OAuth List</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> OAuth Clients <span tooltip-placement="right" tooltip="OAuth clients are like applicatoins, but are only granted temporary access. In browser apps, users will be queried to explicitly grant access." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> OAuth Clients <span tooltip-placement="right" tooltip="OAuth clients are like applicatoins, but are only granted temporary access. In browser apps, users will be queried to explicitly grant access." class="fa fa-info-circle"></span></h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="3"> <th class="kc-table-actions" colspan="3">
<div class="search-comp clearfix"> <div class="search-comp clearfix">
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name" <input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}"> onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
<button type="submit" class="kc-icon-search" tooltip-placement="right" <button type="submit" class="kc-icon-search" tooltip-placement="right"
tooltip="Search by application name."> tooltip="Search by application name.">
Icon: search Icon: search
</button> </button>
</div> </div>
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary" href="#/create/oauth-client/{{realm.realm}}">Add Client</a> <a class="btn btn-primary" href="#/create/oauth-client/{{realm.realm}}">Add Client</a>
</div> </div>
</th> </th>
</tr> </tr>
<tr data-ng-hide="oauthClients.length == 0"> <tr data-ng-hide="oauthClients.length == 0">
<th>OAuth Client Name</th> <th>OAuth Client Name</th>
<th>Enabled</th> <th>Enabled</th>
</tr> </tr>
</thead> </thead>
<!--<tfoot data-ng-show="oauthClients && oauthClients.length > 5"> <!--<tfoot data-ng-show="oauthClients && oauthClients.length > 5">
<tr> <tr>
<td colspan="2"> <td colspan="2">
<div class="table-nav"> <div class="table-nav">
<a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#" page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
class="next">Next class="next">Next
page</a><a href="#" class="last">Last page</a> page</a><a href="#" class="last">Last page</a>
</div> </div>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
--> -->
<tbody> <tbody>
<tr ng-repeat="client in oauthClients | filter:search"> <tr ng-repeat="client in oauthClients | filter:search">
<td><a href="#/realms/{{realm.realm}}/oauth-clients/{{client.name}}">{{client.name}}</a></td> <td><a href="#/realms/{{realm.realm}}/oauth-clients/{{client.name}}">{{client.name}}</a></td>
<td>{{client.enabled}}</td> <td>{{client.enabled}}</td>
</tr> </tr>
<tr data-ng-show="oauthClients.length == 0"> <tr data-ng-show="oauthClients.length == 0">
<td>No clients available</td> <td>No clients available</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="feedback warning inline" data-ng-show="search && oauthClients.length == 0"> <div class="feedback warning inline" data-ng-show="search && oauthClients.length == 0">
<p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p> <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,32 +1,36 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
</ul> </ul>
<h2></h2> <div id="content">
<div id="content"> <ol class="breadcrumb">
<h2 data-ng-hide="create"><span>{{oauth.name}}</span> Revocation Policies</h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm"> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">{{oauth.name}}</a></li>
<fieldset class="border-top"> <li class="active">Revocation</li>
<div class="form-group"> </ol>
<label class="col-sm-2 control-label" for="notBefore">Not Before</label> <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Revocation Policies</h2>
<div class="col-sm-4"> <form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus> <fieldset class="border-top">
</div> <div class="form-group">
<span tooltip-placement="right" tooltip="Revoke any tokens issued before this date for this client." class="fa fa-info-circle"></span> <label class="col-sm-2 control-label" for="notBefore">Not Before</label>
</div> <div class="col-sm-4">
</fieldset> <input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
<div class="pull-right form-actions" data-ng-show="access.manageApplications"> </div>
<button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear <span tooltip-placement="right" tooltip="Revoke any tokens issued before this date for this client." class="fa fa-info-circle"></span>
</button> </div>
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now </fieldset>
</button> <div class="pull-right form-actions" data-ng-show="access.manageApplications">
</div> <button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear
</form> </button>
</div> <button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now
</div> </button>
</div>
</form>
</div>
</div>

View file

@ -1,128 +1,131 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">Settings</a></li> <li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li>
<li data-ng-show="!oauth.publicClient"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/credentials">Credentials</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/claims">Claims</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/scope-mappings">Scope</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/installation">Installation</a></li>
<li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}/revocation">Revocation</a></li> </ul>
</ul> <div id="content">
<h2></h2> <ol class="breadcrumb" data-ng-hide="create">
<div id="content"> <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<h2><span>{{oauth.name}}</span> Scope Mappings <span tooltip-placement="right" tooltip="Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client." class="fa fa-info-circle"></span></h2> <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.name}}">{{oauth.name}}</a></li>
<p class="subtitle"></p> <li class="active">Scope</li>
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients"> </ol>
<fieldset class="border-top"> <h2><span>{{oauth.name}}</span> Scope Mappings <span tooltip-placement="right" tooltip="Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client." class="fa fa-info-circle"></span></h2>
<div class="form-group"> <p class="subtitle"></p>
<label class="col-sm-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label> <form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
<div class="col-sm-4"> <fieldset class="border-top">
<input ng-model="oauth.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch /> <div class="form-group">
</div> <label class="col-sm-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label>
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="fa fa-info-circle"></span> <div class="col-sm-4">
</div> <input ng-model="oauth.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
</fieldset> </div>
</form> <span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="fa fa-info-circle"></span>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!oauth.fullScopeAllowed"> </div>
<fieldset> </fieldset>
<legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></legend> </form>
<div class="form-group col-sm-10"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!oauth.fullScopeAllowed">
<div class="controls changing-selectors"> <fieldset>
<div class="select-title"> <legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></legend>
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="fa fa-info-circle"></span></label> <div class="form-group col-sm-10">
<select id="available" class="form-control" multiple size="5" <div class="controls changing-selectors">
ng-multiple="true" <div class="select-title">
ng-model="selectedRealmRoles" <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in realmRoles"> <select id="available" class="form-control" multiple size="5"
</select> ng-multiple="true"
</div> ng-model="selectedRealmRoles"
<div class="middle-buttons kc-vertical"> ng-options="r.name for r in realmRoles">
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Assign role" tooltip-placement="right"> </select>
<span class="kc-icon-arrow-right">Assign role</span> </div>
</button> <div class="middle-buttons kc-vertical">
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-left">Unassign role</span> <span class="kc-icon-arrow-right">Assign role</span>
</button> </button>
</div> <button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Unassign role" tooltip-placement="left">
<div class="select-title"> <span class="kc-icon-arrow-left">Unassign role</span>
<label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></label> </button>
<select id="assigned" class="form-control" multiple size=5 </div>
ng-multiple="true" <div class="select-title">
ng-model="selectedRealmMappings" <label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in realmMappings"> <select id="assigned" class="form-control" multiple size=5
</select> ng-multiple="true"
</div> ng-model="selectedRealmMappings"
<div class="middle-buttons"> ng-options="r.name for r in realmMappings">
- </select>
</div> </div>
<div class="select-title"> <div class="middle-buttons">
<label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned realm level roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label> -
<select id="realm-composite" class="form-control" multiple size=5 </div>
ng-disabled="true" <div class="select-title">
ng-model="dummymodel" <label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned realm level roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in realmComposite"> <select id="realm-composite" class="form-control" multiple size=5
</select> ng-disabled="true"
</div> ng-model="dummymodel"
</div> ng-options="r.name for r in realmComposite">
</div> </select>
</fieldset> </div>
</div>
<fieldset ng-show="applications.length > 0"> </div>
<legend><span class="text">Application Roles</span> </legend> </fieldset>
<div class="form-group input-select">
<label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="fa fa-info-circle"></span></label> <fieldset ng-show="applications.length > 0">
<div class="col-sm-4"> <legend><span class="text">Application Roles</span> </legend>
<div class="input-group"> <div class="form-group input-select">
<div class="select-kc"> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="fa fa-info-circle"></span></label>
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications)" ng-disabled="false"> <div class="col-sm-4">
<option value="" selected> Select an Application </option> <div class="input-group">
</select> <div class="select-kc">
</div> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications)" ng-disabled="false">
</div> <option value="" selected> Select an Application </option>
</div> </select>
</div>
</div> </div>
<div class="form-group" data-ng-show="targetApp"> </div>
<div class="controls changing-selectors col-sm-10">
<div class="select-title"> </div>
<label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="fa fa-info-circle"></span></label> <div class="form-group" data-ng-show="targetApp">
<select id="app-available" class="form-control" multiple size="5" <div class="controls changing-selectors col-sm-10">
ng-multiple="true" <div class="select-title">
ng-model="selectedApplicationRoles" <label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in applicationRoles"> <select id="app-available" class="form-control" multiple size="5"
</select> ng-multiple="true"
</div> ng-model="selectedApplicationRoles"
<div class="middle-buttons kc-vertical"> ng-options="r.name for r in applicationRoles">
<button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right"> </select>
<span class="kc-icon-arrow-right">Move right</span> </div>
</button> <div class="middle-buttons kc-vertical">
<button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-left">Move left</span> <span class="kc-icon-arrow-right">Move right</span>
</button> </button>
</div> <button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left">
<div class="select-title"> <span class="kc-icon-arrow-left">Move left</span>
<label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="fa fa-info-circle"></span></label> </button>
<select id="app-assigned" class="form-control" multiple size=5 </div>
ng-multiple="true" <div class="select-title">
ng-model="selectedApplicationMappings" <label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in applicationMappings"> <select id="app-assigned" class="form-control" multiple size=5
</select> ng-multiple="true"
</div> ng-model="selectedApplicationMappings"
<div class="middle-buttons"> ng-options="r.name for r in applicationMappings">
- </select>
</div> </div>
<div class="select-title"> <div class="middle-buttons">
<label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned application roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label> -
<select id="app-composite" class="form-control" multiple size=5 </div>
ng-disabled="true" <div class="select-title">
ng-model="dummymodel" <label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned application roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label>
ng-options="r.name for r in applicationComposite"> <select id="app-composite" class="form-control" multiple size=5
</select> ng-disabled="true"
</div> ng-model="dummymodel"
</div> ng-options="r.name for r in applicationComposite">
</div> </select>
</fieldset> </div>
</form> </div>
</div> </div>
</fieldset>
</form>
</div>
</div> </div>

View file

@ -1,65 +1,65 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li data-ng-class="(path[2] == 'audit') && 'active'"><a href="#/realms/{{realm.realm}}/audit">View</a></li> <li data-ng-class="(path[2] == 'audit') && 'active'"><a href="#/realms/{{realm.realm}}/audit">View</a></li>
<li data-ng-class="(path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit-settings">Config</a></li> <li data-ng-class="(path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit-settings">Config</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Audit Config</h2> <h2><span>{{realm.realm}}</span> Audit Config</h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageAudit"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageAudit">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group" data-ng-show="access.manageAudit"> <div class="form-group" data-ng-show="access.manageAudit">
<label class="col-sm-2 control-label" for="password">Clear Audit</label> <label class="col-sm-2 control-label" for="password">Clear Audit</label>
<div class="col-sm-4"> <div class="col-sm-4">
<button class="btn btn-danger" type="submit" data-ng-click="clearAudit()" >Clear Audit</button> <button class="btn btn-danger" type="submit" data-ng-click="clearAudit()" >Clear Audit</button>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="enabled">Enabled</label> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="auditConfig.auditEnabled" name="enabled" id="enabled" onoffswitch /> <input ng-model="auditConfig.auditEnabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group input-select"> <div class="form-group input-select">
<label class="col-sm-2 control-label" for="expiration">Expiration</label> <label class="col-sm-2 control-label" for="expiration">Expiration</label>
<div class="col-sm-10"> <div class="col-sm-10">
<div class="row"> <div class="row">
<div class="col-sm-2"> <div class="col-sm-2">
<input class="form-control" type="number" <input class="form-control" type="number"
data-ng-model="auditConfig.auditExpiration" data-ng-model="auditConfig.auditExpiration"
id="expiration" name="expiration"/> id="expiration" name="expiration"/>
</div> </div>
<div class="col-sm-2 select-kc"> <div class="col-sm-2 select-kc">
<select name="expirationUnit" data-ng-model="auditConfig.expirationUnit" > <select name="expirationUnit" data-ng-model="auditConfig.expirationUnit" >
<option>Minutes</option> <option>Minutes</option>
<option>Hours</option> <option>Hours</option>
<option>Days</option> <option>Days</option>
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="auditListeners" class="control-label">Audit Listeners</label> <label class="col-sm-2 control-label" for="auditListeners" class="control-label">Audit Listeners</label>
<div class="col-sm-4"> <div class="col-sm-4">
<select ui-select2 ng-model="auditConfig.auditListeners" data-placeholder="Select an action..." multiple> <select ui-select2 ng-model="auditConfig.auditListeners" data-placeholder="Select an action..." multiple>
<option ng-repeat="listener in auditListeners" value="{{listener}}">{{listener}}</option> <option ng-repeat="listener in auditListeners" value="{{listener}}">{{listener}}</option>
</select> </select>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageAudit"> <div class="pull-right form-actions" data-ng-show="access.manageAudit">
<button data-kc-reset data-ng-show="changed">Clear changes</button> <button data-kc-reset data-ng-show="changed">Clear changes</button>
<button data-kc-save data-ng-show="changed">Save</button> <button data-kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,102 +1,102 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li data-ng-class="(path[2] == 'audit') && 'active'"><a href="#/realms/{{realm.realm}}/audit">View</a></li> <li data-ng-class="(path[2] == 'audit') && 'active'"><a href="#/realms/{{realm.realm}}/audit">View</a></li>
<li data-ng-class="(path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit-settings">Config</a></li> <li data-ng-class="(path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit-settings">Config</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Audit Log</h2> <h2><span>{{realm.realm}}</span> Audit Log</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="4"> <th class="kc-table-actions" colspan="4">
<div class="pull-right"> <div class="pull-right">
<select data-ng-model="query.max" data-ng-click="update()" class="btn btn-default"> <select data-ng-model="query.max" data-ng-click="update()" class="btn btn-default">
<option>5</option> <option>5</option>
<option>10</option> <option>10</option>
<option>50</option> <option>50</option>
<option>100</option> <option>100</option>
</select> </select>
<button class="btn btn-default" data-ng-click="filter = !filter"> <button class="btn btn-default" data-ng-click="filter = !filter">
<span class="glyphicon glyphicon-plus" data-ng-show="!filter"></span> <span class="glyphicon glyphicon-plus" data-ng-show="!filter"></span>
<span class="glyphicon glyphicon-minus" data-ng-show="filter"></span> <span class="glyphicon glyphicon-minus" data-ng-show="filter"></span>
Filter Filter
</button> </button>
<button class="btn btn-default btn-primary" data-ng-click="update()">Update</button> <button class="btn btn-default btn-primary" data-ng-click="update()">Update</button>
</div> </div>
<form class="form-horizontal"> <form class="form-horizontal">
<div class="form-group" data-ng-show="filter"> <div class="form-group" data-ng-show="filter">
<label class="col-sm-2 control-label" for="event">Event</label> <label class="col-sm-2 control-label" for="event">Event</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="event" name="event" data-ng-model="query.event"> <input class="form-control" type="text" id="event" name="event" data-ng-model="query.event">
</div> </div>
</div> </div>
<div class="form-group" data-ng-show="filter"> <div class="form-group" data-ng-show="filter">
<label class="col-sm-2 control-label" for="client">Client</label> <label class="col-sm-2 control-label" for="client">Client</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="client" name="client" data-ng-model="query.client"> <input class="form-control" type="text" id="client" name="client" data-ng-model="query.client">
</div> </div>
</div> </div>
<div class="form-group" data-ng-show="filter"> <div class="form-group" data-ng-show="filter">
<label class="col-sm-2 control-label" for="user">User</label> <label class="col-sm-2 control-label" for="user">User</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="user" name="user" data-ng-model="query.user"> <input class="form-control" type="text" id="user" name="user" data-ng-model="query.user">
</div> </div>
</div> </div>
</form> </form>
</th> </th>
</tr> </tr>
<tr> <tr>
<th width="100px">Time</th> <th width="100px">Time</th>
<th width="180px">Event</th> <th width="180px">Event</th>
<th>Details</th> <th>Details</th>
</tr> </tr>
</thead> </thead>
<tfoot> <tfoot>
<tr> <tr>
<td colspan="7"> <td colspan="7">
<div class="table-nav"> <div class="table-nav">
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button> <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="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
<button data-ng-click="nextPage()" class="next" ng-disabled="events.length < query.max">Next page</button> <button data-ng-click="nextPage()" class="next" ng-disabled="events.length < query.max">Next page</button>
</div> </div>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
<tbody> <tbody>
<tr ng-repeat="event in events"> <tr ng-repeat="event in events">
<td>{{event.time|date:'shortDate'}}<br>{{event.time|date:'mediumTime'}}</td> <td>{{event.time|date:'shortDate'}}<br>{{event.time|date:'mediumTime'}}</td>
<td data-ng-class="event.error && 'audit-error' || 'audit-success'">{{event.event}}</td> <td data-ng-class="event.error && 'audit-error' || 'audit-success'">{{event.event}}</td>
<td> <td>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tr><td width="100px">Client</td><td>{{event.clientId}}</td></tr> <tr><td width="100px">Client</td><td>{{event.clientId}}</td></tr>
<tr><td>User</td><td>{{event.userId}}</td></tr> <tr><td>User</td><td>{{event.userId}}</td></tr>
<tr><td>IP Address</td><td>{{event.ipAddress}}</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 data-ng-show="event.error"><td>Error</td><td>{{event.error}}</td></tr>
<tr> <tr>
<td>Details</td> <td>Details</td>
<td> <td>
<button type="button" class="btn btn-default btn-xs" ng-click="event.collapse = !event.collapse"> <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> <span class="glyphicon glyphicon-plus" data-ng-show="!event.collapse"></span>
<span class="glyphicon glyphicon-minus" data-ng-show="event.collapse"></span> <span class="glyphicon glyphicon-minus" data-ng-show="event.collapse"></span>
</button> </button>
<table data-ng-show="event.collapse" class="table table-striped table-bordered"> <table data-ng-show="event.collapse" class="table table-striped table-bordered">
<tr ng-repeat="(key, value) in event.details"> <tr ng-repeat="(key, value) in event.details">
<td>{{key}}</td> <td>{{key}}</td>
<td>{{value}}</td> <td>{{value}}</td>
</tr> </tr>
</table> </table>
</td> </td>
</tr> </tr>
</table> </table>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,36 +1,36 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation> <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<div data-ng-show="access.viewRealm"> <div data-ng-show="access.viewRealm">
<h2><span>{{realm.realm}}</span> Cache Settings</h2> <h2><span>{{realm.realm}}</span> Cache Settings</h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="realmCacheEnabled">Realm Cache Enabled</label> <label class="col-sm-2 control-label" for="realmCacheEnabled">Realm Cache Enabled</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.realmCacheEnabled" name="realmCacheEnabled" id="realmCacheEnabled" onoffswitch /> <input ng-model="realm.realmCacheEnabled" name="realmCacheEnabled" id="realmCacheEnabled" onoffswitch />
</div> </div>
<span tooltip-placement="right" tooltip="Enable/disable cache for realm, application, oauth client, and role data." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Enable/disable cache for realm, application, oauth client, and role data." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="userCacheEnabled">User Cache Enabled</label> <label class="col-sm-2 control-label" for="userCacheEnabled">User Cache Enabled</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.userCacheEnabled" name="userCacheEnabled" id="userCacheEnabled" onoffswitch /> <input ng-model="realm.userCacheEnabled" name="userCacheEnabled" id="userCacheEnabled" onoffswitch />
</div> </div>
<span tooltip-placement="right" tooltip="Enable/disable user and user role mapping cache." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Enable/disable user and user role mapping cache." class="fa fa-info-circle"></span>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageRealm"> <div class="pull-right form-actions" data-ng-show="access.manageRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
<div data-ng-hide="access.viewRealm"> <div data-ng-hide="access.viewRealm">
<h2 ><span>{{realm.realm}}</span></h2> <h2 ><span>{{realm.realm}}</span></h2>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,54 +1,54 @@
<div class="bs-sidebar col-sm-3 "></div> <div class="bs-sidebar col-sm-3 "></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<div id="content"> <div id="content">
<h2 class="margin-top pull-left">Add Realm</h2> <h2 class="margin-top pull-left">Add Realm</h2>
<p class="subtitle margin-top"><span class="required">*</span> Required fields</p> <p class="subtitle margin-top"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="realmForm" novalidate> <form class="form-horizontal" name="realmForm" novalidate>
<fieldset> <fieldset>
<legend><span class="text">Import Realm</span></legend> <legend><span class="text">Import Realm</span></legend>
<div class="form-group"> <div class="form-group">
<label for="name" class="col-sm-2 control-label">Upload JSON File </label> <label for="name" class="col-sm-2 control-label">Upload JSON File </label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0"> <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 JSON File...</a> <a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a JSON File...</a>
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)"> <input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
</div> </div>
<span class="kc-uploaded-file" data-ng-show="files.length > 0"> <span class="kc-uploaded-file" data-ng-show="files.length > 0">
{{files[0].name}} {{files[0].name}}
</span> </span>
</div> </div>
</div> </div>
<div class="pull-right form-actions" data-ng-show="files.length > 0"> <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="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="uploadFile()" class="btn btn-lg btn-primary">Upload</button>
</div> </div>
</fieldset> </fieldset>
</form> </form>
<form class="form-horizontal" name="realmForm" novalidate> <form class="form-horizontal" name="realmForm" novalidate>
<fieldset> <fieldset>
<legend><span class="text">Create Realm</span></legend> <legend><span class="text">Create Realm</span></legend>
<div class="form-group"> <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 <span class="required">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired> <input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired>
</div> </div>
</div> </div>
<div class="form-group"> <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</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch /> <input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions"> <div class="pull-right form-actions">
<button kc-cancel data-ng-click="cancel()">Cancel</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,89 +1,89 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li> <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 class="active"><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Default Roles <span tooltip-placement="right" tooltip="Role mappings to assign to newly created users." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> Default Roles <span tooltip-placement="right" tooltip="Role mappings to assign to newly created users." class="fa fa-info-circle"></span></h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset> <fieldset>
<legend><span class="text">Realm Default Roles</span> </legend> <legend><span class="text">Realm Default Roles</span> </legend>
<div class="form-group"> <div class="form-group">
<div class="controls changing-selectors col-sm-10"> <div class="controls changing-selectors col-sm-10">
<div class="select-title"> <div class="select-title">
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned." class="fa fa-info-circle"></span></label> <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned." class="fa fa-info-circle"></span></label>
<select id="available" class="form-control" multiple size="5" <select id="available" class="form-control" multiple size="5"
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmRoles" ng-model="selectedRealmRoles"
ng-options="r for r in availableRealmRoles"> ng-options="r for r in availableRealmRoles">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
<button class="btn btn-default" type="submit" ng-click="addRealmDefaultRole()" tooltip="Assign role" tooltip-placement="right"> <button class="btn btn-default" type="submit" ng-click="addRealmDefaultRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-right"><span>Move right</span></span> <span class="kc-icon-arrow-right"><span>Move right</span></span>
</button> </button>
<button class="btn btn-default" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Unassign role" tooltip-placement="left">
<span class="kc-icon-arrow-left"><span>Move left</span></span> <span class="kc-icon-arrow-left"><span>Move left</span></span>
</button> </button>
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="assigned">Realm Default Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to new users." class="fa fa-info-circle"></span></label> <label class="control-label" for="assigned">Realm Default Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to new users." class="fa fa-info-circle"></span></label>
<select id="assigned" class="form-control" multiple size=5 <select id="assigned" class="form-control" multiple size=5
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmDefRoles" ng-model="selectedRealmDefRoles"
ng-options="r for r in realm.defaultRoles"> ng-options="r for r in realm.defaultRoles">
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset ng-show="applications.length > 0"> <fieldset ng-show="applications.length > 0">
<legend><span class="text">Application Default Roles</span> </legend> <legend><span class="text">Application Default Roles</span> </legend>
<div class="form-group input-select"> <div class="form-group input-select">
<label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="top" tooltip="Select an application to view/modify assigned default roles." class="fa fa-info-circle"></span></label> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="top" tooltip="Select an application to view/modify assigned default roles." class="fa fa-info-circle"></span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="input-group"> <div class="input-group">
<div class="select-kc"> <div class="select-kc">
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications" ng-disabled="false"> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications" ng-disabled="false">
<option value="" selected> Select an Application...</option> <option value="" selected> Select an Application...</option>
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-show="application"> <div class="form-group" ng-show="application">
<div class="controls changing-selectors col-sm-10"> <div class="controls changing-selectors col-sm-10">
<div class="select-title"> <div class="select-title">
<label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that are assignable as a default." class="fa fa-info-circle"></span></label> <label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that are assignable as a default." class="fa fa-info-circle"></span></label>
<select id="available-app" class="form-control" multiple size="5" <select id="available-app" class="form-control" multiple size="5"
ng-multiple="true" ng-multiple="true"
ng-model="selectedAppRoles" ng-model="selectedAppRoles"
ng-options="r for r in availableAppRoles"> ng-options="r for r in availableAppRoles">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
<button class="btn btn-default" type="submit" ng-click="addAppDefaultRole()" tooltip="Assign role" tooltip-placement="right"> <button class="btn btn-default" type="submit" ng-click="addAppDefaultRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-right"><span>Move right</span></span> <span class="kc-icon-arrow-right"><span>Move right</span></span>
</button> </button>
<button class="btn btn-default" type="submit" ng-click="rmAppDefaultRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="rmAppDefaultRole()" tooltip="Unassign role" tooltip-placement="left">
<span class="kc-icon-arrow-left"><span>Move left</span></span> <span class="kc-icon-arrow-left"><span>Move left</span></span>
</button> </button>
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="assigned-app">Application Default Roles <span tooltip-placement="right" tooltip="Roles from this application assigned as a default role." class="fa fa-info-circle"></span></label> <label class="control-label" for="assigned-app">Application Default Roles <span tooltip-placement="right" tooltip="Roles from this application assigned as a default role." class="fa fa-info-circle"></span></label>
<select id="assigned-app" class="form-control" multiple size=5 <select id="assigned-app" class="form-control" multiple size=5
ng-multiple="true" ng-multiple="true"
ng-model="selectedAppDefRoles" ng-model="selectedAppDefRoles"
ng-options="r for r in application.defaultRoles"> ng-options="r for r in application.defaultRoles">
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</fieldset> </fieldset>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,43 +1,43 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation> <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<div data-ng-show="access.viewRealm"> <div data-ng-show="access.viewRealm">
<h2 class="pull-left" data-ng-show="createRealm">Add Realm</h2> <h2 class="pull-left" data-ng-show="createRealm">Add Realm</h2>
<h2 data-ng-hide="createRealm"><span>{{realm.realm}}</span> General Settings</h2> <h2 data-ng-hide="createRealm"><span>{{realm.realm}}</span> General Settings</h2>
<p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p> <p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label> <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocus required> <input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocus required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="enabled">Enabled</label> <label class="col-sm-2 control-label" for="enabled">Enabled</label>
<span tooltip="Users and applications can only access a realm if it's enabled" class="fa fa-info-circle"></span> <span tooltip="Users and applications can only access a realm if it's enabled" class="fa fa-info-circle"></span>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch /> <input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="createRealm && access.manageRealm"> <div class="pull-right form-actions" data-ng-show="createRealm && access.manageRealm">
<button kc-cancel data-ng-click="cancel()">Cancel</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<div class="pull-right form-actions" data-ng-show="!createRealm && access.manageRealm"> <div class="pull-right form-actions" data-ng-show="!createRealm && access.manageRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Realm</button> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Realm</button>
</div> </div>
</form> </form>
</div> </div>
<div data-ng-hide="access.viewRealm"> <div data-ng-hide="access.viewRealm">
<h2 ><span>{{realm.realm}}</span></h2> <h2 ><span>{{realm.realm}}</span></h2>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,116 +1,116 @@
<h2 class="pull-left" data-ng-show="createRealm">Add Realm</h2> <h2 class="pull-left" data-ng-show="createRealm">Add Realm</h2>
<h2 data-ng-hide="createRealm"><span>{{realm.realm}}</span> General Settings</h2> <h2 data-ng-hide="createRealm"><span>{{realm.realm}}</span> General Settings</h2>
<p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p> <p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="realmForm" novalidate> <form class="form-horizontal" name="realmForm" novalidate>
<fieldset> <fieldset>
<legend uncollapsed class="aj-collapse open"><span class="text">Required Settings</span></legend> <legend uncollapsed class="aj-collapse open"><span class="text">Required Settings</span></legend>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label> <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocus required> <input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocus required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label control-label" for="enabled">Enabled</label> <label class="col-sm-2 control-label control-label" for="enabled">Enabled</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch /> <input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend uncollapsed><span class="text">Login Options</span></legend> <legend uncollapsed><span class="text">Login Options</span></legend>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label for="social" class="col-sm-2 control-label">Social login</label> <label for="social" class="col-sm-2 control-label">Social login</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.social" name="social" id="social" onoffswitch /> <input ng-model="realm.social" name="social" id="social" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix block" data-ng-show="realm.social"> <div class="form-group clearfix block" data-ng-show="realm.social">
<label for="updateProfileOnInitialSocialLogin" class="col-sm-2 control-label">Update profile on first social login</label> <label for="updateProfileOnInitialSocialLogin" class="col-sm-2 control-label">Update profile on first social login</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.updateProfileOnInitialSocialLogin" name="updateProfileOnInitialSocialLogin" id="updateProfileOnInitialSocialLogin" onoffswitch /> <input ng-model="realm.updateProfileOnInitialSocialLogin" name="updateProfileOnInitialSocialLogin" id="updateProfileOnInitialSocialLogin" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label for="registrationAllowed" class="col-sm-2 control-label">User registration</label> <label for="registrationAllowed" class="col-sm-2 control-label">User registration</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.registrationAllowed" name="registrationAllowed" id="registrationAllowed" onoffswitch /> <input ng-model="realm.registrationAllowed" name="registrationAllowed" id="registrationAllowed" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label for="resetPasswordAllowed" class="col-sm-2 control-label">Reset password</label> <label for="resetPasswordAllowed" class="col-sm-2 control-label">Reset password</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.resetPasswordAllowed" name="resetPasswordAllowed" id="resetPasswordAllowed" onoffswitch /> <input ng-model="realm.resetPasswordAllowed" name="resetPasswordAllowed" id="resetPasswordAllowed" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label for="verifyEmail" class="col-sm-2 control-label">Verify email</label> <label for="verifyEmail" class="col-sm-2 control-label">Verify email</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.verifyEmail" name="verifyEmail" id="verifyEmail" onoffswitch /> <input ng-model="realm.verifyEmail" name="verifyEmail" id="verifyEmail" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label for="requireSsl" class="col-sm-2 control-label">Require SSL</label> <label for="requireSsl" class="col-sm-2 control-label">Require SSL</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.requireSsl" name="requireSsl" id="requireSsl" onoffswitch /> <input ng-model="realm.requireSsl" name="requireSsl" id="requireSsl" onoffswitch />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend uncollapsed><span class="text">Optional Settings</span></legend> <legend uncollapsed><span class="text">Optional Settings</span></legend>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-2 control-label" for="loginTheme">Login Theme</label> <label class="col-sm-2 control-label" for="loginTheme">Login Theme</label>
<!--<select id="loginTheme" name="loginTheme" ng-model="realm.loginTheme" ng-options="t for t in serverInfo.themes.login"></select>--> <!--<select id="loginTheme" name="loginTheme" ng-model="realm.loginTheme" ng-options="t for t in serverInfo.themes.login"></select>-->
<div class="col-sm-4"> <div class="col-sm-4">
<div class="dropdown"> <div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
{{realm.loginTheme}} {{realm.loginTheme}}
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation" data-ng-repeat="t in serverInfo.themes.login"> <li role="presentation" data-ng-repeat="t in serverInfo.themes.login">
<a role="menuitem" tabindex="-1" href="" data-ng-click="realm.loginTheme = t">{{t}}</a> <a role="menuitem" tabindex="-1" href="" data-ng-click="realm.loginTheme = t">{{t}}</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="accountTheme">Account Theme</label> <label class="col-sm-2 control-label" for="accountTheme">Account Theme</label>
<!--<select id="accountTheme" name="accountTheme" ng-model="realm.accountTheme" ng-options="t for t in serverInfo.themes.account"></select>--> <!--<select id="accountTheme" name="accountTheme" ng-model="realm.accountTheme" ng-options="t for t in serverInfo.themes.account"></select>-->
<div class="col-sm-4"> <div class="col-sm-4">
<div class="dropdown"> <div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
{{realm.accountTheme}} {{realm.accountTheme}}
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation" data-ng-repeat="t in serverInfo.themes.account"> <li role="presentation" data-ng-repeat="t in serverInfo.themes.account">
<a role="menuitem" tabindex="-1" href="" data-ng-click="realm.accountTheme = t">{{t}}</a> <a role="menuitem" tabindex="-1" href="" data-ng-click="realm.accountTheme = t">{{t}}</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="accountTheme2">Account Theme2</label> <label class="col-sm-2 control-label" for="accountTheme2">Account Theme2</label>
<!--<select id="accountTheme" name="accountTheme" ng-model="realm.accountTheme" ng-options="t for t in serverInfo.themes.account"></select>--> <!--<select id="accountTheme" name="accountTheme" ng-model="realm.accountTheme" ng-options="t for t in serverInfo.themes.account"></select>-->
<div class="col-sm-4"> <div class="col-sm-4">
<kc-select data-kc-model="realm.accountTheme" data-kc-options="serverInfo.themes.account"/> <kc-select data-kc-model="realm.accountTheme" data-kc-options="serverInfo.themes.account"/>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="createRealm"> <div class="pull-right form-actions" data-ng-show="createRealm">
<button kc-cancel data-ng-click="cancel()">Cancel</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<div class="pull-right form-actions" data-ng-show="!createRealm"> <div class="pull-right form-actions" data-ng-show="!createRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div> </div>
</form> </form>
</div> </div>

View file

@ -1,23 +1,23 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<data-kc-navigation data-kc-current="keys" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation> <data-kc-navigation data-kc-current="keys" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Realm Public Key <span tooltip-placement="right" tooltip="Realm's public key. This is used to verify any signed tokens or documents created by the realm." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> Realm Public Key <span tooltip-placement="right" tooltip="Realm's public key. This is used to verify any signed tokens or documents created by the realm." class="fa fa-info-circle"></span></h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="publicKey">Public key</label> <label class="col-sm-2 control-label" for="publicKey">Public key</label>
<div class="col-sm-10"> <div class="col-sm-10">
<textarea type="text" id="publicKey" name="publicKey" class="form-control" rows="5" <textarea type="text" id="publicKey" name="publicKey" class="form-control" rows="5"
kc-select-action="click" readonly>{{realm.publicKey}}</textarea> kc-select-action="click" readonly>{{realm.publicKey}}</textarea>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageRealm"> <div class="pull-right form-actions" data-ng-show="access.manageRealm">
<button class="btn btn-primary btn-lg" type="submit" data-ng-click="generate()">Generate new keys</button> <button class="btn btn-primary btn-lg" type="submit" data-ng-click="generate()">Generate new keys</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,25 +1,25 @@
<div class="bs-sidebar col-sm-3 "> <div class="bs-sidebar col-sm-3 ">
<ul data-ng-hide="createRealm"> <ul data-ng-hide="createRealm">
<li class="active"><a href="#/realms">Realms</a></li> <li class="active"><a href="#/realms">Realms</a></li>
</ul> </ul>
</div> </div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="">Choose realm to manage</a></li> <li class="active"><a href="">Choose realm to manage</a></li>
</ul> </ul>
<div id="content"> <div id="content">
<h2 class="margin-top">Realms</h2> <h2 class="margin-top">Realms</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>Realm</th> <th>Realm</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr data-ng-repeat="r in realms"> <tr data-ng-repeat="r in realms">
<td><a href="#/realms/{{r.realm}}">{{r.realm}}</a></td> <td><a href="#/realms/{{r.realm}}">{{r.realm}}</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,19 +1,19 @@
<ul data-ng-hide="createRealm"> <ul data-ng-hide="createRealm">
<li data-ng-show="access.viewRealm" data-ng-class="((!path[2] || <li data-ng-show="access.viewRealm" data-ng-class="((!path[2] ||
path[2] == 'social-settings' || path[2] == 'required-credentials' path[2] == 'social-settings' || path[2] == 'required-credentials'
|| path[2] == 'login-settings' || path[2] == 'login-settings'
|| path[2] == 'theme-settings' || path[2] == 'theme-settings'
|| path[2] == 'cache-settings' || path[2] == 'cache-settings'
|| path[2] == 'keys-settings' || path[2] == 'smtp-settings' || path[2] == 'ldap-settings' || path[2] == 'auth-settings') && path[3] != 'applications') && 'active'"> || path[2] == 'keys-settings' || path[2] == 'smtp-settings' || path[2] == 'ldap-settings' || path[2] == 'auth-settings') && path[3] != 'applications') && 'active'">
<a href="#/realms/{{realm.realm}}">Settings</a> <a href="#/realms/{{realm.realm}}">Settings</a>
</li> </li>
<li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users">Users</a> <li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users">Users</a>
</li> </li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || (path[1] == 'role' & path[3] != 'applications') && 'active'"><a href="#/realms/{{realm.realm}}/roles">Roles</a> <li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || (path[1] == 'role' & path[3] != 'applications') && 'active'"><a href="#/realms/{{realm.realm}}/roles">Roles</a>
</li> </li>
<li data-ng-show="access.viewApplications" data-ng-class="(path[2] == 'applications' || path[1] == 'application' || path[3] == 'applications') && 'active'"><a href="#/realms/{{realm.realm}}/applications">Applications</a></li> <li data-ng-show="access.viewApplications" data-ng-class="(path[2] == 'applications' || path[1] == 'application' || path[3] == 'applications') && 'active'"><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'oauth-clients' || path[1] == 'oauth-client') && 'active'"><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li> <li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'oauth-clients' || path[1] == 'oauth-client') && 'active'"><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions' || path[2] == 'token-settings') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm">Sessions and Tokens</a></li> <li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions' || path[2] == 'token-settings') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm">Sessions and Tokens</a></li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'defense') && 'active'"><a href="#/realms/{{realm.realm}}/defense/headers">Security Defenses</a></li> <li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'defense') && 'active'"><a href="#/realms/{{realm.realm}}/defense/headers">Security Defenses</a></li>
<li data-ng-show="access.viewAudit" data-ng-class="(path[2] == 'audit' || path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit">Audit</a></li> <li data-ng-show="access.viewAudit" data-ng-class="(path[2] == 'audit' || path[2] == 'audit-settings') && 'active'"><a href="#/realms/{{realm.realm}}/audit">Audit</a></li>
</ul> </ul>

View file

@ -1,70 +1,70 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<data-kc-navigation data-kc-current="email" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation> <data-kc-navigation data-kc-current="email" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 class="pull-left"><span>{{realm.realm}}</span> Email Settings <span tooltip-placement="right" tooltip="Email server to use when the server needs to send an email, i.e. forgot password, credential reset, etc." class="fa fa-info-circle"></span></h2> <h2 class="pull-left"><span>{{realm.realm}}</span> Email Settings <span tooltip-placement="right" tooltip="Email server to use when the server needs to send an email, i.e. forgot password, credential reset, etc." class="fa fa-info-circle"></span></h2>
<p class="subtitle"><span class="required">*</span> Required fields</p> <p class="subtitle"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset> <fieldset>
<legend><span class="text">Required Settings</span></legend> <legend><span class="text">Required Settings</span></legend>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpHost">Host <span class="required">*</span></label> <label class="col-sm-2 control-label" for="smtpHost">Host <span class="required">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="smtpHost" type="text" ng-model="realm.smtpServer.host" placeholder="SMTP Host" required> <input class="form-control" id="smtpHost" type="text" ng-model="realm.smtpServer.host" placeholder="SMTP Host" required>
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpPort">Port <span class="required">*</span></label> <label class="col-sm-2 control-label" for="smtpPort">Port <span class="required">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="smtpPort" type="number" ng-model="realm.smtpServer.port" placeholder="SMTP Port (defaults to 25)" required> <input class="form-control" id="smtpPort" type="number" ng-model="realm.smtpServer.port" placeholder="SMTP Port (defaults to 25)" required>
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpFrom">From <span class="required">*</span></label> <label class="col-sm-2 control-label" for="smtpFrom">From <span class="required">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="smtpFrom" type="email" ng-model="realm.smtpServer.from" placeholder="Sender Email Address" required> <input class="form-control" id="smtpFrom" type="email" ng-model="realm.smtpServer.from" placeholder="Sender Email Address" required>
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpSSL">Enable SSL</label> <label class="col-sm-2 control-label" for="smtpSSL">Enable SSL</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.smtpServer.ssl" name="smtpSSL" id="smtpSSL" onoffswitch /> <input ng-model="realm.smtpServer.ssl" name="smtpSSL" id="smtpSSL" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpStartTLS">Enable StartTLS</label> <label class="col-sm-2 control-label" for="smtpStartTLS">Enable StartTLS</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.smtpServer.starttls" name="smtpStartTLS" id="smtpStartTLS" onoffswitch /> <input ng-model="realm.smtpServer.starttls" name="smtpStartTLS" id="smtpStartTLS" onoffswitch />
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend><span class="text">Authentication</span></legend> <legend><span class="text">Authentication</span></legend>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="smtpAuth">Enable Authentication</label> <label class="col-sm-2 control-label" for="smtpAuth">Enable Authentication</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="realm.smtpServer.auth" name="smtpAuth" id="smtpAuth" onoffswitch /> <input ng-model="realm.smtpServer.auth" name="smtpAuth" id="smtpAuth" onoffswitch />
</div> </div>
</div> </div>
<div class="form-group clearfix" data-ng-show="realm.smtpServer.auth"> <div class="form-group clearfix" data-ng-show="realm.smtpServer.auth">
<label class="col-sm-2 control-label" for="smtpUsername">Username <span class="required" ng-show="realm.smtpServer.auth">*</span></label> <label class="col-sm-2 control-label" for="smtpUsername">Username <span class="required" ng-show="realm.smtpServer.auth">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="smtpUsername" type="text" ng-model="realm.smtpServer.user" placeholder="Login Username" ng-disabled="!realm.smtpServer.auth" ng-required="realm.smtpServer.auth"> <input class="form-control" id="smtpUsername" type="text" ng-model="realm.smtpServer.user" placeholder="Login Username" ng-disabled="!realm.smtpServer.auth" ng-required="realm.smtpServer.auth">
</div> </div>
</div> </div>
<div class="form-group clearfix" data-ng-show="realm.smtpServer.auth"> <div class="form-group clearfix" data-ng-show="realm.smtpServer.auth">
<label class="col-sm-2 control-label" for="smtpPassword">Password <span class="required" ng-show="realm.smtpServer.auth">*</span></label> <label class="col-sm-2 control-label" for="smtpPassword">Password <span class="required" ng-show="realm.smtpServer.auth">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" id="smtpPassword" type="password" ng-model="realm.smtpServer.password" placeholder="Login Password" ng-disabled="!realm.smtpServer.auth" ng-required="realm.smtpServer.auth"> <input class="form-control" id="smtpPassword" type="password" ng-model="realm.smtpServer.password" placeholder="Login Password" ng-disabled="!realm.smtpServer.auth" ng-required="realm.smtpServer.auth">
</div> </div>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageRealm"> <div class="pull-right form-actions" data-ng-show="access.manageRealm">
<button data-kc-reset data-ng-show="changed">Clear changes</button> <button data-kc-reset data-ng-show="changed">Clear changes</button>
<button data-kc-save data-ng-show="changed">Save</button> <button data-kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,100 +1,100 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation> <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 class="pull-left"><span>{{realm.realm}}</span> Social Providers Settings</h2> <h2 class="pull-left"><span>{{realm.realm}}</span> Social Providers Settings</h2>
<p class="subtitle"><span class="required">*</span> Required fields</p> <p class="subtitle"><span class="required">*</span> Required fields</p>
<div class="alert alert-info alert-dismissable"> <div class="alert alert-info alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
<span class="pficon pficon-close"></span> <span class="pficon pficon-close"></span>
</button> </button>
<span class="pficon pficon-info"></span> <span class="pficon pficon-info"></span>
<strong>Social Callback URL:</strong> {{callbackUrl}}</p> <strong>Social Callback URL:</strong> {{callbackUrl}}</p>
</div> </div>
<form name="realmForm" novalidate> <form name="realmForm" novalidate>
<fieldset> <fieldset>
<div> <div>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<caption class="hidden">Table of social providers</caption> <caption class="hidden">Table of social providers</caption>
<thead> <thead>
<tr> <tr>
<th colspan="5" class="kc-table-actions"> <th colspan="5" class="kc-table-actions">
<div class="pull-right"> <div class="pull-right">
<div class="select-kc"> <div class="select-kc">
<select ng-model="newProviderId" <select ng-model="newProviderId"
ng-options="(p|capitalize) for p in (allProviders|remove:configuredProviders)" ng-options="(p|capitalize) for p in (allProviders|remove:configuredProviders)"
data-ng-change="addProvider(newProviderId); newProviderId = null"> data-ng-change="addProvider(newProviderId); newProviderId = null">
<option value="" disabled selected>Add provider...</option> <option value="" disabled selected>Add provider...</option>
</select> </select>
</div> </div>
</div> </div>
</th> </th>
</tr> </tr>
<tr ng-show="configuredProviders.length > 0"> <tr ng-show="configuredProviders.length > 0">
<th>Provider</th> <th>Provider</th>
<th>Key <span class="required">*</span></th> <th>Key <span class="required">*</span></th>
<th>Secret <span class="required">*</span></th> <th>Secret <span class="required">*</span></th>
<th colspan="1">Actions</th> <th colspan="1">Actions</th>
</tr> </tr>
</thead> </thead>
<tbody ng-show="configuredProviders.length > 0"> <tbody ng-show="configuredProviders.length > 0">
<tr ng-repeat="pId in configuredProviders"> <tr ng-repeat="pId in configuredProviders">
<td> <td>
<div class="clearfix"> <div class="clearfix">
<input class="form-control input-small disabled" type="text" value="{{pId|capitalize}}" readonly> <input class="form-control input-small disabled" type="text" value="{{pId|capitalize}}" readonly>
</div> </div>
</td> </td>
<td> <td>
<input class="form-control" type="text" placeholder="Key" ng-model="realm.socialProviders[pId+'.key']" <input class="form-control" type="text" placeholder="Key" ng-model="realm.socialProviders[pId+'.key']"
ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required> ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required>
</td> </td>
<td> <td>
<input class="form-control" type="text" placeholder="Secret" ng-model="realm.socialProviders[pId+'.secret']" <input class="form-control" type="text" placeholder="Secret" ng-model="realm.socialProviders[pId+'.secret']"
ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required> ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required>
</td> </td>
<td class="actions"> <td class="actions">
<div class="action-div"><i class="pficon pficon-delete" ng-click="removeProvider(pId)" tooltip-placement="right" tooltip="Remove Provider"></i></div> <div class="action-div"><i class="pficon pficon-delete" ng-click="removeProvider(pId)" tooltip-placement="right" tooltip="Remove Provider"></i></div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions"> <div class="pull-right form-actions">
<button type="submit" kc-reset data-ng-show="changed">Clear changes</button> <button type="submit" kc-reset data-ng-show="changed">Clear changes</button>
<button type="submit" kc-save class="primary" data-ng-show="changed">Save changes</button> <button type="submit" kc-save class="primary" data-ng-show="changed">Save changes</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<!-- TODO remove once this page is properly styled --> <!-- TODO remove once this page is properly styled -->
<style type="text/css"> <style type="text/css">
.social-provider input.ng-invalid.dirty, .social-provider input.ng-invalid.dirty,
.social-provider input.ng-invalid.ng-dirty { .social-provider input.ng-invalid.ng-dirty {
background-color: #FFEEEE; background-color: #FFEEEE;
} }
.social-provider .actions > div { .social-provider .actions > div {
display: inline-block; display: inline-block;
overflow: hidden; overflow: hidden;
} }
.social-provider td { .social-provider td {
font-size: 10px; font-size: 10px;
} }
.social-provider .action-div { .social-provider .action-div {
display: inline-block; display: inline-block;
margin: 5px; margin: 5px;
} }
.social-provider .icon-remove, .social-provider .icon-question { .social-provider .icon-remove, .social-provider .icon-question {
cursor: pointer; cursor: pointer;
} }
</style> </style>

View file

@ -1,74 +1,74 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation> <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<div data-ng-show="access.viewRealm"> <div data-ng-show="access.viewRealm">
<h2><span>{{realm.realm}}</span> Theme Settings <span tooltip-placement="right" tooltip="Change the style for any rendered page." class="fa fa-info-circle"></span></h2> <h2><span>{{realm.realm}}</span> Theme Settings <span tooltip-placement="right" tooltip="Change the style for any rendered page." class="fa fa-info-circle"></span></h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="loginTheme">Login Theme</label> <label class="col-sm-2 control-label" for="loginTheme">Login Theme</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="select-kc"> <div class="select-kc">
<select id="loginTheme" <select id="loginTheme"
ng-model="realm.loginTheme" ng-model="realm.loginTheme"
ng-options="o as o for o in serverInfo.themes.login"> ng-options="o as o for o in serverInfo.themes.login">
<option value="" disabled selected>Select one...</option> <option value="" disabled selected>Select one...</option>
</select> </select>
</div> </div>
</div> </div>
<span tooltip-placement="right" tooltip="Select theme for login, totp, grant, registrationn, and forgot password pages." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Select theme for login, totp, grant, registrationn, and forgot password pages." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="accountTheme">Account Theme</label> <label class="col-sm-2 control-label" for="accountTheme">Account Theme</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="select-kc"> <div class="select-kc">
<select id="accountTheme" <select id="accountTheme"
ng-model="realm.accountTheme" ng-model="realm.accountTheme"
ng-options="o as o for o in serverInfo.themes.account"> ng-options="o as o for o in serverInfo.themes.account">
<option value="" disabled selected>Select one...</option> <option value="" disabled selected>Select one...</option>
</select> </select>
</div> </div>
</div> </div>
<span tooltip-placement="right" tooltip="Select theme for user account management pages." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Select theme for user account management pages." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="adminTheme">Admin Console Theme</label> <label class="col-sm-2 control-label" for="adminTheme">Admin Console Theme</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="select-kc"> <div class="select-kc">
<select id="adminTheme" <select id="adminTheme"
ng-model="realm.adminTheme" ng-model="realm.adminTheme"
ng-options="o as o for o in serverInfo.themes.admin"> ng-options="o as o for o in serverInfo.themes.admin">
<option value="" disabled selected>Select one...</option> <option value="" disabled selected>Select one...</option>
</select> </select>
</div> </div>
</div> </div>
<span tooltip-placement="right" tooltip="Select theme for admin console." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Select theme for admin console." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="emailTheme">Email Theme</label> <label class="col-sm-2 control-label" for="emailTheme">Email Theme</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="select-kc"> <div class="select-kc">
<select id="emailTheme" <select id="emailTheme"
ng-model="realm.emailTheme" ng-model="realm.emailTheme"
ng-options="o as o for o in serverInfo.themes.email"> ng-options="o as o for o in serverInfo.themes.email">
<option value="" disabled selected>Select one...</option> <option value="" disabled selected>Select one...</option>
</select> </select>
</div> </div>
</div> </div>
<span tooltip-placement="right" tooltip="Select theme for emails that are sent by the server." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Select theme for emails that are sent by the server." class="fa fa-info-circle"></span>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageRealm"> <div class="pull-right form-actions" data-ng-show="access.manageRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
</form> </form>
</div> </div>
<div data-ng-hide="access.viewRealm"> <div data-ng-hide="access.viewRealm">
<h2 ><span>{{realm.realm}}</span></h2> <h2 ><span>{{realm.realm}}</span></h2>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,128 +1,129 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li> <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 data-ng-hide="create"><span>{{realm.realm}}</span> {{role.name}} Realm Role</h2> <h2 data-ng-hide="create"><span>{{realm.realm}}</span> {{role.name}} Realm Role</h2>
<h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add Realm Role</h2> <h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add Realm Role</h2>
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p> <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
<form class="form-horizontal clearfix" name="realmForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal clearfix" name="realmForm" novalidate kc-read-only="!access.manageRealm">
<fieldset> <fieldset>
<legend><span class="text">Role</span></legend> <legend><span class="text">Role</span></legend>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label> <label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus <input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
required data-ng-readonly="!create"> required data-ng-readonly="!create">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="description">Description </label> <label class="col-sm-2 control-label" for="description">Description </label>
<div class="col-sm-4"> <div class="col-sm-4">
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea> <textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label> <label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch /> <input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
</div> </div>
<span tooltip-placement="right" tooltip="When this role is assigned to a user, the user implicitly is assigned every role associated with the composite role." class="fa fa-info-circle"></span> </div> <span tooltip-placement="right" tooltip="When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly." class="fa fa-info-circle"></span> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="create"> <div class="pull-right form-actions" data-ng-show="create">
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button> <button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)"> <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
<legend uncollapsed class="collapsible"><span class="text">Composite Realm Roles</span> </legend> <legend uncollapsed class="collapsible"><span class="text">Composite Realm Roles</span> </legend>
<div class="form-group"> <div class="form-group">
<div class="controls changing-selectors col-sm-10"> <div class="controls changing-selectors col-sm-10">
<div class="select-title"> <div class="select-title">
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label> <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label>
<select id="available" class="form-control" multiple size="5" <select id="available" class="form-control" multiple size="5"
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmRoles" ng-model="selectedRealmRoles"
ng-options="r.name for r in realmRoles"> ng-options="r.name for r in realmRoles">
</select> </select>
</div> </div>
<div class="middle-buttons kc-vertical"> <div class="middle-buttons kc-vertical">
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Associate role" tooltip-placement="right"> <button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Associate role" tooltip-placement="right">
<span class="kc-icon-arrow-right">Move right</span> <span class="kc-icon-arrow-right">Move right</span>
</button> </button>
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left">
<span class="kc-icon-arrow-left">Move left</span> <span class="kc-icon-arrow-left">Move left</span>
</button> </button>
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="assigned">Associated Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label> <label class="control-label" for="assigned">Associated Roles <span tooltip-placement="right" tooltip="Realm level roles associated with this composite role." class="fa fa-info-circle"></span></label>
<select id="assigned" class="form-control" multiple size=5 <select id="assigned" class="form-control" multiple size=5
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmMappings" ng-model="selectedRealmMappings"
ng-options="r.name for r in realmMappings"> ng-options="r.name for r in realmMappings">
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)"> <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
<legend uncollapsed class="collapsible"><span class="text">Composite Application Roles</span> </legend> <legend uncollapsed class="collapsible"><span class="text">Composite Application Roles</span> </legend>
<div class="form-group input-select"> <div class="form-group input-select">
<label class="col-sm-2 control-label" for="applications">Application</label> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view/modify roles associated with this composite." class="fa fa-info-circle"></span>
<div class="col-sm-4"> </label>
<div class="input-group"> <div class="col-sm-4">
<div class="select-kc"> <div class="input-group">
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications" ng-disabled="false"> <div class="select-kc">
<option value="" selected> Select an Application...</option> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications" ng-disabled="false">
</select> <option value="" selected> Select an Application...</option>
</div> </select>
<span tooltip-placement="right" tooltip="Select an application to view/modify roles associated with this composite." class="fa fa-info-circle"></span> </div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-show="compositeApp"> </div>
<div class="controls changing-selectors col-sm-10"> <div class="form-group" ng-show="compositeApp">
<div class="select-title"> <div class="controls changing-selectors col-sm-10">
<label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that you can associate to this composite role." class="fa fa-info-circle"></span></label> <div class="select-title">
<select id="available-app" class="form-control" multiple size="5" <label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Roles from this application that you can associate to this composite role." class="fa fa-info-circle"></span></label>
ng-multiple="true" <select id="available-app" class="form-control" multiple size="5"
ng-model="selectedApplicationRoles" ng-multiple="true"
ng-options="r.name for r in applicationRoles"> ng-model="selectedApplicationRoles"
</select> ng-options="r.name for r in applicationRoles">
</div> </select>
<div class="middle-buttons kc-vertical"> </div>
<button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Associate role" tooltip-placement="right"> <div class="middle-buttons kc-vertical">
<span class="kc-icon-arrow-right">Move right</span> <button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Associate role" tooltip-placement="right">
</button> <span class="kc-icon-arrow-right">Move right</span>
<button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Disassociate role" tooltip-placement="left"> </button>
<span class="kc-icon-arrow-left">Move left</span> <button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Disassociate role" tooltip-placement="left">
</button> <span class="kc-icon-arrow-left">Move left</span>
</div> </button>
<div class="select-title"> </div>
<label class="control-label" for="assigned-app">Associated Roles <span tooltip-placement="right" tooltip="Application roles associated with this composite role." class="fa fa-info-circle"></span></label> <div class="select-title">
<select id="assigned-app" class="form-control" multiple size=5 <label class="control-label" for="assigned-app">Associated Roles <span tooltip-placement="right" tooltip="Application roles associated with this composite role." class="fa fa-info-circle"></span></label>
ng-multiple="true" <select id="assigned-app" class="form-control" multiple size=5
ng-model="selectedApplicationMappings" ng-multiple="true"
ng-options="r.name for r in applicationMappings"> ng-model="selectedApplicationMappings"
</select> ng-options="r.name for r in applicationMappings">
</div> </select>
</div> </div>
</div> </div>
</fieldset> </div>
</fieldset>
<div class="pull-right form-actions" data-ng-show="!create && access.manageRealm">
<button kc-reset data-ng-show="changed">Clear changes</button> <div class="pull-right form-actions" data-ng-show="!create && access.manageRealm">
<button kc-save data-ng-show="changed">Save</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button> <button kc-save data-ng-show="changed">Save</button>
</div> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div>
</form>
</div> </form>
</div>
</div> </div>

View file

@ -1,59 +1,59 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li> <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><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Realm-Level Roles</h2> <h2><span>{{realm.realm}}</span> Realm-Level Roles</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="3"> <th class="kc-table-actions" colspan="3">
<div class="search-comp clearfix"> <div class="search-comp clearfix">
<input type="text" placeholder="Search..." data-ng-model="searchQuery" class="form-control search"> <input type="text" placeholder="Search..." data-ng-model="searchQuery" class="form-control search">
<button class="kc-icon-search" tooltip-placement="right" <button class="kc-icon-search" tooltip-placement="right"
tooltip="Search by name"> tooltip="Search by name">
Icon: search Icon: search
</button> </button>
</div> </div>
<div class="pull-right" data-ng-show="access.manageRealm"> <div class="pull-right" data-ng-show="access.manageRealm">
<a class="btn btn-primary" href="#/create/role/{{realm.realm}}">Add Role</a> <a class="btn btn-primary" href="#/create/role/{{realm.realm}}">Add Role</a>
<!-- <button class="remove disabled">Remove</button> --> <!-- <button class="remove disabled">Remove</button> -->
</div> </div>
</th> </th>
</tr> </tr>
<tr data-ng-show="roles && roles.length > 0"> <tr data-ng-show="roles && roles.length > 0">
<th>Role Name</th> <th>Role Name</th>
<th>Composite</th> <th>Composite</th>
<th>Description</th> <th>Description</th>
</tr> </tr>
</thead> </thead>
<!-- <!--
<tfoot data-ng-show="roles && roles.length > 5"> <tfoot data-ng-show="roles && roles.length > 5">
<tr> <tr>
<td colspan="3"> <td colspan="3">
<div class="table-nav"> <div class="table-nav">
<a href="#" class="first disabled">First page</a> <a href="#" class="first disabled">First page</a>
<a href="#" class="prev disabled">Previous page</a><span><strong>1-8</strong> of <strong>10</strong></span> <a href="#" class="prev disabled">Previous page</a><span><strong>1-8</strong> of <strong>10</strong></span>
<a href="#" class="next">Next page</a><a href="#" class="last">Last page</a> <a href="#" class="next">Next page</a><a href="#" class="last">Last page</a>
</div> </div>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
--> -->
<tbody> <tbody>
<tr ng-repeat="role in roles | filter:{name: searchQuery}"> <tr ng-repeat="role in roles | filter:{name: searchQuery}">
<td><a href="#/realms/{{realm.realm}}/roles/{{role.name}}">{{role.name}}</a></td> <td><a href="#/realms/{{realm.realm}}/roles/{{role.name}}">{{role.name}}</a></td>
<td>{{role.composite}}</td> <td>{{role.composite}}</td>
<td>{{role.description}}</td> <td>{{role.description}}</td>
</tr> </tr>
<tr data-ng-show="!roles || roles.length == 0"> <tr data-ng-show="!roles || roles.length == 0">
<td>No realm roles available</td> <td>No realm roles available</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,119 +1,119 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li> <li data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
<li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li> <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{user.username}}'s</span> Role Mappings</h2> <h2><span>{{user.username}}'s</span> Role Mappings</h2>
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageUsers"> <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageUsers">
<fieldset> <fieldset>
<legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles mapped to user." class="fa fa-info-circle"></span> <legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles mapped to user." class="fa fa-info-circle"></span>
</legend> </legend>
<div class="form-group col-sm-10"> <div class="form-group col-sm-10">
<div class="controls changing-selectors"> <div class="controls changing-selectors">
<div class="select-title"> <div class="select-title">
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm roles that can be assigned to the user." class="fa fa-info-circle"></span> <label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm roles that can be assigned to the user." class="fa fa-info-circle"></span>
</label> </label>
<select id="available" class="form-control" multiple size="5" <select id="available" class="form-control" multiple size="5"
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmRoles" ng-model="selectedRealmRoles"
ng-options="r.name for r in realmRoles"> ng-options="r.name for r in realmRoles">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Assign role" tooltip-placement="right"> <button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-right">Move right</span> <span class="kc-icon-arrow-right">Move right</span>
</button> </button>
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Unassign role" tooltip-placement="left">
<span class="kc-icon-arrow-left">Move left</span> <span class="kc-icon-arrow-left">Move left</span>
</button> </button>
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm roles mapped to the user" class="fa fa-info-circle"></span> <label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm roles mapped to the user" class="fa fa-info-circle"></span>
</label> </label>
<select id="assigned" class="form-control" multiple size=5 <select id="assigned" class="form-control" multiple size=5
ng-multiple="true" ng-multiple="true"
ng-model="selectedRealmMappings" ng-model="selectedRealmMappings"
ng-options="r.name for r in realmMappings"> ng-options="r.name for r in realmMappings">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
- -
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="All realm role mappings. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span> <label class="control-label" for="realm-composite">Effective Roles <span tooltip-placement="right" tooltip="All realm role mappings. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span>
</label> </label>
<select id="realm-composite" class="form-control" multiple size=5 <select id="realm-composite" class="form-control" multiple size=5
ng-disabled="true" ng-disabled="true"
ng-model="dummymodel" ng-model="dummymodel"
ng-options="r.name for r in realmComposite"> ng-options="r.name for r in realmComposite">
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</fieldset> </fieldset>
<fieldset ng-show="applications.length > 0"> <fieldset ng-show="applications.length > 0">
<legend><span class="text">Application Roles</span> </legend> <legend><span class="text">Application Roles</span> </legend>
<div class="form-group input-select"> <div class="form-group input-select">
<label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to map." class="fa fa-info-circle"></span></label> <label class="col-sm-2 control-label" for="applications">Application <span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to map." class="fa fa-info-circle"></span></label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="input-group"> <div class="input-group">
<div class="select-kc"> <div class="select-kc">
<select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications" ng-disabled="false"> <select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications" ng-disabled="false">
<option value="" selected> Select an Application...</option> <option value="" selected> Select an Application...</option>
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-show="application"> <div class="form-group" ng-show="application">
<div class="controls changing-selectors col-sm-10"> <div class="controls changing-selectors col-sm-10">
<div class="select-title"> <div class="select-title">
<label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Assignable roles from this application." class="fa fa-info-circle"></span></label> <label class="control-label" for="available-app">Available Roles <span tooltip-placement="right" tooltip="Assignable roles from this application." class="fa fa-info-circle"></span></label>
<select id="available-app" class="form-control" multiple size="5" <select id="available-app" class="form-control" multiple size="5"
ng-multiple="true" ng-multiple="true"
ng-model="selectedApplicationRoles" ng-model="selectedApplicationRoles"
ng-options="r.name for r in applicationRoles"> ng-options="r.name for r in applicationRoles">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
<button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right"> <button class="btn btn-default" type="submit" ng-click="addApplicationRole()" tooltip="Assign role" tooltip-placement="right">
<span class="kc-icon-arrow-right">Move right</span> <span class="kc-icon-arrow-right">Move right</span>
</button> </button>
<button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left"> <button class="btn btn-default" type="submit" ng-click="deleteApplicationRole()" tooltip="Unassign role" tooltip-placement="left">
<span class="kc-icon-arrow-left">Move left</span> <span class="kc-icon-arrow-left">Move left</span>
</button> </button>
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="assigned-app">Assigned Roles <span tooltip-placement="right" tooltip="Role mappings for this application." class="fa fa-info-circle"></span></label> <label class="control-label" for="assigned-app">Assigned Roles <span tooltip-placement="right" tooltip="Role mappings for this application." class="fa fa-info-circle"></span></label>
<select id="assigned-app" class="form-control" multiple size=5 <select id="assigned-app" class="form-control" multiple size=5
ng-multiple="true" ng-multiple="true"
ng-model="selectedApplicationMappings" ng-model="selectedApplicationMappings"
ng-options="r.name for r in applicationMappings"> ng-options="r.name for r in applicationMappings">
</select> </select>
</div> </div>
<div class="middle-buttons"> <div class="middle-buttons">
- -
</div> </div>
<div class="select-title"> <div class="select-title">
<label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Role mappings for this application. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span></label> <label class="control-label" for="app-composite">Effective Roles <span tooltip-placement="right" tooltip="Role mappings for this application. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span></label>
<select id="app-composite" class="form-control" multiple size=5 <select id="app-composite" class="form-control" multiple size=5
ng-disabled="true" ng-disabled="true"
ng-model="dummymodel" ng-model="dummymodel"
ng-options="r.name for r in applicationComposite"> ng-options="r.name for r in applicationComposite">
</select> </select>
</div> </div>
</div> </div>
</div> </div>
</fieldset> </fieldset>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,33 +1,33 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li>
<li><a href="#/realms/{{realm.realm}}/token-settings">Timeout Settings</a></li> <li><a href="#/realms/{{realm.realm}}/token-settings">Timeout Settings</a></li>
<li><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li> <li><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Sessions</h2> <h2><span>{{realm.realm}}</span> Sessions</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="3"> <th class="kc-table-actions" colspan="3">
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary" ng-click="logoutAll()">Logout All</a> <a class="btn btn-primary" ng-click="logoutAll()">Logout All</a>
</div> </div>
</th> </th>
</tr> </tr>
<tr> <tr>
<th>Application</th> <th>Application</th>
<th>Active Sessions</th> <th>Active Sessions</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr data-ng-repeat="(application, data) in stats"> <tr data-ng-repeat="(application, data) in stats">
<td><a href="#/realms/{{realm.realm}}/applications/{{application}}/sessions">{{application}}</a></td> <td><a href="#/realms/{{realm.realm}}/applications/{{application}}/sessions">{{application}}</a></td>
<td>{{data}}</td> <td>{{data}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,31 +1,31 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li>
<li><a href="#/realms/{{realm.realm}}/token-settings">Timeout Settings</a></li> <li><a href="#/realms/{{realm.realm}}/token-settings">Timeout Settings</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 data-ng-hide="create"><span>{{realm.realm}}</span> Revocation Policies</h2> <h2 data-ng-hide="create"><span>{{realm.realm}}</span> Revocation Policies</h2>
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm"> <form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="notBefore">Not Before</label> <label class="col-sm-2 control-label" for="notBefore">Not Before</label>
<div class="col-sm-4"> <div class="col-sm-4">
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus> <input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
</div> </div>
<span tooltip-placement="right" tooltip="Revoke any tokens issued before this date." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Revoke any tokens issued before this date." class="fa fa-info-circle"></span>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="access.manageApplications"> <div class="pull-right form-actions" data-ng-show="access.manageApplications">
<button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear <button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear
</button> </button>
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now <button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now
</button> </button>
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="For every application that has an admin URL, notify them of the new revocation policy." tooltip-placement="bottom">Push <button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="For every application that has an admin URL, notify them of the new revocation policy." tooltip-placement="bottom">Push
</button> </button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,46 +1,46 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
<li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li> <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{user.username}}'s</span> Credentials</h2> <h2><span>{{user.username}}'s</span> Credentials</h2>
<form class="form-horizontal" name="userForm" novalidate> <form class="form-horizontal" name="userForm" novalidate>
<fieldset class="border-top"> <fieldset class="border-top">
<legend><span class="text">Credential Management</span></legend> <legend><span class="text">Credential Management</span></legend>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="password">Reset password</label> <label class="col-sm-2 control-label" for="password">Reset password</label>
<div class="col-sm-6 kc-multiline"> <div class="col-sm-6 kc-multiline">
<input class="form-control" type="password" id="password" name="password" data-ng-model="password" placeholder="New password" required> <input class="form-control" type="password" id="password" name="password" data-ng-model="password" placeholder="New password" required>
<input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" placeholder="Password confirmation" required> <input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" placeholder="Password confirmation" required>
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)" data-ng-show="password" tooltip="Temporary reset of password. User will be asked to change it when they log in." tooltip-placement="left">Reset Password</button> <button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)" data-ng-show="password" tooltip="Temporary reset of password. User will be asked to change it when they log in." tooltip-placement="left">Reset Password</button>
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(false)" data-ng-show="password" tooltip="Change the password of the user." tooltip-placement="right">Change Password</button> <button class="btn btn-danger" type="submit" data-ng-click="resetPassword(false)" data-ng-show="password" tooltip="Change the password of the user." tooltip-placement="right">Change Password</button>
</div> </div>
</div> </div>
<div class="form-group" data-ng-show="user.email"> <div class="form-group" data-ng-show="user.email">
<label class="col-sm-2 control-label" for="password">Reset password email</label> <label class="col-sm-2 control-label" for="password">Reset password email</label>
<div class="col-sm-5"> <div class="col-sm-5">
<button class="btn btn-danger" type="submit" data-ng-click="resetPasswordEmail()" tooltip="Send an email to user with a link to reset their password" tooltip-placement="right">Send Email</button> <button class="btn btn-danger" type="submit" data-ng-click="resetPasswordEmail()" tooltip="Send an email to user with a link to reset their password" tooltip-placement="right">Send Email</button>
</div> </div>
</div> </div>
<div class="form-group" data-ng-show="user.totp"> <div class="form-group" data-ng-show="user.totp">
<label class="col-sm-2 control-label" for="password">Remove totp</label> <label class="col-sm-2 control-label" for="password">Remove totp</label>
<div class="col-sm-5" data-ng-show="user.totp"> <div class="col-sm-5" data-ng-show="user.totp">
<button class="btn btn-danger" type="submit" data-ng-click="removeTotp()" 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="Remove one time password generator for user." tooltip-placement="right">Remove TOTP</button>
</div> </div>
</div> </div>
</fieldset> </fieldset>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,109 +1,109 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li> <li data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
<li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li> <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li>
</ul> </ul>
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="create"> <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="create">
<li class="active"><a href="">User List</a></li> <li class="active"><a href="">User List</a></li>
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li> <li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2 data-ng-show="create" class="pull-left">Add User</h2> <h2 data-ng-show="create" class="pull-left">Add User</h2>
<h2 data-ng-hide="create" class="pull-left"><span>{{user.username}}'s</span> Attributes</h2> <h2 data-ng-hide="create" class="pull-left"><span>{{user.username}}'s</span> Attributes</h2>
<p class="subtitle"><span class="required">*</span> Required fields</p> <p class="subtitle"><span class="required">*</span> Required fields</p>
<form class="form-horizontal" name="userForm" novalidate kc-read-only="!access.manageUsers"> <form class="form-horizontal" name="userForm" novalidate kc-read-only="!access.manageUsers">
<fieldset class="border-top"> <fieldset class="border-top">
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label"for="id">ID</label> <label class="col-sm-2 control-label"for="id">ID</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input class="form-control" type="text" id="id" name="id" data-ng-model="user.id" autofocus data-ng-readonly="true"> <input class="form-control" type="text" id="id" name="id" data-ng-model="user.id" autofocus data-ng-readonly="true">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label> <label class="col-sm-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
<div class="col-sm-5"> <div class="col-sm-5">
<!-- Characters >,<,/,\ are forbidden in username --> <!-- Characters >,<,/,\ are forbidden in username -->
<input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus <input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus
required ng-pattern="/^[^\<\>\\\/]*$/"> required ng-pattern="/^[^\<\>\\\/]*$/">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="email">Email</label> <label class="col-sm-2 control-label" for="email">Email</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input class="form-control" type="email" name="email" id="email" <input class="form-control" type="email" name="email" id="email"
data-ng-model="user.email"> data-ng-model="user.email">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="firstName">First Name</label> <label class="col-sm-2 control-label" for="firstName">First Name</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input class="form-control" type="text" name="firstName" id="firstName" <input class="form-control" type="text" name="firstName" id="firstName"
data-ng-model="user.firstName"> data-ng-model="user.firstName">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label" for="lastName">Last Name</label> <label class="col-sm-2 control-label" for="lastName">Last Name</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input class="form-control" type="text" name="lastName" id="lastName" <input class="form-control" type="text" name="lastName" id="lastName"
data-ng-model="user.lastName"> data-ng-model="user.lastName">
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label class="col-sm-2 control-label" for="userEnabled">User Enabled</label> <label class="col-sm-2 control-label" for="userEnabled">User Enabled</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" onoffswitch /> <input ng-model="user.enabled" name="userEnabled" id="userEnabled" onoffswitch />
</div> </div>
<span tooltip-placement="right" tooltip="A disabled user cannot login." class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="A disabled user cannot login." class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group clearfix block" data-ng-show="!create && user.federationLink"> <div class="form-group clearfix block" data-ng-show="!create && user.federationLink">
<label class="col-sm-2 control-label" for="userEnabled">Federation Link</label> <label class="col-sm-2 control-label" for="userEnabled">Federation Link</label>
<div class="col-sm-5"> <div class="col-sm-5">
<a href="{{federationLink}}">{{federationLinkName}}</a> <a href="{{federationLink}}">{{federationLinkName}}</a>
</div> </div>
</div> </div>
<div class="form-group clearfix block"> <div class="form-group clearfix block">
<label class="col-sm-2 control-label" for="emailVerified">Email verified</label> <label class="col-sm-2 control-label" for="emailVerified">Email verified</label>
<div class="col-sm-5"> <div class="col-sm-5">
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" onoffswitch /> <input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" onoffswitch />
</div> </div>
<span tooltip-placement="right" tooltip="Has the user's email been verified?" class="fa fa-info-circle"></span> <span tooltip-placement="right" tooltip="Has the user's email been verified?" class="fa fa-info-circle"></span>
</div> </div>
<div class="form-group clearfix"> <div class="form-group clearfix">
<label class="col-sm-2 control-label" for="reqActions">Required User Actions</label> <label class="col-sm-2 control-label" for="reqActions">Required User Actions</label>
<div class="col-sm-5"> <div class="col-sm-5">
<select ui-select2 ng-model="user.requiredActions" data-placeholder="Select an action..." multiple> <select ui-select2 ng-model="user.requiredActions" data-placeholder="Select an action..." multiple>
<option ng-repeat="action in userReqActionList" value="{{action.id}}">{{action.text}}</option> <option ng-repeat="action in userReqActionList" value="{{action.id}}">{{action.text}}</option>
</select> </select>
</div> </div>
<span tooltip-placement="right" 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." class="fa fa-info-circle"></span> <span tooltip-placement="right" 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." class="fa fa-info-circle"></span>
</div> </div>
</fieldset> </fieldset>
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers"> <div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
<button kc-cancel data-ng-click="cancel()">Cancel</button> <button kc-cancel data-ng-click="cancel()">Cancel</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
</div> </div>
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers"> <div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
<button kc-reset data-ng-show="changed">Clear changes</button> <button kc-reset data-ng-show="changed">Clear changes</button>
<button kc-save data-ng-show="changed">Save</button> <button kc-save data-ng-show="changed">Save</button>
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button> <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,44 +1,44 @@
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-sm-9" role="main"> <div id="content-area" class="col-sm-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/users">User List</a></li> <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
<li class="active"><a href="">Federation</a></li> <li class="active"><a href="">Federation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> User Federation Providers</h2> <h2><span>{{realm.realm}}</span> User Federation Providers</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr ng-show="providers.length > 0 && access.manageUsers"> <tr ng-show="providers.length > 0 && access.manageUsers">
<th colspan="3" class="kc-table-actions"> <th colspan="3" class="kc-table-actions">
<div class="pull-right"> <div class="pull-right">
<div class="select-kc"> <div class="select-kc">
<select ng-model="selectedProvider" <select ng-model="selectedProvider"
ng-options="p.id for p in providers" ng-options="p.id for p in providers"
data-ng-change="addProvider(selectedProvider); selectedProvider = null"> data-ng-change="addProvider(selectedProvider); selectedProvider = null">
<option value="" disabled selected>Add provider...</option> <option value="" disabled selected>Add provider...</option>
</select> </select>
</div> </div>
</div> </div>
</th> </th>
</tr> </tr>
<tr data-ng-show="instances && instances.length > 0"> <tr data-ng-show="instances && instances.length > 0">
<th>ID</th> <th>ID</th>
<th>Provider Name</th> <th>Provider Name</th>
<th>Priority</th> <th>Priority</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="instance in instances"> <tr ng-repeat="instance in instances">
<td><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{instance.displayName}}</a></td> <td><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{instance.displayName}}</a></td>
<td>{{instance.providerName|capitalize}}</td> <td>{{instance.providerName|capitalize}}</td>
<td>{{instance.priority}}</td> <td>{{instance.priority}}</td>
</tr> </tr>
<tr data-ng-show="!instances || instances.length == 0"> <tr data-ng-show="!instances || instances.length == 0">
<td>No user federation providers configured</td> <td>No user federation providers configured</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,65 +1,65 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li class="active"><a href="">User List</a></li> <li class="active"><a href="">User List</a></li>
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li> <li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{realm.realm}}</span> Users</h2> <h2><span>{{realm.realm}}</span> Users</h2>
<table class="table table-striped table-bordered"> <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</caption>
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="4"> <th class="kc-table-actions" colspan="4">
<div class="search-comp clearfix"> <div class="search-comp clearfix">
<input type="text" placeholder="Search..." data-ng-model="query.search" class="form-control search" <input type="text" placeholder="Search..." data-ng-model="query.search" class="form-control search"
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}"> onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
<button data-ng-click="searchQuery()" type="submit" <button data-ng-click="searchQuery()" type="submit"
class="kc-icon-search" tooltip-placement="right" class="kc-icon-search" tooltip-placement="right"
tooltip="Search by full name, last name, email, or username."> tooltip="Search by full name, last name, email, or username.">
Icon: search Icon: search
</button> </button>
</div> </div>
<span><span>or</span><button class="kc-link" ng-click="query.search = null; searchQuery()">View all users</button></span> <span><span>or</span><button class="kc-link" ng-click="query.search = null; searchQuery()">View all users</button></span>
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary" href="#/create/user/{{realm.realm}}">Add User</a> <a class="btn btn-primary" href="#/create/user/{{realm.realm}}">Add User</a>
</div> </div>
</th> </th>
</tr> </tr>
<tr> <tr>
<tr data-ng-show="searchLoaded && users.length > 0"> <tr data-ng-show="searchLoaded && users.length > 0">
<th>Username</th> <th>Username</th>
<th>Last Name</th> <th>Last Name</th>
<th>First Name</th> <th>First Name</th>
<th>Email</th> <th>Email</th>
</tr> </tr>
</tr> </tr>
</thead> </thead>
<tfoot data-ng-show="users && users.length > 5"> <tfoot data-ng-show="users && users.length > 5">
<tr> <tr>
<td colspan="7"> <td colspan="7">
<div class="table-nav"> <div class="table-nav">
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button> <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="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="nextPage()" class="next" ng-disabled="users.length < query.max">Next page</button>
</div> </div>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
<tbody> <tbody>
<tr ng-repeat="user in users"> <tr ng-repeat="user in users">
<td><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></td> <td><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></td>
<td>{{user.lastName}}</td> <td>{{user.lastName}}</td>
<td>{{user.firstName}}</td> <td>{{user.firstName}}</td>
<td>{{user.email}}</td> <td>{{user.email}}</td>
</tr> </tr>
<tr data-ng-show="!users || users.length == 0"> <tr data-ng-show="!users || users.length == 0">
<td data-ng-show="!users">Please enter a search, or click on view all users</td> <td data-ng-show="!users">Please enter a search, or click on view all users</td>
<td data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">Your search returned no results</td> <td data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">Your search returned no results</td>
<td data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No users available</td> <td data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No users available</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,52 +1,52 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
<li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li> <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{user.username}}</span> Sessions</h2> <h2><span>{{user.username}}</span> Sessions</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th class="kc-table-actions" colspan="6"> <th class="kc-table-actions" colspan="6">
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary" ng-click="logoutAll()">Logout All Sessions</a> <a class="btn btn-primary" ng-click="logoutAll()">Logout All Sessions</a>
</div> </div>
</th> </th>
</tr> </tr>
<tr> <tr>
<th>IP Address</th> <th>IP Address</th>
<th>Started</th> <th>Started</th>
<th>Last Access</th> <th>Last Access</th>
<th>Applications</th> <th>Applications</th>
<th>OAuth Clients</th> <th>OAuth Clients</th>
<th>Action</th> <th>Action</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr data-ng-repeat="session in sessions"> <tr data-ng-repeat="session in sessions">
<td>{{session.ipAddress}}</td> <td>{{session.ipAddress}}</td>
<td>{{session.start | date:'medium'}}</td> <td>{{session.start | date:'medium'}}</td>
<td>{{session.lastAccess | date:'medium'}}</td> <td>{{session.lastAccess | date:'medium'}}</td>
<td> <td>
<div data-ng-repeat="app in session.applications"> <div data-ng-repeat="app in session.applications">
<a href="#/realms/{{realm.realm}}/applications/{{app}}/sessions">{{app}}</a> <a href="#/realms/{{realm.realm}}/applications/{{app}}/sessions">{{app}}</a>
</div> </div>
</ul> </ul>
</td> </td>
<td> <td>
<div data-ng-repeat="(clientId, clientName) in session.clients"> <div data-ng-repeat="(clientId, clientName) in session.clients">
<a href="#/realms/{{realm.realm}}/oauth-clients/{{clientId}}">{{clientName}}</a> <a href="#/realms/{{realm.realm}}/oauth-clients/{{clientId}}">{{clientName}}</a>
</div> </div>
</td> </td>
<td><a href="" ng-click="logoutSession(session.id)">logout</a> </td> <td><a href="" ng-click="logoutSession(session.id)">logout</a> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>

View file

@ -1,28 +1,28 @@
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div> <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main"> <div id="content-area" class="col-md-9" role="main">
<ul class="nav nav-tabs nav-tabs-pf"> <ul class="nav nav-tabs nav-tabs-pf">
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li> <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li> <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/social-links">Social Links</a></li>
</ul> </ul>
<h2></h2> <h2></h2>
<div id="content"> <div id="content">
<h2><span>{{user.username}}</span> Social Links</h2> <h2><span>{{user.username}}</span> Social Links</h2>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>Provider Name</th> <th>Provider Name</th>
<th>Social Username</th> <th>Social Username</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr data-ng-repeat="socialLink in socialLinks"> <tr data-ng-repeat="socialLink in socialLinks">
<td>{{socialLink.socialProvider}}</td> <td>{{socialLink.socialProvider}}</td>
<td>{{socialLink.socialUsername}}</td> <td>{{socialLink.socialUsername}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>