Merge pull request #626 from patriot1burke/master
more tooltips, change password
This commit is contained in:
commit
29691a3167
24 changed files with 124 additions and 82 deletions
|
@ -20,6 +20,8 @@ public class CredentialRepresentation {
|
||||||
protected String hashedSaltedValue;
|
protected String hashedSaltedValue;
|
||||||
protected String salt;
|
protected String salt;
|
||||||
protected Integer hashIterations;
|
protected Integer hashIterations;
|
||||||
|
// only used when updating a credential. Might set required action
|
||||||
|
protected boolean temporary;
|
||||||
|
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
|
@ -68,4 +70,12 @@ public class CredentialRepresentation {
|
||||||
public void setHashIterations(Integer hashIterations) {
|
public void setHashIterations(Integer hashIterations) {
|
||||||
this.hashIterations = hashIterations;
|
this.hashIterations = hashIterations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isTemporary() {
|
||||||
|
return temporary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemporary(boolean temporary) {
|
||||||
|
this.temporary = temporary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,7 +267,7 @@ module.controller('UserCredentialsCtrl', function($scope, realm, user, User, Use
|
||||||
$scope.isTotp = user.totp;
|
$scope.isTotp = user.totp;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.resetPassword = function() {
|
$scope.resetPassword = function(temporary) {
|
||||||
if ($scope.pwdChange) {
|
if ($scope.pwdChange) {
|
||||||
if ($scope.password != $scope.confirmPassword) {
|
if ($scope.password != $scope.confirmPassword) {
|
||||||
Notifications.error("Password and confirmation does not match.");
|
Notifications.error("Password and confirmation does not match.");
|
||||||
|
@ -275,8 +275,15 @@ module.controller('UserCredentialsCtrl', function($scope, realm, user, User, Use
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog.confirm('Reset password', 'Are you sure you want to reset the users password?', function() {
|
var msgTitle = 'Change password';
|
||||||
UserCredentials.resetPassword({ realm: realm.realm, userId: user.username }, { type : "password", value : $scope.password }, function() {
|
var msg = 'Are you sure you want to change the users password?';
|
||||||
|
if (temporary) {
|
||||||
|
msgTitle = 'Reset password';
|
||||||
|
msg = 'Are you sure you want to reset the users password?';
|
||||||
|
}
|
||||||
|
|
||||||
|
Dialog.confirm(msgTitle, msg, function() {
|
||||||
|
UserCredentials.resetPassword({ realm: realm.realm, userId: user.username }, { type : "password", value : $scope.password, temporary: temporary }, function() {
|
||||||
Notifications.success("The password has been reset");
|
Notifications.success("The password has been reset");
|
||||||
$scope.password = null;
|
$scope.password = null;
|
||||||
$scope.confirmPassword = null;
|
$scope.confirmPassword = null;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2 data-ng-hide="create"><span>{{application.name}}</span> Allowed Claims</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<form class="form-horizontal" name="claimForm">
|
<form class="form-horizontal" name="claimForm">
|
||||||
<div data-ng-include data-src="'partials/claims.html'"></div>
|
<div data-ng-include data-src="'partials/claims.html'"></div>
|
||||||
<div class="pull-right form-actions" data-ng-show="access.manageApplications">
|
<div class="pull-right form-actions" data-ng-show="access.manageApplications">
|
||||||
|
|
|
@ -32,13 +32,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<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-6">
|
||||||
<input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
|
<input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Disabled applications cannot initiate a login or have obtain access tokens." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="accessType">Access Type</label>
|
<label class="col-sm-2 control-label" for="accessType">Access Type</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-6">
|
||||||
<div class="select-kc">
|
<div class="select-kc">
|
||||||
<select id="accessType"
|
<select id="accessType"
|
||||||
ng-change="changeAccessType()"
|
ng-change="changeAccessType()"
|
||||||
|
@ -47,6 +48,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<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="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="!application.bearerOnly">
|
<div class="form-group" data-ng-show="!application.bearerOnly">
|
||||||
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
|
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
|
||||||
|
@ -70,6 +72,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<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="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="!application.bearerOnly && !create">
|
<div class="form-group" data-ng-show="!application.bearerOnly && !create">
|
||||||
<label class="col-sm-2 control-label" for="baseUrl">Base URL</label>
|
<label class="col-sm-2 control-label" for="baseUrl">Base URL</label>
|
||||||
|
@ -77,6 +80,7 @@
|
||||||
<input class="form-control" type="text" name="baseUrl" id="baseUrl"
|
<input class="form-control" type="text" name="baseUrl" id="baseUrl"
|
||||||
data-ng-model="application.baseUrl">
|
data-ng-model="application.baseUrl">
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Optional URL to use when linking to this application. i.e. the welcome page." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="create">
|
<div class="form-group" data-ng-hide="create">
|
||||||
<label class="col-sm-2 control-label" for="adminUrl">Admin URL</label>
|
<label class="col-sm-2 control-label" for="adminUrl">Admin URL</label>
|
||||||
|
@ -84,6 +88,7 @@
|
||||||
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
||||||
data-ng-model="application.adminUrl">
|
data-ng-model="application.adminUrl">
|
||||||
</div>
|
</div>
|
||||||
|
<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="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="!application.bearerOnly && !create">
|
<div class="form-group" data-ng-show="!application.bearerOnly && !create">
|
||||||
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
|
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
|
||||||
|
@ -107,6 +112,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
|
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{application.name}}</span> Installation</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{realm.realm}}</span> Applications</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="pficon pficon-help"></span></h2>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
<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 for this application." class="pficon pficon-help"></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">
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
</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">Push
|
<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>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{application.name}}</span> Roles</h2>
|
<h2><span>{{application.name}}</span> Application Roles</h2>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{application.name}}</span> Scope Mappings</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<p class="subtitle"></p>
|
<p class="subtitle"></p>
|
||||||
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageApplications">
|
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageApplications">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
|
@ -22,17 +22,18 @@
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="application.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
<input ng-model="application.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications" data-ng-show="!application.fullScopeAllowed">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageApplications" data-ng-show="!application.fullScopeAllowed">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><span class="text">Realm Roles</span></legend>
|
<legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="pficon pficon-help"></span></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</label>
|
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="pficon pficon-help"></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"
|
||||||
|
@ -41,14 +42,14 @@
|
||||||
</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="Move right" tooltip-placement="right">
|
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
|
||||||
<span class="kc-icon-arrow-right">Move right</span>
|
<span class="kc-icon-arrow-right">Assign role</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left">
|
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left">
|
||||||
<span class="kc-icon-arrow-left">Move left</span>
|
<span class="kc-icon-arrow-left">Unassign role</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
<label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="pficon pficon-help"></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"
|
||||||
|
@ -59,7 +60,7 @@
|
||||||
-
|
-
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="realm-composite">Effective Roles</label>
|
<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="pficon pficon-help"></span></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"
|
||||||
|
@ -83,11 +84,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-show="targetApp">
|
<div class="form-group" ng-show="targetApp">
|
||||||
<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="app-available">Available Roles</label>
|
<label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="pficon pficon-help"></span></label>
|
||||||
<select id="app-available" class="form-control" multiple size="5"
|
<select id="app-available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedApplicationRoles"
|
ng-model="selectedApplicationRoles"
|
||||||
|
@ -95,15 +97,15 @@
|
||||||
</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="addApplicationRole()" tooltip="Move right" 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="Move left" 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="app-assigned">Assigned Roles</label>
|
<label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="pficon pficon-help"></span></label>
|
||||||
<select id="app-assigned" class="form-control" multiple size=5
|
<select id="app-assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedApplicationMappings"
|
ng-model="selectedApplicationMappings"
|
||||||
|
@ -114,7 +116,7 @@
|
||||||
-
|
-
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="app-composite">Effective Roles</label>
|
<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="pficon pficon-help"></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"
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{application.name}}</span> Sessions</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<form class="form-horizontal" name="sessionStats">
|
<form class="form-horizontal" name="sessionStats">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
@ -20,15 +20,16 @@
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Total number of active user sessions for this application." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-striped table-bordered" data-ng-show="count > 0">
|
<table class="table table-striped table-bordered" data-ng-show="count > 0">
|
||||||
<thead>
|
<thead>
|
||||||
<tr data-ng-hide="sessions">
|
<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="loadUsers()">Show Sessions</a>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -38,7 +39,7 @@
|
||||||
<th>Session Start</th>
|
<th>Session Start</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot data-ng-show="sessions">
|
<tfoot data-ng-show="sessions && sessions.length > 5">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
<div class="table-nav">
|
<div class="table-nav">
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2 data-ng-hide="create"><span>{{oauth.name}}</span> Allowed Claims</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<form class="form-horizontal" name="claimForm">
|
<form class="form-horizontal" name="claimForm">
|
||||||
<div data-ng-include data-src="'partials/claims.html'"></div>
|
<div data-ng-include data-src="'partials/claims.html'"></div>
|
||||||
<div class="pull-right form-actions" data-ng-show="access.manageClients">
|
<div class="pull-right form-actions" data-ng-show="access.manageClients">
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
|
<input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Disabled oauth clients cannot obtain access tokens." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="accessType">Access Type</label>
|
<label class="col-sm-2 control-label" for="accessType">Access Type</label>
|
||||||
|
@ -47,12 +48,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="'Confidential' oauth clients require a secret to initiate login protocol. 'Public' clients do not require a secret." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-sm-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
|
<label class="col-sm-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="oauth.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch />
|
<input ng-model="oauth.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch />
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="When enabled, client can only obtain grants from grant REST API." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="oauth.directGrantsOnly">
|
<div class="form-group" data-ng-hide="oauth.directGrantsOnly">
|
||||||
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
|
<label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI <span class="required" data-ng-show="create">*</span></label>
|
||||||
|
@ -76,6 +79,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<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="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-hide="create">
|
<div class="form-group" data-ng-hide="create">
|
||||||
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
|
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
|
||||||
|
@ -99,6 +103,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Allowed CORS origins. Only useful if the client adapter has CORS processing enabled." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2>OAuth Client Installation</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<form class="form-horizontal" name="realmForm" novalidate>
|
<form class="form-horizontal" name="realmForm" novalidate>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{realm.realm}}</span> OAuth Clients</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="pficon pficon-help"></span></h2>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<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 for this client." class="pficon pficon-help"></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">
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<h2><span>{{oauth.name}}</span> Scope Mappings</h2>
|
<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="pficon pficon-help"></span></h2>
|
||||||
<p class="subtitle"></p>
|
<p class="subtitle"></p>
|
||||||
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
|
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
|
@ -20,16 +20,17 @@
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input ng-model="oauth.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
<input ng-model="oauth.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!oauth.fullScopeAllowed">
|
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!oauth.fullScopeAllowed">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><span class="text">Realm Roles</span></legend>
|
<legend><span class="text">Realm Roles</span> <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="pficon pficon-help"></span></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</label>
|
<label class="control-label" for="available">Available Roles <span tooltip-placement="right" tooltip="Realm level roles that can be assigned to scope." class="pficon pficon-help"></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"
|
||||||
|
@ -37,15 +38,15 @@
|
||||||
</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="Move right" 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">Assign role</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" 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">Unassign role</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
<label class="control-label" for="assigned">Assigned Roles <span tooltip-placement="right" tooltip="Realm level roles assigned to scope." class="pficon pficon-help"></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"
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
-
|
-
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="realm-composite">Effective Roles</label>
|
<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="pficon pficon-help"></span></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"
|
||||||
|
@ -80,11 +81,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Select an application to view or modify additional roles to assign." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="targetApp">
|
<div class="form-group" data-ng-show="targetApp">
|
||||||
<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="app-available">Available Roles</label>
|
<label class="control-label" for="app-available">Available Roles <span tooltip-placement="right" tooltip="Application roles available to be assigned." class="pficon pficon-help"></span></label>
|
||||||
<select id="app-available" class="form-control" multiple size="5"
|
<select id="app-available" class="form-control" multiple size="5"
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedApplicationRoles"
|
ng-model="selectedApplicationRoles"
|
||||||
|
@ -92,15 +94,15 @@
|
||||||
</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="addApplicationRole()" tooltip="Move right" 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="Move left" 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="app-assigned">Assigned Roles</label>
|
<label class="control-label" for="app-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned application roles." class="pficon pficon-help"></span></label>
|
||||||
<select id="app-assigned" class="form-control" multiple size=5
|
<select id="app-assigned" class="form-control" multiple size=5
|
||||||
ng-multiple="true"
|
ng-multiple="true"
|
||||||
ng-model="selectedApplicationMappings"
|
ng-model="selectedApplicationMappings"
|
||||||
|
@ -111,7 +113,7 @@
|
||||||
-
|
-
|
||||||
</div>
|
</div>
|
||||||
<div class="select-title">
|
<div class="select-title">
|
||||||
<label class="control-label" for="app-composite">Effective Roles</label>
|
<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="pficon pficon-help"></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"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<h2><span>{{realm.realm}}</span> Credentials</h2>
|
<h2><span>{{realm.realm}}</span> Credentials</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">
|
||||||
<legend><span class="text">Realm Credentials Settings</span></legend>
|
<legend><span class="text">Realm Credentials Settings</span> <span tooltip-placement="right" tooltip="Credential types required for every user. Changing this value may require the user to configure any new credentials the next time they log in." class="pficon pficon-help"></span></legend>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="user" class="control-label two-lines">Required User Credentials</label>
|
<label class="col-sm-2 control-label" for="user" class="control-label two-lines">Required User Credentials</label>
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<legend><span class="text">Realm Password Policy</span> <span tooltip-placement="right" tooltip="Specify required password format. How many times a password is hashed before it is stored in database can be set as well." class="pficon pficon-help"></span></legend>
|
<legend><span class="text">Realm Password Policy</span> <span tooltip-placement="right" tooltip="Specify required password format. You can also set how many times a password is hashed before it is stored in database." class="pficon pficon-help"></span></legend>
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<caption class="hidden">Table of Password Policies</caption>
|
<caption class="hidden">Table of Password Policies</caption>
|
||||||
<thead>
|
<thead>
|
||||||
|
|
|
@ -51,9 +51,9 @@
|
||||||
<option value="" selected> Select an Application...</option>
|
<option value="" selected> Select an Application...</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<span tooltip-placement="right" tooltip="Select an application to view/modify assigned default roles." class="pficon pficon-help"></span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Select an application to view/modify assigned default roles." class="pficon pficon-help"></span>
|
||||||
</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">
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<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="Public key for verifying signed tokens and other documents." class="pficon pficon-help"></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="pficon pficon-help"></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">
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
<fieldset class="border-top">
|
<fieldset class="border-top">
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-sm-2 control-label" for="ssoSessionIdleTimeout">SSO Session Idle Timeout</label>
|
<label class="col-sm-2 control-label" for="ssoSessionIdleTimeout">SSO Session Idle Timeout</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="number" required min="1"
|
<input class="form-control" type="number" required min="1"
|
||||||
max="31536000" data-ng-model="realm.ssoSessionIdleTimeout"
|
max="31536000" data-ng-model="realm.ssoSessionIdleTimeout"
|
||||||
id="ssoSessionIdleTimeout" name="ssoSessionIdleTimeout"/>
|
id="ssoSessionIdleTimeout" name="ssoSessionIdleTimeout"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 select-kc">
|
<div class="col-sm-4 select-kc">
|
||||||
<select name="ssoSessionIdleTimeoutUnit" data-ng-model="realm.ssoSessionIdleTimeoutUnit" >
|
<select name="ssoSessionIdleTimeoutUnit" data-ng-model="realm.ssoSessionIdleTimeoutUnit" >
|
||||||
<option data-ng-selected="!realm.ssoSessionIdleTimeoutUnit">Seconds</option>
|
<option data-ng-selected="!realm.ssoSessionIdleTimeoutUnit">Seconds</option>
|
||||||
<option>Minutes</option>
|
<option>Minutes</option>
|
||||||
|
@ -29,17 +29,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-sm-2 control-label" for="ssoSessionMaxLifespan">SSO Session Max Lifespan</label>
|
<label class="col-sm-2 control-label" for="ssoSessionMaxLifespan">SSO Session Max Lifespan</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="number" required min="1"
|
<input class="form-control" type="number" required min="1"
|
||||||
max="31536000" data-ng-model="realm.ssoSessionMaxLifespan"
|
max="31536000" data-ng-model="realm.ssoSessionMaxLifespan"
|
||||||
id="ssoSessionMaxLifespan" name="ssoSessionMaxLifespan"/>
|
id="ssoSessionMaxLifespan" name="ssoSessionMaxLifespan"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 select-kc">
|
<div class="col-sm-4 select-kc">
|
||||||
<select name="ssoSessionMaxLifespanUnit" data-ng-model="realm.ssoSessionMaxLifespanUnit" >
|
<select name="ssoSessionMaxLifespanUnit" data-ng-model="realm.ssoSessionMaxLifespanUnit" >
|
||||||
<option data-ng-selected="!realm.ssoSessionMaxLifespanUnit">Seconds</option>
|
<option data-ng-selected="!realm.ssoSessionMaxLifespanUnit">Seconds</option>
|
||||||
<option>Minutes</option>
|
<option>Minutes</option>
|
||||||
|
@ -49,17 +50,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-sm-2 control-label" for="accessTokenLifespan">Access Token Lifespan</label>
|
<label class="col-sm-2 control-label" for="accessTokenLifespan">Access Token Lifespan</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="number" required min="1"
|
<input class="form-control" type="number" required min="1"
|
||||||
max="31536000" data-ng-model="realm.accessTokenLifespan"
|
max="31536000" data-ng-model="realm.accessTokenLifespan"
|
||||||
id="accessTokenLifespan" name="accessTokenLifespan"/>
|
id="accessTokenLifespan" name="accessTokenLifespan"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 select-kc">
|
<div class="col-sm-4 select-kc">
|
||||||
<select name="accessTokenLifespanUnit" data-ng-model="realm.accessTokenLifespanUnit" >
|
<select name="accessTokenLifespanUnit" data-ng-model="realm.accessTokenLifespanUnit" >
|
||||||
<option data-ng-selected="!realm.accessTokenLifespanUnit">Seconds</option>
|
<option data-ng-selected="!realm.accessTokenLifespanUnit">Seconds</option>
|
||||||
<option>Minutes</option>
|
<option>Minutes</option>
|
||||||
|
@ -69,15 +71,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label" for="accessCodeLifespan">Access code lifespan</label>
|
<label class="col-sm-2 control-label" for="accessCodeLifespan">Client login timeout</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespan" id="accessCodeLifespan" name="accessCodeLifespan">
|
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespan" id="accessCodeLifespan" name="accessCodeLifespan">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 select-kc">
|
<div class="col-sm-4 select-kc">
|
||||||
<select name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
|
<select name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
|
||||||
<option data-ng-selected="!realm.accessCodeLifespanUnit">Seconds</option>
|
<option data-ng-selected="!realm.accessCodeLifespanUnit">Seconds</option>
|
||||||
<option>Minutes</option>
|
<option>Minutes</option>
|
||||||
|
@ -87,15 +90,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Max time an application or oauth client has to finish the access token protocol. This should normally be 1 minute." class="pficon pficon-help"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group input-select">
|
<div class="form-group input-select">
|
||||||
<label class="col-sm-2 control-label" for="accessCodeLifespanUserAction" class="two-lines">Access code user action lifespan</label>
|
<label class="col-sm-2 control-label" for="accessCodeLifespanUserAction" class="two-lines">Login user action lifespan</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-4">
|
||||||
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespanUserAction" id="accessCodeLifespanUserAction" name="accessCodeLifespanUserAction">
|
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespanUserAction" id="accessCodeLifespanUserAction" name="accessCodeLifespanUserAction">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 select-kc">
|
<div class="col-sm-4 select-kc">
|
||||||
<select name="accessCodeLifespanUserActionUnit" data-ng-model="realm.accessCodeLifespanUserActionUnit">
|
<select name="accessCodeLifespanUserActionUnit" data-ng-model="realm.accessCodeLifespanUserActionUnit">
|
||||||
<option data-ng-selected="!realm.accessCodeLifespanUserActionUnit">Seconds</option>
|
<option data-ng-selected="!realm.accessCodeLifespanUserActionUnit">Seconds</option>
|
||||||
<option>Minutes</option>
|
<option>Minutes</option>
|
||||||
|
@ -105,6 +109,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<span tooltip-placement="right" tooltip="Max time a user has to complete a login and perform actions like update password or configure totp. This is recommended to be relatively long. 5 minutes or more." class="pficon pficon-help"></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">
|
||||||
|
|
|
@ -18,24 +18,25 @@
|
||||||
<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-4 kc-multiline">
|
<div class="col-sm-6 kc-multiline">
|
||||||
<input class="form-control" type="password" id="password" name="password" data-ng-model="password" placeholder="Temporary 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()" data-ng-show="password">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>
|
||||||
</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-4">
|
<div class="col-sm-5">
|
||||||
<button class="btn btn-danger" type="submit" data-ng-click="resetPasswordEmail()" >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-4" 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()">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>
|
||||||
|
|
|
@ -23,14 +23,14 @@
|
||||||
<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-4">
|
<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-4">
|
<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="/^[^\<\>\\\/]*$/">
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<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-4">
|
<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>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<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-4">
|
<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>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<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-4">
|
<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>
|
||||||
|
@ -64,22 +64,23 @@
|
||||||
|
|
||||||
<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-4">
|
<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="pficon pficon-help"></span>
|
<span tooltip-placement="right" tooltip="A disabled user cannot login." class="pficon pficon-help"></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-4">
|
<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-4">
|
<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="pficon pficon-help"></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>
|
||||||
|
@ -89,7 +90,7 @@
|
||||||
<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. '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="pficon pficon-help"></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="pficon pficon-help"></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">
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot data-ng-hide="!users || users.length == 0">
|
<tfoot data-ng-show="users && users.length > 5">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
<div class="table-nav">
|
<div class="table-nav">
|
||||||
|
|
|
@ -775,7 +775,7 @@ public class UsersResource {
|
||||||
|
|
||||||
UserCredentialModel cred = RepresentationToModel.convertCredential(pass);
|
UserCredentialModel cred = RepresentationToModel.convertCredential(pass);
|
||||||
session.users().updateCredential(realm, user, cred);
|
session.users().updateCredential(realm, user, cred);
|
||||||
user.addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
|
if (pass.isTemporary()) user.addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue