Merge remote-tracking branch 'upstream/master'
|
@ -2,9 +2,6 @@
|
|||
"themes": [{
|
||||
"name" : "base",
|
||||
"types": [ "admin", "account", "login" ]
|
||||
}, {
|
||||
"name" : "patternfly",
|
||||
"types": [ "admin", "account", "login" ]
|
||||
}, {
|
||||
"name" : "keycloak",
|
||||
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Keycloak Admin Console</title>
|
||||
|
||||
<link rel="icon" href="${resourceUrl}/img/favicon.ico">
|
||||
|
||||
<link rel="stylesheet" href="${resourceUrl}/css/styles.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="${resourceUrl}/img/favicon.ico">
|
||||
<#if properties.styles?has_content>
|
||||
<#list properties.styles?split(' ') as style>
|
||||
<link href="${resourceUrl}/${style}" rel="stylesheet" />
|
||||
</#list>
|
||||
</#if>
|
||||
|
||||
<script type="text/javascript">
|
||||
var authUrl = '${authUrl}';
|
||||
|
@ -34,18 +35,24 @@
|
|||
<script src="${resourceUrl}/js/controllers/users.js" type="text/javascript"></script>
|
||||
<script src="${resourceUrl}/js/loaders.js" type="text/javascript"></script>
|
||||
<script src="${resourceUrl}/js/services.js" type="text/javascript"></script>
|
||||
|
||||
<style>
|
||||
[ng\:cloak], [ng-cloak], .ng-cloak {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body data-ng-controller="GlobalCtrl" data-ng-cloak data-ng-show="auth.user">
|
||||
|
||||
<body class="admin-console" data-ng-controller="GlobalCtrl" data-ng-cloak data-ng-show="auth.user">
|
||||
<nav class="navbar navbar-default navbar-pf" role="navigation" data-ng-include data-src="resourceUrl + '/partials/menu.html'">
|
||||
</nav>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div data-ng-view id="view"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feedback-aligner" data-ng-show="notification">
|
||||
<div class="alert alert-{{notification.type}} alert-dismissable">
|
||||
<button type="button" class="close">
|
||||
<span class="pficon pficon-close" data-ng-click="notification = null"/>
|
||||
</button>
|
||||
|
||||
<div class="feedback-aligner" data-ng-show="notification" data-ng-click="notification = null">
|
||||
<div class="alert alert-{{notification.type}}">
|
||||
<span class="pficon pficon-ok" ng-show="notification.type == 'success'"></span>
|
||||
<span class="pficon pficon-info" ng-show="notification.type == 'info'"></span>
|
||||
<span class="pficon-layered" ng-show="notification.type == 'danger'">
|
||||
|
@ -60,18 +67,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<header class="navbar navbar-default navbar-pf navbar-main header">
|
||||
<div data-ng-include data-src="resourceUrl + '/partials/menu.html'"></div>
|
||||
</header>
|
||||
|
||||
<div class="container">
|
||||
<div data-ng-view id="view"></div>
|
||||
<div id="loading" class="loading-backdrop">
|
||||
<div class="loading">
|
||||
<span>Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loading" class="loading">Loading...</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1078,11 +1078,9 @@ module.directive('collapsable', function() {
|
|||
// collapsable form fieldsets
|
||||
module.directive('uncollapsed', function() {
|
||||
return function(scope, element, attrs) {
|
||||
element.prepend('<span class="kc-icon-collapse toggle-icons">Icon: collapse</span>');
|
||||
element.prepend('<i class="toggle-class fa fa-angle-down"></i> ');
|
||||
element.click(function() {
|
||||
$(this).toggleClass('collapsed');
|
||||
$(this).find('.toggle-icons').toggleClass('kc-icon-collapse').toggleClass('kc-icon-expand');
|
||||
$(this).find('.toggle-icons').text($(this).text() == "Icon: expand" ? "Icon: collapse" : "Icon: expand");
|
||||
$(this).find('.toggle-class').toggleClass('fa-angle-down').toggleClass('fa-angle-right');
|
||||
$(this).parent().find('.form-group').toggleClass('hidden');
|
||||
});
|
||||
}
|
||||
|
@ -1091,12 +1089,10 @@ module.directive('uncollapsed', function() {
|
|||
// collapsable form fieldsets
|
||||
module.directive('collapsed', function() {
|
||||
return function(scope, element, attrs) {
|
||||
element.prepend('<span class="kc-icon-expand toggle-icons">Icon: expand</span>');
|
||||
element.prepend('<i class="toggle-class fa fa-angle-right"></i> ');
|
||||
element.parent().find('.form-group').toggleClass('hidden');
|
||||
element.click(function() {
|
||||
$(this).toggleClass('collapsed');
|
||||
$(this).find('.toggle-icons').toggleClass('kc-icon-collapse').toggleClass('kc-icon-expand');
|
||||
$(this).find('.toggle-icons').text($(this).text() == "Icon: expand" ? "Icon: collapse" : "Icon: expand");
|
||||
$(this).find('.toggle-class').toggleClass('fa-angle-down').toggleClass('fa-angle-right');
|
||||
$(this).parent().find('.form-group').toggleClass('hidden');
|
||||
});
|
||||
}
|
||||
|
@ -1282,7 +1278,7 @@ module.directive('kcSave', function ($compile, Notifications) {
|
|||
return {
|
||||
restrict: 'A',
|
||||
link: function ($scope, elem, attr, ctrl) {
|
||||
elem.addClass("btn btn-primary btn-lg");
|
||||
elem.addClass("btn btn-primary");
|
||||
elem.attr("type","submit");
|
||||
elem.bind('click', function() {
|
||||
$scope.$apply(function() {
|
||||
|
@ -1313,7 +1309,7 @@ module.directive('kcReset', function ($compile, Notifications) {
|
|||
return {
|
||||
restrict: 'A',
|
||||
link: function ($scope, elem, attr, ctrl) {
|
||||
elem.addClass("btn btn-default btn-lg");
|
||||
elem.addClass("btn btn-default");
|
||||
elem.attr("type","submit");
|
||||
elem.bind('click', function() {
|
||||
$scope.$apply(function() {
|
||||
|
@ -1333,7 +1329,7 @@ module.directive('kcCancel', function ($compile, Notifications) {
|
|||
return {
|
||||
restrict: 'A',
|
||||
link: function ($scope, elem, attr, ctrl) {
|
||||
elem.addClass("btn btn-default btn-lg");
|
||||
elem.addClass("btn btn-default");
|
||||
elem.attr("type","submit");
|
||||
}
|
||||
}
|
||||
|
@ -1343,7 +1339,7 @@ module.directive('kcDelete', function ($compile, Notifications) {
|
|||
return {
|
||||
restrict: 'A',
|
||||
link: function ($scope, elem, attr, ctrl) {
|
||||
elem.addClass("btn btn-danger btn-lg");
|
||||
elem.addClass("btn btn-danger");
|
||||
elem.attr("type","submit");
|
||||
}
|
||||
}
|
||||
|
@ -1409,27 +1405,39 @@ module.directive('kcReadOnly', function() {
|
|||
return d;
|
||||
});
|
||||
|
||||
module.directive('kcNavigation', function ($compile, Notifications) {
|
||||
module.directive('kcMenu', function () {
|
||||
return {
|
||||
scope: true,
|
||||
restrict: 'E',
|
||||
replace: true,
|
||||
templateUrl: resourceUrl + '/templates/kc-navigation.html',
|
||||
|
||||
compile: function(element, attrs){
|
||||
if (!attrs.kcSocial) {
|
||||
attrs.kcSocial = false;
|
||||
}
|
||||
}
|
||||
templateUrl: resourceUrl + '/templates/kc-menu.html'
|
||||
}
|
||||
});
|
||||
|
||||
module.directive('kcNavigationClient', function () {
|
||||
module.directive('kcTabsRealm', function () {
|
||||
return {
|
||||
scope: true,
|
||||
restrict: 'E',
|
||||
replace: true,
|
||||
templateUrl: resourceUrl + '/templates/kc-navigation-client.html'
|
||||
templateUrl: resourceUrl + '/templates/kc-tabs-realm.html'
|
||||
}
|
||||
});
|
||||
|
||||
module.directive('kcTabsUser', function () {
|
||||
return {
|
||||
scope: true,
|
||||
restrict: 'E',
|
||||
replace: true,
|
||||
templateUrl: resourceUrl + '/templates/kc-tabs-user.html'
|
||||
}
|
||||
});
|
||||
|
||||
module.directive('kcTabsClient', function () {
|
||||
return {
|
||||
scope: true,
|
||||
restrict: 'E',
|
||||
replace: true,
|
||||
templateUrl: resourceUrl + '/templates/kc-tabs-client.html'
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1526,3 +1534,51 @@ module.filter('capitalize', function() {
|
|||
return result;
|
||||
};
|
||||
});
|
||||
|
||||
module.directive('kcSidebarResize', function ($window) {
|
||||
return function (scope, element) {
|
||||
function resize() {
|
||||
var navBar = angular.element(document.getElementsByClassName('navbar-pf')).height();
|
||||
var container = angular.element(document.getElementById("view").getElementsByTagName("div")[0]).height();
|
||||
var height = Math.max(container, window.innerHeight - navBar - 3);
|
||||
|
||||
element[0].style['min-height'] = height + 'px';
|
||||
}
|
||||
|
||||
resize();
|
||||
|
||||
var w = angular.element($window);
|
||||
scope.$watch(function () {
|
||||
return {
|
||||
'h': window.innerHeight,
|
||||
'w': window.innerWidth
|
||||
};
|
||||
}, function () {
|
||||
resize();
|
||||
}, true);
|
||||
w.bind('resize', function () {
|
||||
scope.$apply();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
module.directive('kcTooltip', function($compile) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
replace: false,
|
||||
terminal: true,
|
||||
priority: 1000,
|
||||
link: function link(scope,element, attrs) {
|
||||
var tooltip = element[0].innerText;
|
||||
element[0].innerText = null;
|
||||
element.addClass('hidden');
|
||||
|
||||
var label = angular.element(element.parent().children()[0]);
|
||||
label.append(' <i class="fa fa-question-circle text-muted" tooltip="' + tooltip + '" tooltip-placement="right"></i>');
|
||||
|
||||
$compile(label)(scope);
|
||||
}
|
||||
};
|
||||
});
|
|
@ -689,10 +689,30 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, serverInfo
|
|||
$scope.path = $location.path().substring(1).split("/");
|
||||
});
|
||||
|
||||
$scope.$watch('client', function() {
|
||||
function isChanged() {
|
||||
if (!angular.equals($scope.client, client)) {
|
||||
$scope.changed = true;
|
||||
return true;
|
||||
}
|
||||
if ($scope.newRedirectUri && $scope.newRedirectUri.length > 0) {
|
||||
return true;
|
||||
}
|
||||
if ($scope.newWebOrigin && $scope.newWebOrigin.length > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$scope.$watch('client', function() {
|
||||
$scope.changed = isChanged();
|
||||
}, true);
|
||||
|
||||
$scope.$watch('newRedirectUri', function() {
|
||||
$scope.changed = isChanged();
|
||||
}, true);
|
||||
|
||||
|
||||
$scope.$watch('newWebOrigin', function() {
|
||||
$scope.changed = isChanged();
|
||||
}, true);
|
||||
|
||||
$scope.deleteWebOrigin = function(index) {
|
||||
|
@ -705,12 +725,21 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, serverInfo
|
|||
$scope.deleteRedirectUri = function(index) {
|
||||
$scope.client.redirectUris.splice(index, 1);
|
||||
}
|
||||
|
||||
$scope.addRedirectUri = function() {
|
||||
$scope.client.redirectUris.push($scope.newRedirectUri);
|
||||
$scope.newRedirectUri = "";
|
||||
}
|
||||
|
||||
$scope.save = function() {
|
||||
if ($scope.newRedirectUri && $scope.newRedirectUri.length > 0) {
|
||||
$scope.addRedirectUri();
|
||||
}
|
||||
|
||||
if ($scope.newWebOrigin && $scope.newWebOrigin.length > 0) {
|
||||
$scope.addWebOrigin();
|
||||
}
|
||||
|
||||
if ($scope.samlServerSignature == true) {
|
||||
$scope.client.attributes["saml.server.signature"] = "true";
|
||||
} else {
|
||||
|
|
|
@ -626,7 +626,7 @@ module.controller('RealmDefaultRolesCtrl', function ($scope, Realm, realm, clien
|
|||
|
||||
});
|
||||
|
||||
module.controller('RealmIdentityProviderCtrl', function($scope, $filter, $upload, $http, realm, instance, providerFactory, IdentityProvider, serverInfo, $location, Notifications, Dialog) {
|
||||
module.controller('RealmIdentityProviderCtrl', function($scope, $filter, $upload, $http, $route, realm, instance, providerFactory, IdentityProvider, serverInfo, $location, Notifications, Dialog) {
|
||||
console.log('RealmIdentityProviderCtrl');
|
||||
|
||||
$scope.realm = angular.copy(realm);
|
||||
|
@ -832,7 +832,6 @@ module.controller('RealmIdentityProviderCtrl', function($scope, $filter, $upload
|
|||
$scope.callbackUrl = $location.absUrl().replace(/\/admin.*/, "/realms/") + realm.realm + "/broker/" ;
|
||||
|
||||
$scope.addProvider = function(provider) {
|
||||
console.log('addProvider');
|
||||
$location.url("/create/identity-provider/" + realm.realm + "/" + provider.id);
|
||||
};
|
||||
|
||||
|
@ -857,22 +856,22 @@ module.controller('RealmIdentityProviderCtrl', function($scope, $filter, $upload
|
|||
IdentityProvider.save({
|
||||
realm: $scope.realm.realm, alias: ''
|
||||
}, $scope.identityProvider, function () {
|
||||
$location.url("/realms/" + realm.realm + "/identity-provider-settings");
|
||||
Notifications.success("The " + $scope.identityProvider.name + " provider has been created.");
|
||||
$location.url("/realms/" + realm.realm + "/identity-provider-settings/provider/" + $scope.identityProvider.providerId + "/" + $scope.identityProvider.alias);
|
||||
Notifications.success("The " + $scope.identityProvider.alias + " provider has been created.");
|
||||
});
|
||||
} else {
|
||||
IdentityProvider.update({
|
||||
realm: $scope.realm.realm,
|
||||
id: $scope.identityProvider.internalId
|
||||
}, $scope.identityProvider, function () {
|
||||
$location.url("/realms/" + realm.realm + "/identity-provider-settings");
|
||||
Notifications.success("The " + $scope.identityProvider.name + " provider has been update.");
|
||||
$route.reload();
|
||||
Notifications.success("The " + $scope.identityProvider.alias + " provider has been update.");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.cancel = function() {
|
||||
$location.url("/realms/" + realm.realm + "/identity-provider-settings");
|
||||
$route.reload();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,127 +1,108 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<li><a href="#/realms/{{realm.realm}}/defense/headers">Headers</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/defense/brute-force">Brute Force Protection</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/defense/brute-force">Brute Force Detection</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Brute Force Protection <span tooltip-placement="right" tooltip="Seeks to prevent hackers trying to guess passwords. It remembers failures and will lock out users that have too many failutres for a certain amount of time. WARNING: Vulnerable to denail of service attacks see docs for more details." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="bruteForceProtected">Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="bruteForceProtected">Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.bruteForceProtected" name="bruteForceProtected" id="bruteForceProtected" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="failureFactor">Failure Factor</label>
|
||||
<label class="col-md-2 control-label" for="failureFactor">Failure Factor</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-2">
|
||||
<input class="form-control" type="number" min="1" max="31536000" id="failureFactor" name="failureFactor" data-ng-model="realm.failureFactor" autofocus
|
||||
required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="How many failures before wait is triggered." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>How many failures before wait is triggered.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="waitIncrement">Wait Increment</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="waitIncrement">Wait Increment</label>
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.waitIncrement"
|
||||
id="waitIncrement" name="waitIncrement"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="waitIncrementUnit" data-ng-model="realm.waitIncrementUnit" >
|
||||
<select class="form-control" name="waitIncrementUnit" data-ng-model="realm.waitIncrementUnit" >
|
||||
<option data-ng-selected="!realm.waitIncrementUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="When failure threshold has been met, how much time should the user be locked out?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>When failure threshold has been met, how much time should the user be locked out?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="quickLoginCheckMilliSeconds">Quick Login Check Milli Seconds</label>
|
||||
<label class="col-md-2 control-label" for="quickLoginCheckMilliSeconds">Quick Login Check Milli Seconds</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-2">
|
||||
<input class="form-control" type="number" min="1" max="31536000" id="quickLoginCheckMilliSeconds" name="quickLoginCheckMilliSeconds" data-ng-model="realm.quickLoginCheckMilliSeconds" autofocus
|
||||
required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If a failure happens concurrently too quickly, lock out the user." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If a failure happens concurrently too quickly, lock out the user.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="minimumQuickLoginWait">Minimum Quick Login Wait</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="minimumQuickLoginWait">Minimum Quick Login Wait</label>
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.minimumQuickLoginWait"
|
||||
id="minimumQuickLoginWait" name="minimumQuickLoginWait"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="minimumQuickLoginWaitUnit" data-ng-model="realm.minimumQuickLoginWaitUnit" >
|
||||
<select class="form-control" name="minimumQuickLoginWaitUnit" data-ng-model="realm.minimumQuickLoginWaitUnit" >
|
||||
<option data-ng-selected="!realm.minimumQuickLoginWaitUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="How long to wait after a quick login failure." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>How long to wait after a quick login failure.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="maxFailureWait">Max Wait</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="maxFailureWait">Max Wait</label>
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.maxFailureWait"
|
||||
id="maxFailureWait" name="maxFailureWait"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="maxFailureWaitUnit" data-ng-model="realm.maxFailureWaitUnit" >
|
||||
<select class="form-control" name="maxFailureWaitUnit" data-ng-model="realm.maxFailureWaitUnit" >
|
||||
<option data-ng-selected="!realm.maxFailureWaitUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Max time a user will be locked out." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Max time a user will be locked out.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="realm.bruteForceProtected">
|
||||
<label class="col-sm-2 control-label" for="maxDeltaTime">Failure Reset Time</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="maxDeltaTime">Failure Reset Time</label>
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.maxDeltaTime"
|
||||
id="maxDeltaTime" name="maxDeltaTime"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="maxDeltaTimeUnit" data-ng-model="realm.maxDeltaTimeUnit" >
|
||||
<select class="form-control" name="maxDeltaTimeUnit" data-ng-model="realm.maxDeltaTimeUnit" >
|
||||
<option data-ng-selected="!realm.maxDeltaTimeUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="When will failure count be reset?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>When will failure count be reset?</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,61 +1,61 @@
|
|||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="username">Username</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="username">Username</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.username" name="username" id="username" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="claimName">Name</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="claimName">Name</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.name" name="claimName" id="claimName" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="email">Email</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="email">Email</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.email" name="email" id="email" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="gender">Gender</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="gender">Gender</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.gender" name="gender" id="gender" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="address">Address</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="address">Address</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.address" name="address" id="address" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="locale">Locale</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="locale">Locale</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.locale" name="locale" id="locale" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="phone">Phone</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="phone">Phone</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.phone" name="phone" id="phone" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="profile">Profile URL</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="profile">Profile URL</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.profile" name="profile" id="profile" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="picture">Picture URL</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="picture">Picture URL</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.picture" name="picture" id="picture" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="website">Website</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="website">Website</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="claims.website" name="website" id="website" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,36 +1,34 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Clustering</a></li>
|
||||
<li class="active">{{node.host}}</li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Cluster Nodes</a></li>
|
||||
<li>Add Node</li>
|
||||
</ol>
|
||||
<h2 data-ng-show="create || registered"><span>{{client.clientId}} Clustering</span></h2>
|
||||
<h2 data-ng-hide="create || registered">Cluster node on host <span>{{node.host}}</span> not registered!</h2>
|
||||
|
||||
<form class="form-horizontal" name="clusteringForm" novalidate kc-read-only="!access.manageClients" data-ng-show="create || registered">
|
||||
<fieldset >
|
||||
<legend><span class="text">Configuration of cluster node</span></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="host">Host</label>
|
||||
<label class="col-md-2 control-label" for="host">Host</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-disabled="!create" class="form-control" type="text" id="host" name="host" data-ng-model="node.host">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="lastRegistration">Last Registration</label>
|
||||
<label class="col-md-2 control-label" for="lastRegistration">Last Registration</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-disabled="true" class="form-control" type="text" id="lastRegistration" name="lastRegistration" data-ng-model="node.lastRegistration">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button data-kc-save data-ng-show="create">Register node</button>
|
||||
<button data-kc-delete data-ng-hide="create" data-ng-click="unregisterNode()">Unregister node</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button data-kc-save data-ng-show="create">Save</button>
|
||||
<button data-kc-delete data-ng-hide="create" data-ng-click="unregisterNode()">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,27 +1,26 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Clustering</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2 data-ng-hide="create"><span>{{client.clientId}}</span> Clustering</h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="clusteringForm" novalidate kc-read-only="!access.manageClients">
|
||||
<legend><span class="text">Basic configuration</span></legend>
|
||||
<fieldset >
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="nodeReRegistrationTimeout">Node Re-registration Timeout</label>
|
||||
<label class="col-md-2 control-label" for="nodeReRegistrationTimeout">Node Re-registration Timeout</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required
|
||||
max="31536000" data-ng-model="client.nodeReRegistrationTimeout"
|
||||
id="nodeReRegistrationTimeout" name="nodeReRegistrationTimeout"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="nodeReRegistrationTimeoutUnit" data-ng-model="client.nodeReRegistrationTimeoutUnit" >
|
||||
<select class="form-control" name="nodeReRegistrationTimeoutUnit" data-ng-model="client.nodeReRegistrationTimeoutUnit" >
|
||||
<option data-ng-selected="!client.nodeReRegistrationTimeoutUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -30,11 +29,14 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Interval to specify max time for registered clients cluster nodes to re-register. If cluster node won't send re-registration request to Keycloak within this time, it will be unregistered from Keycloak" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Interval to specify max time for registered clients cluster nodes to re-register. If cluster node won't send re-registration request to Keycloak within this time, it will be unregistered from Keycloak</kc-tooltip>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button data-kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button data-kc-save data-ng-show="changed">Save</button>
|
||||
<button data-kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
@ -47,6 +49,7 @@
|
|||
<div class="pull-right">
|
||||
<a class="btn btn-primary" tooltip="Manually register cluster node. This is usually not needed as cluster node should be registered automatically by adapter"
|
||||
tooltip-placement="bottom" href="#/register-node/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Register node manually</a>
|
||||
<a class="btn btn-primary" data-ng-click="testNodesAvailable()" data-ng-show="nodeRegistrations && nodeRegistrations.length > 0">Test cluster availability</a>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -61,15 +64,12 @@
|
|||
<td>{{node.lastRegistration}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!nodeRegistrations || nodeRegistrations.length == 0">
|
||||
<td>No registered cluster nodes available</td>
|
||||
<td class="text-muted">No registered cluster nodes available</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm && nodeRegistrations && nodeRegistrations.length > 0">
|
||||
<a class="btn btn-primary" data-ng-click="testNodesAvailable()">Test cluster availability</a>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,27 +1,28 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Claims</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2 data-ng-hide="create"><span>{{client.clientId}}</span> Credentials</h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageClients">
|
||||
<fieldset >
|
||||
<legend><span class="text">Client Secret</span></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="secret">Secret</label>
|
||||
<label class="col-md-2 control-label" for="secret">Secret</label>
|
||||
<div class="col-sm-6">
|
||||
<input readonly kc-select-action="click" class="form-control" type="text" id="secret" name="secret" data-ng-model="secret">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg">Regenerate Secret
|
||||
</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="changePassword()" class="btn btn-primary">Regenerate Secret</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,279 +1,274 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Settings</li>
|
||||
<li data-ng-show="create">Add Client</li>
|
||||
<li data-ng-hide="create">{{client.clientId}}</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li class="active">Add Client</li>
|
||||
</ol>
|
||||
<h2 data-ng-hide="create"><span>{{client.clientId}}</span> Client Settings</h2>
|
||||
<h2 data-ng-show="create" class="pull-left"><span>{{realm.realm}}</span> Add Client</h2>
|
||||
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-show="create"><strong>Add Client</strong></h1>
|
||||
<h1 data-ng-hide="create"><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="clientForm" novalidate kc-read-only="!access.manageClients">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="clientId">Client ID <span class="required" data-ng-show="create">*</span></label>
|
||||
<label class="col-md-2 control-label" for="clientId">Client ID <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="client.clientId" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Specifies ID referenced in URI and tokens. For example 'my-client'" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Specifies ID referenced in URI and tokens. For example 'my-client'</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="name">Name </label>
|
||||
<label class="col-md-2 control-label" for="name">Name </label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="client.name" autofocus>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
|
||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.enabled" name="enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Disabled clients cannot initiate a login or have obtain access tokens." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Disabled clients cannot initiate a login or have obtain access tokens.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="consentRequired">Consent Required</label>
|
||||
<label class="col-md-2 control-label" for="consentRequired">Consent Required</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.consentRequired" name="consentRequired" id="consentRequired" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If enabled users have to consent to client access." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If enabled users have to consent to client access.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
|
||||
<label class="col-md-2 control-label" for="directGrantsOnly">Direct Grants Only</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.directGrantsOnly" name="directGrantsOnly" id="directGrantsOnly" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="When enabled, client can only obtain grants from grant REST API." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>When enabled, client can only obtain grants from grant REST API.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="protocol">Client Protocol</label>
|
||||
<label class="col-md-2 control-label" for="protocol">Client Protocol</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="protocol"
|
||||
<div>
|
||||
<select class="form-control" id="protocol"
|
||||
ng-change="changeProtocol()"
|
||||
ng-model="protocol"
|
||||
ng-options="aProtocol for aProtocol in protocols">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="'OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.
|
||||
'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>'OpenID connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.
|
||||
'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="protocol == 'openid-connect'">
|
||||
<label class="col-sm-2 control-label" for="accessType">Access Type</label>
|
||||
<label class="col-md-2 control-label" for="accessType">Access Type</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="accessType"
|
||||
<div>
|
||||
<select class="form-control" id="accessType"
|
||||
ng-change="changeAccessType()"
|
||||
ng-model="accessType"
|
||||
ng-options="aType for aType in accessTypes">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="'Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>'Confidential' clients require a secret to initiate login protocol. 'Public' clients do not require a secret. 'Bearer-only' clients are web services that never initiate a login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlServerSignature">Include AuthnStatement</label>
|
||||
<label class="col-md-2 control-label" for="samlServerSignature">Include AuthnStatement</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlAuthnStatement" ng-click="switchChange()" name="samlAuthnStatement" id="samlAuthnStatement" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Should a statement specifying the method and timestamp be included in login responses?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Should a statement specifying the method and timestamp be included in login responses?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlServerSignature">Sign Documents</label>
|
||||
<label class="col-md-2 control-label" for="samlServerSignature">Sign Documents</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlServerSignature" ng-click="switchChange()" name="samlServerSignature" id="samlServerSignature" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Should SAML documents be signed by the realm?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Should SAML documents be signed by the realm?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlAssertionSignature">Sign Assertions</label>
|
||||
<label class="col-md-2 control-label" for="samlAssertionSignature">Sign Assertions</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlAssertionSignature" ng-click="switchChange()" name="samlAssertionSignature" id="samlAssertionSignature" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="signatureAlgorithm">Signature Algorithm</label>
|
||||
<label class="col-md-2 control-label" for="signatureAlgorithm">Signature Algorithm</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="signatureAlgorithm"
|
||||
<div>
|
||||
<select class="form-control" id="signatureAlgorithm"
|
||||
ng-change="changeAlgorithm()"
|
||||
ng-model="signatureAlgorithm"
|
||||
ng-options="alg for alg in signatureAlgorithms">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The signature algorithm to use to sign documents." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The signature algorithm to use to sign documents.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlEncrypt">Encrypt Assertions</label>
|
||||
<label class="col-md-2 control-label" for="samlEncrypt">Encrypt Assertions</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlEncrypt" ng-click="switchChange()" name="samlEncrypt" id="samlEncrypt" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Should SAML assertions be encrypted with client's public key using AES?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Should SAML assertions be encrypted with client's public key using AES?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlClientSignature">Client Signature Required</label>
|
||||
<label class="col-md-2 control-label" for="samlClientSignature">Client Signature Required</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlClientSignature" ng-click="switchChange()" name="samlClientSignature" id="samlClientSignature" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Will the client sign their saml requests and responses? And should they be validated?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Will the client sign their saml requests and responses? And should they be validated?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlForcePostBinding">Force POST Binding</label>
|
||||
<label class="col-md-2 control-label" for="samlForcePostBinding">Force POST Binding</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlForcePostBinding" ng-click="switchChange()" name="samlForcePostBinding" id="samlForcePostBinding" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Always use POST binding for responses." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Always use POST binding for responses.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="frontchannelLogout">Front Channel Logout</label>
|
||||
<label class="col-md-2 control-label" for="frontchannelLogout">Front Channel Logout</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlForceNameIdFormat">Force Name ID Format</label>
|
||||
<label class="col-md-2 control-label" for="samlForceNameIdFormat">Force Name ID Format</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="samlForceNameIdFormat" ng-click="switchChange()" name="samlForceNameIdFormat" id="samlForceNameIdFormat" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Ignore requested NameID subject format and use admin console configured one." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Ignore requested NameID subject format and use admin console configured one.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="samlNameIdFormat">Name ID Format</label>
|
||||
<label class="col-md-2 control-label" for="samlNameIdFormat">Name ID Format</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="samlNameIdFormat"
|
||||
<div>
|
||||
<select class="form-control" id="samlNameIdFormat"
|
||||
ng-change="changeNameIdFormat()"
|
||||
ng-model="nameIdFormat"
|
||||
ng-options="format for format in nameIdFormats">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The name ID format to use for the subject." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The name ID format to use for the subject.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix block" data-ng-show="!client.bearerOnly">
|
||||
<label class="col-sm-2 control-label" for="newRedirectUri">Valid Redirect URIs <span class="required" data-ng-show="create && protocol != 'saml'">*</span></label>
|
||||
<div class="col-sm-6 multiple" ng-repeat="redirectUri in client.redirectUris">
|
||||
<div class="input-group kc-item-deletable">
|
||||
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
|
||||
name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)">
|
||||
Delete</button>
|
||||
</span>
|
||||
<label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> Valid Redirect URIs</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group" ng-repeat="(i, redirectUri) in client.redirectUris track by $index">
|
||||
<input class="form-control" ng-model="client.redirectUris[i]">
|
||||
<div class="input-group-addon">
|
||||
<i class="pficon pficon-remove" style="width: 10px;" data-ng-click="deleteRedirectUri($index)"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 multiple">
|
||||
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri"
|
||||
placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
|
||||
data-ng-class="{'input-below':client.redirectUris.length}" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
|
||||
</span>
|
||||
<input class="form-control" ng-model="newRedirectUri" id="newRedirectUri">
|
||||
<div class="input-group-addon">
|
||||
<i class="pficon pficon-add" style="width: 10px;" data-ng-click="newRedirectUri.length > 0 && addRedirectUri()"></i>
|
||||
</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. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request." class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
|
||||
<kc-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. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="!client.bearerOnly && !create">
|
||||
<label class="col-sm-2 control-label" for="baseUrl">Base URL</label>
|
||||
<label class="col-md-2 control-label" for="baseUrl">Base URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="client.baseUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Default URL to use when the auth server needs to redirect or link back to the client." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Default URL to use when the auth server needs to redirect or link back to the client.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="create || protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="adminUrl">Admin URL</label>
|
||||
<label class="col-md-2 control-label" for="adminUrl">Admin URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
||||
data-ng-model="client.adminUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="URL to the admin interface of the client. Set this if the client 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 client." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>URL to the admin interface of the client. Set this if the client 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 client.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="masterSamlUrl">Master SAML Processing URL</label>
|
||||
<label class="col-md-2 control-label" for="masterSamlUrl">Master SAML Processing URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
||||
data-ng-model="client.adminUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overiden for each binding and service in the Fine Grain SAML Endpoint Configuration." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overiden for each binding and service in the Fine Grain SAML Endpoint Configuration.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="!client.bearerOnly && !create && protocol == 'openid-connect'">
|
||||
<label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
|
||||
<div class="col-sm-6 multiple" ng-repeat="webOrigin in client.webOrigins">
|
||||
<div class="input-group kc-item-deletable">
|
||||
<input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
|
||||
name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)">
|
||||
Delete</button>
|
||||
</span>
|
||||
<label class="col-md-2 control-label" for="newWebOrigin">Web Origin</label>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group" ng-repeat="(i, webOrigin) in client.webOrigins track by $index">
|
||||
<input class="form-control" ng-model="client.webOrigins[i]">
|
||||
<div class="input-group-addon">
|
||||
<i class="pficon pficon-remove" style="width: 10px;" data-ng-click="deleteWebOrigin($index)"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 multiple" >
|
||||
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin"
|
||||
placeholder="New Web Origin..." data-ng-model="newWebOrigin"
|
||||
data-ng-class="{'input-below':client.webOrigins.length}" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
|
||||
</span>
|
||||
<input class="form-control" ng-model="newWebOrigin" id="newWebOrigin">
|
||||
<div class="input-group-addon">
|
||||
<i class="pficon pficon-add" style="width: 10px;" data-ng-click="newWebOrigin.length > 0 && addWebOrigin()"></i>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
|
||||
<kc-tooltip>Allowed CORS origins.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset data-ng-show="protocol == 'saml'">
|
||||
<legend collapsed><span class="text">Fine Grain SAML Endpoint Configuration</span> <span tooltip-placement="right" tooltip="Expand this section to configure exact URLs for Assertion Consumer and Single Logout Service." class="fa fa-info-circle"></span></legend>
|
||||
<legend collapsed><span class="text">Fine Grain SAML Endpoint Configuration</span> <kc-tooltip>Expand this section to configure exact URLs for Assertion Consumer and Single Logout Service.</kc-tooltip></legend>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="consumerServicePost">Assertion Consumer Service POST Binding URL</label>
|
||||
<label class="col-md-2 control-label" for="consumerServicePost">Assertion Consumer Service POST Binding URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="consumerServiceRedirect">Assertion Consumer Service Redirect Binding URL</label>
|
||||
<label class="col-md-2 control-label" for="consumerServiceRedirect">Assertion Consumer Service Redirect Binding URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="logoutPostBinding">Logout Service POST Binding URL</label>
|
||||
<label class="col-md-2 control-label" for="logoutPostBinding">Logout Service POST Binding URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||
<label class="col-sm-2 control-label" for="logoutPostBinding">Logout Service Redirect Binding URL</label>
|
||||
<label class="col-md-2 control-label" for="logoutPostBinding">Logout Service Redirect Binding URL</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="client.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageClients">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageClients">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Client</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,27 +0,0 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Identity Provider</li>
|
||||
</ol>
|
||||
<h2 data-ng-hide="create"><span>{{client.clientId}}</span> Identity Provider Settings</h2>
|
||||
<form class="form-horizontal" name="identityProviderForm" novalidate>
|
||||
<div class="form-group" ng-repeat="identityProvider in identityProviders">
|
||||
<legend><span class="text">{{identityProvider.identityProvider.name}}</span></legend>
|
||||
<div data-ng-show="client.identityProviders[$index].id">
|
||||
<label class="col-sm-2 control-label" for="{{identityProvider.identityProvider.id}}retrieveToken">Can Retrieve Token <span tooltip-placement="right" tooltip="If disabled, the client can not retrieve tokens from the identity provider." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-sm-4">
|
||||
<input ng-model="client.identityProviders[$index].retrieveToken" name="identityProvider.identityProvider.id + 'retrieveToken'" id="identityProvider.identityProvider.id + 'retrieveToken'" value="true" onoffswitchmodel />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right form-actions">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
|
@ -1,19 +1,20 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<li class="active"><a href="">Client Import</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{client.clientId}}</span> Client Import <span tooltip-placement="right" tooltip="Helper utility for importing client definitions from various formats." class="fa fa-info-circle"></span></h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li>Import Client</li>
|
||||
</ol>
|
||||
|
||||
<h1><strong>Import Client</strong></h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="configFormats">Format Option</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="configFormats">Format Option</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="configFormats" name="configFormats" ng-model="configFormat" ng-options="format.name for format in configFormats">
|
||||
<div>
|
||||
<select class="form-control" id="configFormats" name="configFormats" ng-model="configFormat" ng-options="format.name for format in configFormats">
|
||||
<option value="" selected> Select a Format </option>
|
||||
</select>
|
||||
</div>
|
||||
|
@ -21,22 +22,25 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">Import File </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label">Import File </label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
{{files[0].name}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">Import</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">Import</button>
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,38 +1,38 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Installation</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</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 clients." class="fa fa-info-circle"></span></h2>
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="configFormats">Format Option</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-1 control-label" for="configFormats">Format Option</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats">
|
||||
<div>
|
||||
<select class="form-control" id="configFormats" name="configFormats" ng-change="changeFormat()" ng-model="configFormat" ng-options="a for a in configFormats">
|
||||
<option value="" selected> Select a Format </option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="margin-top">
|
||||
<div class="form-group" ng-show="installation">
|
||||
<div class="col-sm-12">
|
||||
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit" ng-show="installation">Download</a>
|
||||
<textarea class="form-control" rows="20" kc-select-action="click">{{installation}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<div class="pull-right form-actions" ng-show="installation">
|
||||
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit">Download</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,52 +1,53 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Keys</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> Key Pair and Certificate <span tooltip-placement="right" tooltip="Clients's key pair and certificate. Used for more confidential interaction between client and auth server." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend collapsed><span class="text">Import Keys and Cert</span> <span tooltip-placement="right" tooltip="Upload the client's key pair and cert." class="fa fa-info-circle"></span></legend>
|
||||
<legend collapsed><span class="text">Import Keys and Cert</span> <kc-tooltip>Upload the client's key pair and cert.</kc-tooltip></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="uploadKeyFormat"
|
||||
<div>
|
||||
<select class="form-control" id="uploadKeyFormat"
|
||||
ng-model="uploadKeyFormat"
|
||||
ng-options="f for f in keyFormats">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Java keystore or PKCS12 archive format." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Archive alias for your private key and certificate." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="uploadKeyPassword" name="uploadKeyPassword" data-ng-model="uploadKeyPassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the private key in the archive" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadStorePassword">Store Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="uploadStorePassword">Store Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the archive itself" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">Upload Keys </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label">Upload Keys </label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
|
@ -62,46 +63,46 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-group col-sm-10" data-ng-hide="!keyInfo.privateKey">
|
||||
<legend collapsed><span class="text">Download Keys and Cert</span> <span tooltip-placement="right" tooltip="Client key pair, cert, and realm certificate will be stuffed into a PKCS12 or Java keystore that you can use in your clients." class="fa fa-info-circle"></span></legend>
|
||||
<legend collapsed><span class="text">Download Keys and Cert</span> <kc-tooltip>Client key pair, cert, and realm certificate will be stuffed into a PKCS12 or Java keystore that you can use in your clients.</kc-tooltip></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="downloadKeyFormat"
|
||||
<div>
|
||||
<select class="form-control" id="downloadKeyFormat"
|
||||
ng-model="jks.format"
|
||||
ng-options="f for f in keyFormats">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Java keystore or PKCS12 archive format." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="keyAlias">Key Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyAlias">Key Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Archive alias for your private key and certificate." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the private key in the archive" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="realmAlias">Realm Certificate Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="realmAlias">Realm Certificate Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="realmAlias" name="realmAlias" data-ng-model="jks.realmAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Realm certificate is stored in archive too. This is the alias to it." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Realm certificate is stored in archive too. This is the alias to it.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storePassword">Store Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storePassword">Store Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the archive itself" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="pull-right">
|
||||
|
@ -110,9 +111,9 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-group col-sm-10">
|
||||
<legend><span class="text">Keys and Certificate</span> <span tooltip-placement="right" tooltip="Keys and cert in PEM format." class="fa fa-info-circle"></span></legend>
|
||||
<legend><span class="text">Keys and Certificate</span> <kc-tooltip>Keys and cert in PEM format.</kc-tooltip></legend>
|
||||
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="publicKey">Private key</label>
|
||||
<label class="col-md-2 control-label" for="publicKey">Private key</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="Private" name="publicKey" class="form-control" rows="5"
|
||||
|
@ -120,7 +121,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="publicKey">Public key</label>
|
||||
<label class="col-md-2 control-label" for="publicKey">Public key</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="publicKey" name="publicKey" class="form-control" rows="5"
|
||||
|
@ -128,7 +129,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="publicKey">Certificate</label>
|
||||
<label class="col-md-2 control-label" for="publicKey">Certificate</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="certificate" name="certificate" class="form-control" rows="5"
|
||||
|
@ -142,5 +143,6 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,24 +1,28 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Clients <span tooltip-placement="right" tooltip="Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles." class="fa fa-info-circle"></span></h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span><strong>Clients</strong> {{realm.realm|capitalize}}</span>
|
||||
<kc-tooltip>Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles.</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="3">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.clientId"
|
||||
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
|
||||
<button type="submit" class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by client clientId.">
|
||||
Icon: search
|
||||
</button>
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search.clientId" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" href="#/import/client/{{realm.realm}}" data-ng-show="importButton">Import</a>
|
||||
<a class="btn btn-primary" href="#/create/client/{{realm.realm}}">Create</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="clients.length == 0">
|
||||
|
@ -35,13 +39,12 @@
|
|||
<a href="{{client.baseUrl}}" data-ng-show="client.baseUrl">{{client.baseUrl}}</a>
|
||||
<span data-ng-hide="client.baseUrl">Not defined</span>
|
||||
</tr>
|
||||
<tr data-ng-show="clients.length == 0">
|
||||
<td>No clients available</td>
|
||||
<tr data-ng-show="(clients | filter:search).length == 0">
|
||||
<td class="text-muted" colspan="3" data-ng-show="search.clientId">No results</td>
|
||||
<td class="text-muted" colspan="3" data-ng-hide="search.clientId">No clients available</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="feedback warning inline" data-ng-show="search && clients.length == 0">
|
||||
<p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,29 +1,32 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">{{client.clientId}} Mappers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a></li>
|
||||
<li class="active">Add Builtin Protocol Mappers</li>
|
||||
</ol>
|
||||
<h2><span>{{realm.realm}} </span>Add Builtin Protocol Mappers <span tooltip-placement="right" tooltip="Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Add Builtin Protocol Mapper</strong></h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="4">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
|
||||
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
|
||||
<button type="submit" class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by mapper name.">
|
||||
Icon: search
|
||||
</button>
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-primary" data-ng-click="add()">Add Selected</button>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="mappers.length == 0">
|
||||
|
@ -45,5 +48,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,29 +1,33 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Protocol Mappers</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{realm.realm}} </span> {{client.clientId}} {{client.protocol}} Protocol Mappers <span tooltip-placement="right" tooltip="Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="4">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
|
||||
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
|
||||
<button type="submit" class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by mapper name.">
|
||||
Icon: search
|
||||
</button>
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" href="#/create/client/{{realm.realm}}/{{client.id}}/mappers">Create</a>
|
||||
<a class="btn btn-primary" href="#/realms/{{realm.realm}}/clients/{{client.id}}/add-mappers">Add Builtin</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="mappers.length == 0">
|
||||
|
@ -43,5 +47,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,31 +1,32 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Revocation</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2 data-ng-hide="create"><span>{{client.clientId}}</span> Revocation Policies</h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="notBefore">Not Before</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="notBefore">Not Before</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Revoke any tokens issued before this date for this client." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Revoke any tokens issued before this date for this client.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear
|
||||
</button>
|
||||
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now
|
||||
</button>
|
||||
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="If admin URL is configured for this client, push this policy to that client." tooltip-placement="bottom">Push
|
||||
</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="clear()" class="btn btn-default">Clear</button>
|
||||
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-default">Set To Now</button>
|
||||
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary" tooltip="If admin URL is configured for this client, push this policy to that client." tooltip-placement="bottom">Push</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,141 +1,135 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">Roles</a></li>
|
||||
<li class="active">Add role</li>
|
||||
<li data-ng-show="create">Add role</li>
|
||||
<li data-ng-hide="create">{{role.name}}</li>
|
||||
</ol>
|
||||
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">Roles</a></li>
|
||||
<li class="active">{{role.name}}</li>
|
||||
</ol>
|
||||
|
||||
<h2 data-ng-hide="create" class="pull-left"><span>{{client.clientId}}</span> {{role.name}} Client Role</h2>
|
||||
<h2 data-ng-show="create" class="pull-left"><span>{{client.clientId}}</span> Add Client Role</h2>
|
||||
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
|
||||
<h1 data-ng-show="create"><strong>Add Role</strong></h1>
|
||||
<h1 data-ng-hide="create"><strong>Role</strong> {{role.name}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients">
|
||||
|
||||
<fieldset class="border-top">
|
||||
<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-md-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
|
||||
required data-ng-readonly="!create">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
|
||||
<!-- Replaced by the textarea above <input type="text" id="description" name="description" data-ng-model="role.description" autofocus
|
||||
required> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-hide="create">
|
||||
<label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
|
||||
</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>
|
||||
<kc-tooltip>When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageClients">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageClients">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
|
||||
<legend uncollapsed><span class="text">Composite Realm Roles</span> </legend>
|
||||
<div class="form-group col-sm-10">
|
||||
<div class="controls changing-selectors">
|
||||
<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>
|
||||
<legend uncollapsed><span class="text">Composite Roles</span> </legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<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>
|
||||
</button>
|
||||
<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>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned">Associated Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="form-group" ng-show="clients.length > 0 && !create && (compositeSwitch || role.composite)">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
|
||||
<fieldset ng-show="clients.length > 0 && !create && (compositeSwitch || role.composite)">
|
||||
<legend uncollapsed><span class="text">Composite Client Roles</span> </legend>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="clients">Client <span tooltip-placement="right" tooltip="Select an client to view/modify roles associated with this composite." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="c.clientId for c in clients">
|
||||
<option value="" selected> Select a Client...</option>
|
||||
</select>
|
||||
<div class="col-md-10">
|
||||
<div class="row" data-ng-hide="compositeClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-show="compositeClient">
|
||||
<div class="controls changing-selectors client col-sm-10">
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="available-client">Available Roles <span tooltip-placement="right" tooltip="Roles from this client that you can associate to this composite role." class="fa fa-info-circle"></span></label>
|
||||
<div class="row" data-ng-show="compositeClient">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Roles from this client that you can associate to this composite role.</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<button class="btn btn-default" type="submit" ng-click="addClientRole()" tooltip="Associate role" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right">Move right</span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left">Move left</span>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="assigned-client">Associated Roles <span tooltip-placement="right" tooltip="Client roles associated with this composite role." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned-client">Associated Roles</label>
|
||||
<kc-tooltip>Client roles associated with this composite role.</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageClients">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageClients">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<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>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,55 +1,29 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Roles</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> Client Roles</h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="3" data-ng-show="access.manageClients">
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="#/create/role/{{realm.realm}}/clients/{{client.id}}">Add Role</a>
|
||||
<!-- <button class="remove disabled">Remove</button> -->
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<!--<tr data-ng-show="roles && roles.length > 5">
|
||||
<th class="kc-table-actions" colspan="3">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." class="search">
|
||||
<button class="icon-search" tooltip-placement="right"
|
||||
tooltip="Search by role name.">
|
||||
Icon: search
|
||||
</button>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
-->
|
||||
<tr data-ng-hide="!roles || roles.length == 0">
|
||||
<th>Role Name</th>
|
||||
<th>Composite</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--<tfoot data-ng-show="roles && roles.length > 5">
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<div class="table-nav">
|
||||
<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="next">Next
|
||||
page</a><a href="#" class="last">Last page</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
-->
|
||||
<tbody>
|
||||
<tr ng-repeat="role in roles">
|
||||
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles/{{role.id}}">{{role.name}}</a></td>
|
||||
|
@ -61,5 +35,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,62 +1,63 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
||||
<li class="active">SAML {{keyType}} Key Export</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> SAML {{keyType}} Key Export <span tooltip-placement="right" tooltip="Export Client key and certificate to file." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Export SAML Key</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="form-group col-sm-10">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="downloadKeyFormat">Archive Format</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="downloadKeyFormat"
|
||||
<div>
|
||||
<select class="form-control" id="downloadKeyFormat"
|
||||
ng-model="jks.format"
|
||||
ng-options="f for f in keyFormats">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Java keystore or PKCS12 archive format." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="keyAlias">Key Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyAlias">Key Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="keyAlias" name="keyAlias" data-ng-model="jks.keyAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Archive alias for your private key and certificate." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Archive alias for your private key and certificate.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="!keyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyPassword">Key Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="keyPassword" name="keyPassword" data-ng-model="jks.keyPassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the private key in the archive" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the private key in the archive</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="realmAlias">Realm Certificate Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="realmAlias">Realm Certificate Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="realmAlias" name="realmAlias" data-ng-model="jks.realmAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Realm certificate is stored in archive too. This is the alias to it." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Realm certificate is stored in archive too. This is the alias to it.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storePassword">Store Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storePassword">Store Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="storePassword" name="storePassword" data-ng-model="jks.storePassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the archive itself" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="pull-right">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-primary" type="submit" data-ng-click="download()">Download</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,59 +1,62 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
||||
<li class="active">SAML {{keyType}} Key Import</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> SAML {{keyType}} Key Import <span tooltip-placement="right" tooltip="Upload Key." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Import SAML Key</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
||||
<label class="col-md-2 control-label" for="uploadKeyFormat">Archive Format</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="uploadKeyFormat"
|
||||
<div>
|
||||
<select class="form-control" id="uploadKeyFormat"
|
||||
ng-model="uploadKeyFormat"
|
||||
ng-options="f for f in keyFormats">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Java keystore or PKCS12 archive format." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Java keystore or PKCS12 archive format.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="uploadKeyAlias">Key Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="uploadKeyAlias" name="uploadKeyAlias" data-ng-model="uploadKeyAlias" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Archive alias for your certificate." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Archive alias for your certificate.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="uploadStorePassword">Store Password</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="uploadStorePassword">Store Password</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="uploadStorePassword" name="uploadStorePassword" data-ng-model="uploadStorePassword" autofocus required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password to access the archive itself" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password to access the archive itself</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">Import File </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label">Import File </label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
{{files[0].name}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">Import</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">Import</button>
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,18 +1,19 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">SAML Keys</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> SAML Keys <span tooltip-placement="right" tooltip="Client certificates used to sign and encrypt documents." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="keyForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.client.signature'] == 'true'">
|
||||
<legend uncollapsed><span class="text">Signing Key</span> <span tooltip-placement="right" tooltip="SAML Signing Key." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">Signing Key</span> <kc-tooltip>SAML Signing Key.</kc-tooltip></legend>
|
||||
<div class="form-group" data-ng-hide="!signingKeyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="signingPrivateKey">Private key</label>
|
||||
<label class="col-md-2 control-label" for="signingPrivateKey">Private key</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="signingPrivateKey" name="signingPrivateKey" class="form-control" rows="5"
|
||||
|
@ -20,15 +21,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="!signingKeyInfo.certificate">
|
||||
<label class="col-sm-2 control-label" for="signingCert">Certificate</label>
|
||||
<label class="col-md-2 control-label" for="signingCert">Certificate</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="signingCert" name="signingCert" class="form-control" rows="5"
|
||||
kc-select-action="click" readonly>{{signingKeyInfo.certificate}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="pull-right">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-primary" type="submit" data-ng-click="generateSigningKey()">Generate new keys</button>
|
||||
<button class="btn btn-primary" type="submit" data-ng-click="importSigningKey()">Import</button>
|
||||
<button class="btn btn-primary" type="submit" data-ng-hide="!signingKeyInfo.certificate" data-ng-click="exportSigningKey()">Export</button>
|
||||
|
@ -36,9 +37,9 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-group col-sm-10" data-ng-show="client.attributes['saml.encrypt'] == 'true'">
|
||||
<legend uncollapsed><span class="text">Encryption Key</span> <span tooltip-placement="right" tooltip="SAML Encryption Key." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">Encryption Key</span> <kc-tooltip>SAML Encryption Key.</kc-tooltip></legend>
|
||||
<div class="form-group" data-ng-hide="!encryptionKeyInfo.privateKey">
|
||||
<label class="col-sm-2 control-label" for="encryptionPrivateKey">Private key</label>
|
||||
<label class="col-md-2 control-label" for="encryptionPrivateKey">Private key</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="encryptionPrivateKey" name="encryptionPrivateKey" class="form-control" rows="5"
|
||||
|
@ -46,15 +47,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="!encryptionKeyInfo.certificate">
|
||||
<label class="col-sm-2 control-label" for="encryptionCert">Certificate</label>
|
||||
<label class="col-md-2 control-label" for="encryptionCert">Certificate</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<textarea type="text" id="encryptionCert" name="encryptionCert" class="form-control" rows="5"
|
||||
kc-select-action="click" readonly>{{encryptionKeyInfo.certificate}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="pull-right">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button class="btn btn-primary" type="submit" data-ng-click="generateEncryptionKey()">Generate new keys</button>
|
||||
<button class="btn btn-primary" type="submit" data-ng-click="importEncryptionKey()">Import</button>
|
||||
<button class="btn btn-primary" type="submit" data-ng-hide="!encryptionKeyInfo.certificate" data-ng-click="exportEncryptionKey()">Export</button>
|
||||
|
@ -62,5 +63,6 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,61 +1,61 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Scope</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</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>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<h2><span>{{client.clientId}}</span> Scope Mappings </h2>
|
||||
<p class="subtitle"></p>
|
||||
<form class="form-horizontal" name="allowScope" novalidate kc-read-only="!access.manageClients">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fullScopeAllowed">Full Scope Allowed</label>
|
||||
<kc-tooltip>Allows you to disable all restrictions.</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="client.fullScopeAllowed" ng-click="changeFullScopeAllowed()" name="fullScopeAllowed" id="fullScopeAllowed" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Allows you to disable all restrictions." class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.fullScopeAllowed">
|
||||
<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>
|
||||
<div class="form-group col-sm-10">
|
||||
<div class="controls changing-selectors">
|
||||
<div class="select-title">
|
||||
<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">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles that can be assigned to scope.</kc-tooltip>
|
||||
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<button class="btn btn-default" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right">Assign role</span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left">Unassign role</span>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<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>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
||||
<kc-tooltip>Realm level roles assigned to scope.</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
-
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<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="col-md-3">
|
||||
<label class="control-label" for="realm-composite">Effective Roles </label>
|
||||
<kc-tooltip>Assigned realm level roles that may have been inherited from a composite role.</kc-tooltip>
|
||||
<select id="realm-composite" class="form-control" multiple size=5
|
||||
ng-disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
@ -64,54 +64,46 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset ng-show="clients.length > 0">
|
||||
<legend><span class="text">Client Roles</span> </legend>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="clients">Client <span tooltip-placement="right" tooltip="Select a client to view or modify additional roles to assign." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in (clients|remove:client:'id')" ng-disabled="false">
|
||||
<option value="" selected> Select a Client </option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="targetClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row" data-ng-hide="targetClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
</div>
|
||||
<div class="form-group" ng-show="targetClient">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="client-available">Available Roles <span tooltip-placement="right" tooltip="Client roles available to be assigned." class="fa fa-info-circle"></span></label>
|
||||
<div class="row" data-ng-show="targetClient">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-available">Available Roles</label>
|
||||
<kc-tooltip>Client roles available to be assigned.</kc-tooltip>
|
||||
<select id="client-available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<button class="btn btn-default" type="submit" ng-click="addClientRole()" tooltip="Assign role" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right">Move right</span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left">Move left</span>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="client-assigned">Assigned Roles <span tooltip-placement="right" tooltip="Assigned client roles." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-assigned">Assigned Roles</label>
|
||||
<kc-tooltip>Assigned client roles.</kc-tooltip>
|
||||
<select id="client-assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
-
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="client-composite">Effective Roles <span tooltip-placement="right" tooltip="Assigned client roles that may have been inherited from a composite role." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">Effective Roles</label>
|
||||
<kc-tooltip>Assigned client roles that may have been inherited from a composite role.</kc-tooltip>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
ng-disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
@ -120,7 +112,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,21 +1,22 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li class="active">Client Sessions</li>
|
||||
<li>{{client.clientId}}</li>
|
||||
</ol>
|
||||
<h2><span>{{client.clientId}}</span> Active Sessions <span tooltip-placement="right" tooltip="View active sessions for this client. Allows you to see which users are active and when they logged in." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Client</strong> {{client.clientId|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-client></kc-tabs-client>
|
||||
|
||||
<form class="form-horizontal" name="sessionStats">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="activeSessions">Active Sessions</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="activeSessions">Active Sessions</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="activeSessions" name="activeSessions" data-ng-model="count" ng-disabled="true">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Total number of active user sessions for this client." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Total number of active user sessions for this client.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
@ -53,5 +54,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,39 +1,38 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<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>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<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>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<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-md-2 control-label" for="xFrameOptions"><a href="http://tools.ietf.org/html/rfc7034">X-Frame-Options</a></label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" id="xFrameOptions" type="text" ng-model="realm.browserSecurityHeaders.xFrameOptions">
|
||||
</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>
|
||||
<kc-tooltip>Click on label link for more information. The default value prevents pages from being included via non-origin iframes.</kc-tooltip>
|
||||
</div>
|
||||
<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-md-2 control-label" for="contentSecurityPolicy"><a href="http://www.w3.org/TR/CSP/">Content-Security-Policy</a></label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" id="contentSecurityPolicy" type="text" ng-model="realm.browserSecurityHeaders.contentSecurityPolicy">
|
||||
</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>
|
||||
<kc-tooltip>Click on label link for more information. The default value prevents pages from being included via non-origin iframes.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div data-ng-hide="access.viewRealm">
|
||||
<h2 ><span>{{realm.realm}}</span></h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,100 +1,94 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<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}}/user-federation">Federation</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{instance.displayName}}</a></li>
|
||||
<li class="active">Provider Settings</li>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li class="active">Add Federation Provider</li>
|
||||
</ol>
|
||||
<h2 class="pull-left" data-ng-hide="create">Provider Settings</h2>
|
||||
<h2 class="pull-left" data-ng-show="create">Add Federation Provider</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<h1 data-ng-hide="create"><strong>User Federation Provider</strong> {{instance.displayName|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add User Federation Provider</strong></h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-sm-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Display name of provider when linked in admin console." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Priority of provider when doing a user lookup. Lowest first." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
</div>
|
||||
<div data-ng-repeat="option in providerFactory.options" class="form-group">
|
||||
<label class="col-sm-2 control-label">{{option|capitalize}} </label>
|
||||
<label class="col-md-2 control-label">{{option|capitalize}} </label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" data-ng-model="instance.config[ option ]" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Sync settings</span></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does periodic full synchronization of provider users to Keycloak should be enabled or not" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does periodic full synchronization of provider users to Keycloak should be enabled or not</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="fullSyncEnabled">
|
||||
<label class="col-sm-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Period for full synchronization in seconds" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Period for full synchronization in seconds</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does periodic synchronization of changed or newly created provider users to Keycloak should be enabled or not" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does periodic synchronization of changed or newly created provider users to Keycloak should be enabled or not</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="changedSyncEnabled">
|
||||
<label class="col-sm-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Period for synchronization of changed or newly created provider users in seconds" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Period for synchronization of changed or newly created provider users in seconds</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-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="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button>
|
||||
<button class="btn btn-danger" data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,118 +1,111 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<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}}/user-federation">Federation</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{instance.displayName}}</a></li>
|
||||
<li class="active">Kerberos Settings</li>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li class="active">Add Kerberos Provider</li>
|
||||
</ol>
|
||||
<h2 class="pull-left" data-ng-hide="create">Kerberos Provider Settings <span tooltip-placement="right" tooltip="Use Kerberos federation provider just if you don't need Kerberos integrated with LDAP! For Kerberos+LDAP use LDAP Federation provider instead"
|
||||
class="fa fa-info-circle"></span></h2>
|
||||
<h2 class="pull-left" data-ng-show="create">Add Standalone Kerberos Provider <span tooltip-placement="right" tooltip="Use Kerberos federation provider just if you don't need Kerberos integrated with LDAP! For Kerberos+LDAP use LDAP Federation provider instead"
|
||||
class="fa fa-info-circle"></span></h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Kerberos User Federation Provider</strong> {{instance.displayName|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add Kerberos User Federation Provider</strong></h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-sm-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Display name of provider when linked in admin console." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Priority of provider when doing a user lookup. Lowest first." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="kerberosRealm">Kerberos Realm <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> Kerberos Realm</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="kerberosRealm" type="text" ng-model="instance.config.kerberosRealm" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Name of kerberos realm. For example FOO.ORG" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Name of kerberos realm. For example FOO.ORG</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="serverPrincipal">Server principal <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> Server principal</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="serverPrincipal" type="text" ng-model="instance.config.serverPrincipal" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="keyTab">KeyTab <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> KeyTab</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="keyTab" type="text" ng-model="instance.config.keyTab" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="debug">Debug </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="debug">Debug </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable debug logging to standard output for Krb5LoginModule." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable debug logging to standard output for Krb5LoginModule.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="allowPasswordAuthentication">Allow Password Authentication </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="allowPasswordAuthentication">Allow Password Authentication </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.allowPasswordAuthentication" id="allowPasswordAuthentication" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable possibility of username/password authentication against Kerberos database" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable possibility of username/password authentication against Kerberos database</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowPasswordAuthentication">
|
||||
<label class="col-sm-2 control-label" for="editMode">Edit mode</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="editMode"
|
||||
<label class="col-md-2 control-label" for="editMode">Edit mode</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="editMode"
|
||||
ng-model="instance.config.editMode">
|
||||
<option>READ_ONLY</option>
|
||||
<option>UNSYNCED</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means user can change his password in Keycloak database and this one will be used instead of Kerberos password then" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means user can change his password in Keycloak database and this one will be used instead of Kerberos password then</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="updateProfileFirstLogin">Update Profile First Login </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">Update Profile First Login </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Update profile on first login" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Update profile on first login</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,51 +1,42 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<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}}/user-federation">Federation</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation/providers/{{instance.providerName}}/{{instance.id}}">{{instance.displayName}}</a></li>
|
||||
<li class="active">LDAP Settings</li>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
<li data-ng-hide="create">{{instance.displayName|capitalize}}</li>
|
||||
<li data-ng-show="create">Add User Federation Provider</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation Providers</a></li>
|
||||
<li class="active">Add LDAP Provider</li>
|
||||
</ol>
|
||||
<h2 class="pull-left" data-ng-hide="create">LDAP Provider Settings</h2>
|
||||
<h2 class="pull-left" data-ng-show="create">Add LDAP Provider</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>LDAP User Federation Provider</strong> {{instance.displayName|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add LDAP User Federation Provider</strong></h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-sm-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="providerId">Provider ID </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="providerId" type="text" ng-model="instance.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="consoleDisplayName">Console display name </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.displayName" placeholder="defaults to id">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Display name of provider when linked in admin console." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Display name of provider when linked in admin console.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="priority">Priority </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="priority" type="text" ng-model="instance.priority">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Priority of provider when doing a user lookup. Lowest first." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Priority of provider when doing a user lookup. Lowest first.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="editMode">Edit mode</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="editMode"
|
||||
<label class="col-md-2 control-label" for="editMode">Edit mode</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="editMode"
|
||||
ng-model="instance.config.editMode">
|
||||
<option>READ_ONLY</option>
|
||||
<option>WRITABLE</option>
|
||||
|
@ -53,204 +44,209 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="READ_ONLY is a read only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>READ_ONLY is a read only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="syncRegistrations">Sync Registrations</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="syncRegistrations">Sync Registrations</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.syncRegistrations" name="syncRegistrations" id="syncRegistrations" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Should newly created users be created within LDAP store? Priority effects which provider is chose to sync the new user." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Should newly created users be created within LDAP store? Priority effects which provider is chose to sync the new user.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="vendor">Vendor<span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="vendor"
|
||||
<label class="col-md-2 control-label" for="vendor"><span class="required">*</span> Vendor</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="vendor"
|
||||
ng-model="instance.config.vendor"
|
||||
ng-options="vendor.id as vendor.name for vendor in ldapVendors"
|
||||
required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="LDAP vendor (provider)" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>LDAP vendor (provider)</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="usernameLDAPAttribute">Username LDAP attribute<span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="usernameLDAPAttribute"><span class="required">*</span> Username LDAP attribute</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="usernameLDAPAttribute" type="text" ng-model="instance.config.usernameLDAPAttribute" placeholder="LDAP attribute for uid" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it's 'uid'. For Active directory it's usually 'sAMAccountName' or 'cn'" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it's 'uid'. For Active directory it's usually 'sAMAccountName' or 'cn'</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="userObjectClasses">User Object Classes<span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="userObjectClasses"><span class="required">*</span> User Object Classes</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="userObjectClasses" type="text" ng-model="instance.config.userObjectClasses" placeholder="LDAP User Object Classes (div. by comma)" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="All values of LDAP objectClass attribute for users in LDAP divided by comma" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>All values of LDAP objectClass attribute for users in LDAP divided by comma</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="ldapConnectionUrl">Connection URL<span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="ldapConnectionUrl"><span class="required">*</span> Connection URL</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapConnectionUrl" type="text" ng-model="instance.config.connectionUrl" placeholder="LDAP connection URL" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Connection URL to your LDAP server" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Connection URL to your LDAP server</kc-tooltip>
|
||||
<div class="col-sm-4" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" data-ng-click="testConnection()">Test connection</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="ldapBaseDn">Base DN <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="ldapBaseDn"><span class="required">*</span> Base DN</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapBaseDn" type="text" ng-model="instance.config.baseDn" placeholder="LDAP Base DN" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Base DN of LDAP tree where your data are. Base DN is usually ancestor of User DN Suffix" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Base DN of LDAP tree where your data are. Base DN is usually ancestor of User DN Suffix</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="ldapUserDnSuffix">User DN Suffix <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="ldapUserDnSuffix"><span class="required">*</span> User DN Suffix</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapUserDnSuffix" type="text" ng-model="instance.config.userDnSuffix" placeholder="LDAP User DN Suffix" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Base DN of LDAP tree where your users are. This DN is parent of all DNs of LDAP users" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Base DN of LDAP tree where your users are. This DN is parent of all DNs of LDAP users</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="ldapBindDn">Bind DN <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="ldapBindDn"><span class="required">*</span> Bind DN</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapBindDn" type="text" ng-model="instance.config.bindDn" placeholder="LDAP Bind DN" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="DN of LDAP admin, which will be used by Keycloak to access LDAP server" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>DN of LDAP admin, which will be used by Keycloak to access LDAP server</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="ldapBindCredential">Bind Credential <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="ldapBindCredential"><span class="required">*</span> Bind Credential</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="ldapBindCredential" type="password" ng-model="instance.config.bindCredential" placeholder="LDAP Bind Credentials" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Password of LDAP admin" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Password of LDAP admin</kc-tooltip>
|
||||
<div class="col-sm-4" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" data-ng-click="testAuthentication()">Test authentication</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="connectionPooling">Connection pooling</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="connectionPooling">Connection pooling</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.connectionPooling" name="connectionPooling" id="connectionPooling" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does Keycloak should use connection pooling for accessing LDAP server" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does Keycloak should use connection pooling for accessing LDAP server</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="pagination">Pagination</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="pagination">Pagination</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.pagination" name="pagination" id="pagination" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does the LDAP server support pagination." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does the LDAP server support pagination.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.vendor === 'ad' ">
|
||||
<label class="col-sm-2 control-label" for="userAccountControlsAfterPasswordUpdate">Enable Account After Password Update</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="userAccountControlsAfterPasswordUpdate">Enable Account After Password Update</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.userAccountControlsAfterPasswordUpdate" name="userAccountControlsAfterPasswordUpdate" id="userAccountControlsAfterPasswordUpdate" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Useful just for Active Directory. If enabled, then Keycloak will always set
|
||||
Active Directory userAccountControl attribute to 512 after password update. This would mean that particular user will be enabled in Active Directory" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Useful just for Active Directory. If enabled, then Keycloak will always set
|
||||
Active Directory userAccountControl attribute to 512 after password update. This would mean that particular user will be enabled in Active Directory</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Kerberos integration</span></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="allowKerberosAuthentication">Allow Kerberos authentication </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="allowKerberosAuthentication">Allow Kerberos authentication </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.allowKerberosAuthentication" id="allowKerberosAuthentication" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-sm-2 control-label" for="kerberosRealm">Kerberos Realm <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="kerberosRealm"><span class="required">*</span> Kerberos Realm</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="kerberosRealm" type="text" ng-model="instance.config.kerberosRealm" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Name of kerberos realm. For example FOO.ORG" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Name of kerberos realm. For example FOO.ORG</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-sm-2 control-label" for="serverPrincipal">Server principal <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="serverPrincipal"><span class="required">*</span> Server principal</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="serverPrincipal" type="text" ng-model="instance.config.serverPrincipal" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Full name of server principal for HTTP service including server and domain name. For example HTTP/host.foo.org@FOO.ORG</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-sm-2 control-label" for="keyTab">KeyTab <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="keyTab"><span class="required">*</span> KeyTab</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="keyTab" type="text" ng-model="instance.config.keyTab" ng-required="instance.config.allowKerberosAuthentication">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Location of Kerberos KeyTab file containing the credentials of server principal. For example /etc/krb5.keytab</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-sm-2 control-label" for="debug">Debug </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="debug">Debug </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.debug" id="debug" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable debug logging to standard output for Krb5LoginModule." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable debug logging to standard output for Krb5LoginModule.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="instance.config.allowKerberosAuthentication">
|
||||
<label class="col-sm-2 control-label" for="debug">Use Kerberos For Password Authentication </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="debug">Use Kerberos For Password Authentication </label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="instance.config.useKerberosForPasswordAuthentication" id="useKerberosForPasswordAuthentication" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><span class="text">Sync settings</span></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="batchSizeForSync">Batch size</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="batchSizeForSync">Batch size</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" ng-model="instance.config.batchSizeForSync" id="batchSizeForSync" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Count of LDAP users to be imported from LDAP to Keycloak within single transaction." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Count of LDAP users to be imported from LDAP to Keycloak within single transaction.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fullSyncEnabled">Periodic full sync</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="fullSyncEnabled" name="fullSyncEnabled" id="fullSyncEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does periodic full synchronization of LDAP users to Keycloak should be enabled or not" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does periodic full synchronization of LDAP users to Keycloak should be enabled or not</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="fullSyncEnabled">
|
||||
<label class="col-sm-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fullSyncPeriod">Full sync period</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.fullSyncPeriod" id="fullSyncPeriod" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Period for full synchronization in seconds" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Period for full synchronization in seconds</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="changedSyncEnabled">Periodic changed users sync</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="changedSyncEnabled" name="changedSyncEnabled" id="changedSyncEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Does periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Does periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="changedSyncEnabled">
|
||||
<label class="col-sm-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="changedSyncPeriod">Changed users sync period</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="number" ng-model="instance.changedSyncPeriod" id="changedSyncPeriod" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Period for synchronization of changed or newly created LDAP users in seconds" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Period for synchronization of changed or newly created LDAP users in seconds</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-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="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">Synchronize changed users</button>
|
||||
<button class="btn btn-primary" data-ng-click="triggerFullSync()" data-ng-hide="changed">Synchronize all users</button>
|
||||
<button class="btn btn-danger" data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,60 +1,51 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}} Provider</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Identity Provider Mappers</a></li>
|
||||
<li class="active">Create IdentityProvider Mapper</li>
|
||||
<li class="active" data-ng-show="create">Create IdentityProvider Mapper</li>
|
||||
<li class="active" data-ng-hide="create">{{mapper.name}}</li>
|
||||
</ol>
|
||||
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}} Provider</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Identity Provider Mappers</a></li>
|
||||
<li class="active">{{mapper.name}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left" data-ng-hide="create">{{mapper.name}} Identity Provider Mapper</h2>
|
||||
<h2 class="pull-left" data-ng-show="create">Create Identity Provider Mapper</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
<h1 data-ng-hide="create"><strong>Identity Provider Mapper</strong> {{mapper.name}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add Identity Provider Mapper</strong></h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<fieldset>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-sm-2 control-label" for="mapperId">ID </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="mapperId">ID </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="name">Name <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="name">Name <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Name of the mapper." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Name of the mapper.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="create">
|
||||
<label class="col-sm-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
||||
<label class="col-md-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="mapperTypeCreate"
|
||||
<div>
|
||||
<select class="form-control" id="mapperTypeCreate"
|
||||
ng-model="mapperType"
|
||||
ng-options="mapperType.name for (mapperKey, mapperType) in mapperTypes">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{mapperType.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-hide="create">
|
||||
<label class="col-sm-2 control-label" for="mapperType">Mapper Type</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="mapperType">Mapper Type</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{mapperType.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
<div data-ng-repeat="option in mapperType.properties" class="form-group">
|
||||
<label class="col-sm-2 control-label">{{option.label}}</label>
|
||||
<label class="col-md-2 control-label">{{option.label}}</label>
|
||||
|
||||
<div class="col-sm-4" data-ng-hide="option.type == 'boolean' || option.type == 'List'">
|
||||
<input class="form-control" type="text" data-ng-model="mapper.config[ option.name ]" >
|
||||
|
@ -67,7 +58,7 @@
|
|||
<option value="" selected> Select one... </option>
|
||||
</select>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{option.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{option.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
@ -82,5 +73,6 @@
|
|||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,28 +1,34 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}} Provider</a></li>
|
||||
<li class="active">{{identityProvider.alias}} Mappers</li>
|
||||
<li>{{identityProvider.alias}}</li>
|
||||
</ol>
|
||||
<h2><span>{{realm.realm}} </span> {{identityProvider.alias}} Identity Provider Mappers <span tooltip-placement="right" tooltip="Identity Provider Mappers perform transformation on tokens and documents. They an do things like map external tokens and claims into role grants and user attributes." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>Identity Provider</strong> {{identityProvider.alias|capitalize}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider && identityProvider.providerId == 'saml'">Export</a></li>
|
||||
</ul>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="4">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
|
||||
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
|
||||
<button type="submit" class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by mapper name.">
|
||||
Icon: search
|
||||
</button>
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="search.name" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="#/create/identity-provider-mappers/{{realm.realm}}/{{identityProvider.alias}}">Create</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr data-ng-hide="mappers.length == 0">
|
||||
|
@ -42,5 +48,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,43 +1,43 @@
|
|||
<nav id="kc-navigation" class="navbar" role="navigation">
|
||||
<div class="navbar-header">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<h1 class="navbar-title">Keycloak</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-collapse-1">
|
||||
<div class="container">
|
||||
<ul class="nav navbar-nav navbar-utility" data-ng-show="auth.user">
|
||||
<a class="navbar-brand" href="#/">
|
||||
<img data-ng-src="{{resourceUrl + '/img/brand.svg'}}" alt="Keycloak" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-utility">
|
||||
<li class="dropdown">
|
||||
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="pficon pficon-user"></span>
|
||||
{{auth.user.displayName}}<b class="caret"></b>
|
||||
{{auth.user.displayName|capitalize}} <b class="caret"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{{authUrl}}/realms/{{auth.user.realm}}/account?referrer=security-admin-console">Manage Account</a></li>
|
||||
<li data-ng-show="auth.hasAnyAccess"><a href="#/server-info">Server Info</a></li>
|
||||
<li class="separator"><a href="" ng-click="auth.authz.logout()">Sign Out</a></li>
|
||||
<li><a href="#/server-info">Server Info</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="" ng-click="auth.authz.logout()">Sign Out</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-primary persistent-secondary" data-ng-controller="RealmDropdownCtrl">
|
||||
<li class="dropdown context" data-ng-show="current.realm.realm">
|
||||
|
||||
<ul class="nav navbar-nav navbar-primary" data-ng-controller="RealmDropdownCtrl">
|
||||
<li class="dropdown" data-ng-show="current.realm.realm">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
{{current.realm.realm}}
|
||||
{{current.realm.realm|capitalize}}
|
||||
<b class="caret" data-ng-show="current.realms.length > 1"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu" data-ng-show="current.realms.length > 1">
|
||||
<li data-ng-repeat="realm in current.realms" data-ng-if="realm.realm != current.realm.realm">
|
||||
<a href="" ng-click="changeRealm(realm.realm)">{{realm.realm}}</a>
|
||||
<a href="" ng-click="changeRealm(realm.realm)">{{realm.realm|capitalize}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown context" data-ng-show="!current.realm.realm">
|
||||
<li class="dropdown" data-ng-show="!current.realm.realm">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
Select realm...
|
||||
<b class="caret"></b>
|
||||
|
@ -48,18 +48,10 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="active pull-right" data-ng-show="auth.user && access.createRealm">
|
||||
|
||||
<li class="pull-right" data-ng-show="auth.user && access.createRealm">
|
||||
<a class="button primary" href="#/create/realm" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
|
||||
data-ng-show="auth.user">Add Realm</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- TODO remove once this page is properly styled -->
|
||||
<style type="text/css">
|
||||
.icon-spinner6 {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</div>
|
|
@ -1,82 +1,75 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<kc-navigation-client></kc-navigation-client>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Protocol Mappers</a></li>
|
||||
<li class="active">Create Protocol Mapper</li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a></li>
|
||||
<li class="active" data-ng-show="create">Create Protocol Mappers</li>
|
||||
<li class="active" data-ng-hide="create">{{mapper.name}}</li>
|
||||
</ol>
|
||||
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Protocol Mappers</a></li>
|
||||
<li class="active">{{mapper.name}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left" data-ng-hide="create">{{mapper.name}} Protocol Mapper</h2>
|
||||
<h2 class="pull-left" data-ng-show="create">Create Protocol Mapper</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
<h1 data-ng-show="create"><strong>Create Protocol Mapper</strong></h1>
|
||||
<h1 data-ng-hide="create"><strong>Protocol Mapper</strong> {{mapper.name}}</h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="protocol">Protocol</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="protocol">Protocol</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="protocol" type="text" ng-model="protocol" readonly>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Protocol." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Protocol.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="!create">
|
||||
<label class="col-sm-2 control-label" for="mapperId">ID </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="mapperId">ID </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperId" type="text" ng-model="mapper.id" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="name">Name</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="name">Name</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="name" type="text" ng-model="mapper.name" data-ng-readonly="!create">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Name of the mapper." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Name of the mapper.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="consentRequired" class="col-sm-2 control-label">Consent required</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input ng-model="mapper.consentRequired" name="consentRequired" id="consentRequired" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="When granting temporary access, must the user consent to providing this data to the client?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>When granting temporary access, must the user consent to providing this data to the client?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="mapper.consentRequired">
|
||||
<label class="col-sm-2 control-label" for="consentText">Consent Text </label>
|
||||
<label class="col-md-2 control-label" for="consentText">Consent Text </label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="consentText" name="consentText" data-ng-model="mapper.consentText"></textarea>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Text to display on consent page" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Text to display on consent page</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="create">
|
||||
<label class="col-sm-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
||||
<label class="col-md-2 control-label" for="mapperTypeCreate">Mapper Type</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="select-kc">
|
||||
<select id="mapperTypeCreate"
|
||||
<div>
|
||||
<select class="form-control" id="mapperTypeCreate"
|
||||
ng-model="mapperType"
|
||||
ng-options="mapperType.name for mapperType in mapperTypes">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{mapperType.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-hide="create">
|
||||
<label class="col-sm-2 control-label" for="mapperType">Mapper Type</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="mapperType">Mapper Type</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="mapperType" type="text" ng-model="mapperType.name" data-ng-readonly="true">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{mapperType.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
<div data-ng-repeat="option in mapperType.properties" class="form-group">
|
||||
<label class="col-sm-2 control-label">{{option.label}}</label>
|
||||
<label class="col-md-2 control-label">{{option.label}}</label>
|
||||
|
||||
<div class="col-sm-4" data-ng-hide="option.type == 'boolean' || option.type == 'List'">
|
||||
<input class="form-control" type="text" data-ng-model="mapper.config[ option.name ]" >
|
||||
|
@ -89,20 +82,26 @@
|
|||
<option value="" selected> Select one... </option>
|
||||
</select>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="{{option.helpText}}" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>{{option.helpText}}</kc-tooltip>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageRealm">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
|
||||
<button kc-save>Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,36 +1,31 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div data-ng-show="access.viewRealm">
|
||||
<h2><span>{{realm.realm}}</span> Cache Settings</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="realmCacheEnabled">Realm Cache Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="realmCacheEnabled">Realm Cache Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.realmCacheEnabled" name="realmCacheEnabled" id="realmCacheEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable cache for realm, client and role data." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable cache for realm, client and role data.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="userCacheEnabled">User Cache Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="userCacheEnabled">User Cache Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.userCacheEnabled" name="userCacheEnabled" id="userCacheEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable user and user role mapping cache." class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div data-ng-hide="access.viewRealm">
|
||||
<h2 ><span>{{realm.realm}}</span></h2>
|
||||
<kc-tooltip>Enable/disable user and user role mapping cache.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,27 +1,25 @@
|
|||
<div class="bs-sidebar col-sm-3 "></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<div id="content">
|
||||
<h2 class="margin-top pull-left">Add Realm</h2>
|
||||
<p class="subtitle margin-top"><span class="required">*</span> Required fields</p>
|
||||
<div class="col-md-12">
|
||||
|
||||
<h1>Add Realm</h1>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<legend><span class="text">Import Realm</span></legend>
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Upload JSON File </label>
|
||||
<div class="col-sm-4">
|
||||
<label for="import-file" class="col-sm-2 control-label">Import JSON File </label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a JSON File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
{{files[0].name}}
|
||||
</span>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">{{files[0].name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="files.length > 0">
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">Upload</button>
|
||||
<div class="form-group" data-ng-show="files.length > 0">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button type="submit" data-ng-click="uploadFile()" class="btn btn-primary">Upload</button>
|
||||
<button type="submit" data-ng-click="clearFileSelect()" class="btn btn-default">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
@ -32,23 +30,22 @@
|
|||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Name <span class="required">*</span></label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="enabled" class="col-sm-2 control-label">Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,31 +1,29 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<data-kc-navigation data-kc-current="credentials" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
|
||||
<h2></h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Credentials</h2>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<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="fa fa-info-circle"></span></legend>
|
||||
<legend><span class="text">Realm Credentials Settings</span> <kc-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.</kc-tooltip></legend>
|
||||
<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-md-2 control-label" for="user" class="control-label two-lines">Required User Credentials</label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input id="user" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredCredentials" placeholder="Type a role and enter">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="border-top">
|
||||
<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. Multiple Regex patterns, separated by comma, can be added." class="fa fa-info-circle"></span></legend>
|
||||
<legend><span class="text">Realm Password Policy</span> <kc-tooltip>Specify required password format. You can also set how many times a password is hashed before it is stored in database. Multiple Regex patterns, separated by comma, can be added.</kc-tooltip></legend>
|
||||
<table class="table table-striped table-bordered">
|
||||
<caption class="hidden">Table of Password Policies</caption>
|
||||
<thead>
|
||||
<tr ng-show="(allPolicies|remove:policy:'name').length > 0">
|
||||
<th colspan="5" class="kc-table-actions">
|
||||
<div class="pull-right">
|
||||
<div class="select-kc">
|
||||
<select ng-model="selectedPolicy"
|
||||
<div>
|
||||
<select class="form-control" ng-model="selectedPolicy"
|
||||
ng-options="(p.name|capitalize) for p in (allPolicies|remove:policy:'name')"
|
||||
data-ng-change="addPolicy(selectedPolicy); selectedPolicy = null">
|
||||
<option value="" disabled selected>Add policy...</option>
|
||||
|
@ -42,9 +40,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="p in policy">
|
||||
<td>
|
||||
<input class="form-control disabled" type="text" value="{{p.name|capitalize}}" readonly>
|
||||
</td>
|
||||
<td>{{p.name|capitalize}}</td>
|
||||
<td>
|
||||
<input class="form-control" ng-model="p.value" ng-show="p.name != 'notUsername' "
|
||||
placeholder="No value assigned" min="1" required>
|
||||
|
@ -56,10 +52,16 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,89 +1,82 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Roles</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Default Roles <span tooltip-placement="right" tooltip="Role mappings to assign to newly created users. This includes registration, social login, and users created in the admin console." class="fa fa-info-circle"></span></h2>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Realm Default Roles</span> </legend>
|
||||
<div class="form-group">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<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="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles that can be assigned.</kc-tooltip>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r for r in availableRealmRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
<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>
|
||||
</button>
|
||||
<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>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned">Realm Default Roles</label>
|
||||
<kc-tooltip>Realm level roles assigned to new users.</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmDefRoles"
|
||||
ng-options="r for r in realm.defaultRoles">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset ng-show="clients.length > 0">
|
||||
<legend><span class="text">Client Default Roles</span> </legend>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="clients">Client <span tooltip-placement="top" tooltip="Select an client to view/modify assigned default roles." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="clients" name="clients" ng-change="changeClient()" ng-model="client" ng-options="a.clientId for a in clients" ng-disabled="false">
|
||||
<option value="" selected> Select a Client...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="client" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-md-10" data-ng-show="client">
|
||||
<div class="row" data-ng-hide="client">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
</div>
|
||||
<div class="form-group" ng-show="client">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="available-client">Available Roles <span tooltip-placement="right" tooltip="Roles from this client that are assignable as a default." class="fa fa-info-circle"></span></label>
|
||||
<div class="row" data-ng-show="client">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Roles from this client that are assignable as a default.</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r for r in availableClientRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
<button class="btn btn-default" type="submit" ng-click="addClientDefaultRole()" tooltip="Assign role" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right"><span>Move right</span></span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="rmClientDefaultRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left"><span>Move left</span></span>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="assigned-client">Client Default Roles <span tooltip-placement="right" tooltip="Roles from this client assigned as a default role." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned-client">Client Default Roles</label>
|
||||
<kc-tooltip>Roles from this client assigned as a default role.</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientDefRoles"
|
||||
ng-options="r for r in client.defaultRoles">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="rmClientDefaultRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,43 +1,38 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div data-ng-show="access.viewRealm">
|
||||
<h2 class="pull-left" data-ng-show="createRealm">Add Realm</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>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1 data-ng-hide="createRealm"><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
<h1 data-ng-show="createRealm">Add Realm</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal " name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="name"><span class="required">*</span> Name</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
|
||||
<span tooltip="Users and clients can only access a realm if it's enabled" class="fa fa-info-circle"></span>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<kc-tooltip>Users and clients can only access a realm if it's enabled</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="createRealm && access.manageRealm">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="createRealm && access.manageRealm">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
<div class="pull-right form-actions" data-ng-show="!createRealm && access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!createRealm && access.manageRealm">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete Realm</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div data-ng-hide="access.viewRealm">
|
||||
<h2 ><span>{{realm.realm}}</span></h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,67 +1,62 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Events</strong> {{realm.realm|capitalize}}</span> Events</h1>
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<ul class="nav nav-tabs">
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">View</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">Config</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Events Config</h2>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageEvents">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Save Events</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label" for="enabled">Save Events</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="eventsConfig.eventsEnabled" name="enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If enabled events are saved to the database which makes events available to the admin and account management consoles." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If enabled events are saved to the database which makes events available to the admin and account management consoles.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-sm-2 control-label" for="enabledEventTypes" class="control-label">Saved Types</label>
|
||||
<label class="col-md-2 control-label" for="enabledEventTypes" class="control-label">Saved Types</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<input ui-select2="eventSelectOptions" id="enabledEventTypes" ng-model="eventsConfig.enabledEventTypes" data-placeholder="Select event types..."/>
|
||||
</div>
|
||||
|
||||
<span tooltip-placement="right" tooltip="Configure what event types are saved. By default events related to login and users modifying their accounts are persisted." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Configure what event types are saved. By default events related to login and users modifying their accounts are persisted.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageEvents && eventsConfig.eventsEnabled">
|
||||
<label class="col-sm-2 control-label" for="password">Clear Events</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label" for="password">Clear Events</label>
|
||||
<div class="col-md-6">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="clearEvents()" >Clear Events</button>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Deletes all events in the database." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Deletes all events in the database.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select" data-ng-show="eventsConfig.eventsEnabled">
|
||||
<label class="col-sm-2 control-label" for="expiration">Expiration</label>
|
||||
<div class="col-sm-2">
|
||||
<label class="col-md-2 control-label" for="expiration">Expiration</label>
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" data-ng-model="eventsConfig.eventsExpiration" id="expiration" name="expiration" min="0"/>
|
||||
</div>
|
||||
<div class="col-sm-2 select-kc">
|
||||
<select name="expirationUnit" data-ng-model="eventsConfig.expirationUnit" >
|
||||
<select class="form-control" name="expirationUnit" data-ng-model="eventsConfig.expirationUnit" >
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
<option>Days</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-1"></div>
|
||||
<span tooltip-placement="right" tooltip="Sets the expiration for events. Expired events are periodically deleted from the database." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Sets the expiration for events. Expired events are periodically deleted from the database.</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="eventsListeners" class="control-label">Listeners</label>
|
||||
<label class="col-md-2 control-label" for="eventsListeners" class="control-label">Listeners</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 ng-model="eventsConfig.eventsListeners" data-placeholder="Select an action..." multiple>
|
||||
<option ng-repeat="listener in eventListeners" value="{{listener}}">{{listener}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<span tooltip-placement="right" tooltip="Configure what listeners receive events for the realm." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Configure what listeners receive events for the realm.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
@ -70,6 +65,6 @@
|
|||
<button data-kc-save data-ng-show="changed">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span><strong>Events</strong> {{realm.realm|capitalize}}</span>
|
||||
<kc-tooltip>Displays saved events for the realm. Events are related to user accounts, for example a user login. To enable persisted events go to config.</kc-tooltip>
|
||||
</h1>
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<ul class="nav nav-tabs">
|
||||
<li data-ng-class="(path[2] == 'events') && 'active'"><a href="#/realms/{{realm.realm}}/events">View</a></li>
|
||||
<li data-ng-class="(path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events-settings">Config</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Events <span tooltip-placement="right" tooltip="Displays saved events for the realm. Events are related to user accounts, for example a user login. To enable persisted events go to config." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
|
@ -31,33 +30,33 @@
|
|||
</div>
|
||||
<form class="form-horizontal">
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-sm-2 control-label" for="eventTypes">Event Type</label>
|
||||
<label class="col-md-2 control-label" for="eventTypes">Event Type</label>
|
||||
<div class="col-sm-5">
|
||||
<input ui-select2="eventSelectOptions" id="eventTypes" ng-model="query.type" data-placeholder="Select event types..."/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-sm-2 control-label" for="client">Client</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="client">Client</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="client" name="client" data-ng-model="query.client">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-sm-2 control-label" for="user">User</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="user">User</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="user" name="user" data-ng-model="query.user">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-sm-2 control-label" for="dateFrom">Date (From)</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="dateFrom">Date (From)</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="date" id="dateFrom" name="dateFrom" data-ng-model="query.dateFrom">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="filter">
|
||||
<label class="col-sm-2 control-label" for="dateTo">Date (To)</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="dateTo">Date (To)</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="date" id="dateTo" name="dateTo" data-ng-model="query.dateTo">
|
||||
</div>
|
||||
</div>
|
||||
|
@ -74,18 +73,16 @@
|
|||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
<div class="table-nav">
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">First page</button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">Previous page</button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="events.length < query.max">Next page</button>
|
||||
</div>
|
||||
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0"><i data-ng-class="query.first == 0 && 'text-muted'" class="fa fa-angle-double-left"></i></button>
|
||||
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0"><i data-ng-class="query.first == 0 && 'text-muted'" class="fa fa-angle-left"></i></button>
|
||||
<button data-ng-click="nextPage()" class="next" ng-disabled="events.length < query.max"><i data-ng-class="events.length < query.max && 'text-muted'" class="fa fa-angle-right"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr ng-repeat="event in events">
|
||||
<td>{{event.time|date:'shortDate'}}<br>{{event.time|date:'mediumTime'}}</td>
|
||||
<td data-ng-class="event.error && 'events-error' || 'events-success'">{{event.type}}</td>
|
||||
<td>{{event.type}}</td>
|
||||
<td>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr><td width="100px">Client</td><td>{{event.clientId}}</td></tr>
|
||||
|
@ -122,6 +119,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,26 +1,28 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
|
||||
<data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}} Provider</a></li>
|
||||
<li class="active">{{identityProvider.alias}} Provider Export</li>
|
||||
<li>{{identityProvider.alias}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left">{{identityProvider.alias}} Provider Export</h2>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Identity Provider</strong> {{identityProvider.alias|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add OpenID Connect Identity Provider</strong></h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider">Export</a></li>
|
||||
</ul>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<a class="btn btn-primary" data-ng-click="download()" type="submit">Download</a>
|
||||
<textarea class="form-control" rows="20" kc-select-action="click">{{exported}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<div class="pull-right form-actions">
|
||||
<a class="btn btn-primary btn-lg" data-ng-click="download()" type="submit">Download</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,97 +1,100 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main" data-ng-init="initProvider()">
|
||||
<data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li class="active">{{identityProvider.alias}} Provider Settings</li>
|
||||
<li>{{identityProvider.alias}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left">{{identityProvider.alias}} Provider Settings</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Identity Provider</strong> {{identityProvider.alias|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add OpenID Connect Identity Provider</strong></h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
</ul>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-sm-8">
|
||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The redirect uri to use when configuring the identity provider" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="identifier">Alias <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The alias unique identifies an identity provider and it is also used to build the redirect uri." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The alias unique identifies an identity provider and it is also used to build the redirect uri.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable this identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if this provider should be tried by default for authentication even before displaying login screen" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storeToken">Store Tokens</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storeToken">Store Tokens</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable if tokens must be stored after authenticating users." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable new users can read any stored tokens. This assigns the broker.read-token role." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.updateProfileFirstLogin" name="identityProvider.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if user must update his profile right after the first login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if user must update his profile right after the first login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Number defining order of the provider in GUI (eg. on Login page)." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend uncollapsed><span class="text">OpenID Connect Config</span> <span tooltip-placement="right" tooltip="OIDC SP and external IDP configuration." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">OpenID Connect Config</span> <kc-tooltip>OIDC SP and external IDP configuration.</kc-tooltip></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="authorizationUrl">Authorization Url <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="authorizationUrl"><span class="required">*</span> Authorization Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="authorizationUrl" type="text" ng-model="identityProvider.config.authorizationUrl" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The Authorization Url." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The Authorization Url.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="tokenUrl">Token Url <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="tokenUrl"><span class="required">*</span> Token Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="tokenUrl" type="text" ng-model="identityProvider.config.tokenUrl" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The Token Url." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The Token Url.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="userInfoUrl">Logout Url</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="userInfoUrl">Logout Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="logoutUrl" type="text" ng-model="identityProvider.config.logoutUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="End session endpoint to use to logout user from external IDP." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>End session endpoint to use to logout user from external IDP.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">Backchannel Logout</label>
|
||||
|
@ -101,48 +104,48 @@
|
|||
<span tooltip-placement="right" tooltip="Does the external IDP support backchannel logout?" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="userInfoUrl">User Info Url</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="userInfoUrl">User Info Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="userInfoUrl" type="text" ng-model="identityProvider.config.userInfoUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The User Info Url. This is optional." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The User Info Url. This is optional.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="clientId">Client ID <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> Client ID</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The client or client identifier registered withing the identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The client or client identifier registered withing the identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="clientSecret">Client Secret <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> Client Secret</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
||||
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
||||
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">Show Secret</a>
|
||||
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">Hide Secret</a>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The client or client secret registered withing the identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The client or client secret registered withing the identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="issuer">Issuer </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="issuer">Issuer </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="issuer" type="text" ng-model="identityProvider.config.issuer">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The issuer identifier for the issuer of the response. If not provided, no validation will be performed." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The issuer identifier for the issuer of the response. If not provided, no validation will be performed.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="defaultScope">Default Scopes </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="defaultScope">Default Scopes </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="prompt">Prompt</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="prompt" ng-model="identityProvider.config.prompt">
|
||||
<label class="col-md-2 control-label" for="prompt">Prompt</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="prompt" ng-model="identityProvider.config.prompt">
|
||||
<option value="">unspecified</option>
|
||||
<option value="none">none</option>
|
||||
<option>consent</option>
|
||||
|
@ -151,60 +154,62 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Specifies whether the Authorization Server prompts the End-User for reauthentication and consent." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="validateSignature">Validate Signatures</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="validateSignature">Validate Signatures</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable signature validation of external IDP signatures." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable signature validation of external IDP signatures.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
||||
<label class="col-sm-2 control-label" for="publicKeySignatureVerifier">Validating Public Key</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="publicKeySignatureVerifier">Validating Public Key</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="publicKeySignatureVerifier" ng-model="identityProvider.config.publicKeySignatureVerifier"/>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The public key in PEM format that must be used to verify external IDP signatures." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The public key in PEM format that must be used to verify external IDP signatures.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset data-ng-show="newIdentityProvider">
|
||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <span tooltip-placement="right" tooltip="Allows you to load external IDP metadata from a config file or to download it from a URL." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <kc-tooltip>Allows you to load external IDP metadata from a config file or to download it from a URL.</kc-tooltip></legend>
|
||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||
<label class="col-sm-2 control-label" for="fromUrl">Import From Url</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fromUrl">Import From Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Import metadata from a remote IDP discovery descriptor." class="fa fa-info-circle"></span>
|
||||
<div class="col-sm-4" data-ng-show="importUrl">
|
||||
<kc-tooltip>Import metadata from a remote IDP discovery descriptor.</kc-tooltip>
|
||||
<div class="col-md-6" data-ng-show="importUrl">
|
||||
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">Import</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||
<label class="col-sm-2 control-label">Import From File</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label">Import From File</label>
|
||||
<kc-tooltip>Import metadata from a downloaded IDP discovery descriptor.</kc-tooltip>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
{{files[0].name}}
|
||||
</span>
|
||||
<span tooltip-placement="right" tooltip="Import metadata from a downloaded IDP discovery descriptor." class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="col-sm-4" data-ng-show="importFile">
|
||||
<div class="col-md-6" data-ng-show="importFile">
|
||||
<button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">Import</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions">
|
||||
<a data-ng-show="!newIdentityProvider" class="btn btn-lg btn-primary" href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button type="submit" data-ng-click="cancel()" data-ng-show="changed" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-show="!newIdentityProvider">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,91 +1,95 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main" data-ng-init="initSamlProvider()">
|
||||
<data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li class="active">{{identityProvider.alias}} Provider Settings</li>
|
||||
<li>{{identityProvider.alias}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left">{{identityProvider.alias}} Provider Settings</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Identity Provider</strong> {{identityProvider.alias|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add SAML Identity Provider</strong></h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider && identityProvider.providerId == 'saml'">Export</a></li>
|
||||
</ul>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-sm-8">
|
||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The redirect uri to use when configuring the identity provider" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="identifier">Alias <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="identifier"><span class="required">*</span> Alias</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="identifier" type="text" ng-model="identityProvider.alias" data-ng-readonly="!newIdentityProvider" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The alias unique identifies an identity provider and it is also used to build the redirect uri." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The alias unique identifies an identity provider and it is also used to build the redirect uri.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable this identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if this provider should be tried by default for authentication even before displaying login screen" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storeToken">Store Tokens</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storeToken">Store Tokens</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable if tokens must be stored after authenticating users." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable new users can read any stored tokens. This assigns the broker.read-token role." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.updateProfileFirstLogin" name="identityProvider.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if user must update his profile right after the first login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if user must update his profile right after the first login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Number defining order of the provider in GUI (eg. on Login page)." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend uncollapsed><span class="text">SAML Config</span> <span tooltip-placement="right" tooltip="SAML SP and external IDP configuration." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">SAML Config</span> <kc-tooltip>SAML SP and external IDP configuration.</kc-tooltip></legend>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="singleSignOnServiceUrl">Single Sign-On Service Url<span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="singleSignOnServiceUrl"><span class="required">*</span> Single Sign-On Service Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="singleSignOnServiceUrl" type="text" ng-model="identityProvider.config.singleSignOnServiceUrl" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The Url that must be used to send authentication requests(SAML AuthnRequest)." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The Url that must be used to send authentication requests(SAML AuthnRequest).</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="singleSignOnServiceUrl">Single Logout Service Url</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="singleSignOnServiceUrl">Single Logout Service Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="singleLogoutServiceUrl" type="text" ng-model="identityProvider.config.singleLogoutServiceUrl">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The Url that must be used to send logout requests." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The Url that must be used to send logout requests.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="backchannelSupported">Backchannel Logout</label>
|
||||
|
@ -95,76 +99,76 @@
|
|||
<span tooltip-placement="right" tooltip="Does the external IDP support backchannel logout?" class="fa fa-info-circle"></span>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="nameIDPolicyFormat">NameID Policy Format</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="nameIDPolicyFormat">NameID Policy Format</label>
|
||||
<div class="col-md-6">
|
||||
<select id="nameIDPolicyFormat" ng-model="identityProvider.config.nameIDPolicyFormat"
|
||||
ng-options="nameFormat.format as nameFormat.name for nameFormat in nameIdFormats">
|
||||
</select>
|
||||
<!-- <input class="form-control" id="nameIDPolicyFormat" type="text" ng-model="identityProvider.config.nameIDPolicyFormat"> -->
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Specifies the URI reference corresponding to a name identifier format. Defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:persistent." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Specifies the URI reference corresponding to a name identifier format. Defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:persistent.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="postBindingResponse">HTTP-POST Binding Response</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="postBindingResponse">HTTP-POST Binding Response</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.postBindingResponse" id="postBindingResponse" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="postBindingAuthnRequest">HTTP-POST Binding for AuthnRequest</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="postBindingAuthnRequest">HTTP-POST Binding for AuthnRequest</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.postBindingAuthnRequest" id="postBindingAuthnRequest" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="wantAuthnRequestsSigned">Want AuthnRequests Signed</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="wantAuthnRequestsSigned">Want AuthnRequests Signed</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.wantAuthnRequestsSigned" id="wantAuthnRequestsSigned" name="wantAuthnRequestsSigned" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip=" Indicates whether the identity provider expects signed a AuthnRequest." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip> Indicates whether the identity provider expects signed a AuthnRequest.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="forceAuthn">Force Authentication</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="forceAuthn">Force Authentication</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.forceAuthn" id="forceAuthn" name="forceAuthn" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip=" Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip> Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="validateSignature">Validate Signature</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="validateSignature">Validate Signature</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.config.validateSignature" id="validateSignature" value="'true'" onoffswitchvalue />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable signature validation of SAML responses." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable signature validation of SAML responses.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-show="identityProvider.config.validateSignature == 'true'">
|
||||
<label class="col-sm-2 control-label" for="signingCertificate">Validating X509 Certificate</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="signingCertificate">Validating X509 Certificate</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="signingCertificate" ng-model="identityProvider.config.signingCertificate"/>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The certificate in PEM format that must be used to check for signatures." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The certificate in PEM format that must be used to check for signatures.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset data-ng-show="newIdentityProvider">
|
||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <span tooltip-placement="right" tooltip="Allows you to load external IDP metadata from a config file or to download it from a URL." class="fa fa-info-circle"></span></legend>
|
||||
<legend uncollapsed><span class="text">Import External IDP Config</span> <kc-tooltip>Allows you to load external IDP metadata from a config file or to download it from a URL.</kc-tooltip></legend>
|
||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||
<label class="col-sm-2 control-label" for="fromUrl">Import From Url</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="fromUrl">Import From Url</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Import metadata from a remote IDP SAML entity descriptor." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Import metadata from a remote IDP SAML entity descriptor.</kc-tooltip>
|
||||
<div class="col-sm-4" data-ng-show="importUrl">
|
||||
<button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">Import</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="newIdentityProvider">
|
||||
<label class="col-sm-2 control-label">Import From File</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label">Import From File</label>
|
||||
<div class="col-md-6">
|
||||
<div class="controls kc-button-input-file" data-ng-show="!files || files.length == 0">
|
||||
<a href="#" class="btn btn-default"><span class="kc-icon-upload">Icon: Upload</span>Choose a File...</a>
|
||||
<input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
|
||||
<label for="import-file" class="btn btn-default">Select file <i class="pficon pficon-import"></i></label>
|
||||
<input id="import-file" type="file" class="hidden" ng-file-select="onFileSelect($files)">
|
||||
</div>
|
||||
<span class="kc-uploaded-file" data-ng-show="files.length > 0">
|
||||
{{files[0].name}}
|
||||
|
@ -176,14 +180,14 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions">
|
||||
<a data-ng-show="!newIdentityProvider" class="btn btn-lg btn-primary" href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a>
|
||||
<a class="btn btn-lg btn-primary" href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}/export" data-ng-show="!importFile && !newIdentityProvider">Export</a>
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button type="submit" data-ng-click="cancel()" data-ng-show="changed" class="btn btn-lg btn-default">Cancel</button>
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-show="!newIdentityProvider">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,91 +1,94 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main" data-ng-init="initProvider()">
|
||||
<data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Social Providers</a></li>
|
||||
<li class="active">{{identityProvider.alias}} Settings</li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li>{{identityProvider.alias}}</li>
|
||||
</ol>
|
||||
<h2 class="pull-left">{{identityProvider.alias}} Provider Settings</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Identity Provider</strong> {{identityProvider.alias|capitalize}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add Social Identity Provider</strong></h1>
|
||||
|
||||
<ul class="nav nav-tabs" data-ng-hide="newIdentityProvider">
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">Settings</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">Mappers</a></li>
|
||||
</ul>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-sm-8">
|
||||
<label class="col-md-2 control-label" for="redirectUri">Redirect URI</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" id="redirectUri" type="text" value="{{callbackUrl}}{{identityProvider.alias}}/endpoint" readonly kc-select-action="click">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The redirect uri to use when configuring the identity provider" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The redirect uri to use when configuring the identity provider</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="clientId">Client ID <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="clientId"><span class="required">*</span> Client ID</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.clientId" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The client identifier registered withing the identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The client identifier registered withing the identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="clientSecret">Client Secret <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="clientSecret"><span class="required">*</span> Client Secret</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="clientSecret" type="password" ng-model="identityProvider.config.clientSecret" ng-show="hidePassword" required>
|
||||
<input class="form-control" id="clientSecret" type="text" ng-model="identityProvider.config.clientSecret" ng-show="!hidePassword" required>
|
||||
<a href="" ng-click="showPassword(false)" class="link" ng-show="hidePassword">Show Secret</a>
|
||||
<a href="" ng-click="showPassword(true);" ng-show="!hidePassword">Hide Secret</a>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The client secret registered withing the identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The client secret registered withing the identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-' + identityProvider.providerId + '-ext.html'"></div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="defaultScope">Default Scopes </label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="defaultScope">Default Scopes </label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="defaultScope" type="text" ng-model="identityProvider.config.defaultScope">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The scopes to be sent when asking for authorization. See documentation for possible values, separator and default value'." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The scopes to be sent when asking for authorization. See documentation for possible values, separator and default value'.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Store Tokens</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="enabled">Store Tokens</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.storeToken" id="storeToken" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable if tokens must be stored after authenticating users." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable if tokens must be stored after authenticating users.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="storedTokensReadable">Stored Tokens Readable</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.addReadTokenRoleOnCreate" id="storedTokensReadable" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable new users can read any stored tokens. This assigns the broker.read-token role." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable new users can read any stored tokens. This assigns the broker.read-token role.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="enabled">Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.enabled" id="enabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable this identity provider." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable this identity provider.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="updateProfileFirstLogin">Update Profile on First Login</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.updateProfileFirstLogin" name="identityProvider.updateProfileFirstLogin" id="updateProfileFirstLogin" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if user must update his profile right after the first login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if user must update his profile right after the first login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="authenticateByDefault">Authenticate By Default</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="identityProvider.authenticateByDefault" name="identityProvider.authenticateByDefault" id="authenticateByDefault" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Indicates if this provider should be tried by default for authentication even before displaying login screen" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Indicates if this provider should be tried by default for authentication even before displaying login screen</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="guiOrder">GUI order</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="guiOrder" type="text" ng-model="identityProvider.config.guiOrder">
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Number defining order of the provider in GUI (eg. on Login page)." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Number defining order of the provider in GUI (eg. on Login page).</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
@ -94,6 +97,6 @@
|
|||
<button kc-delete data-ng-click="remove()" data-ng-show="!newIdentityProvider">Delete</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,7 +1,7 @@
|
|||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="clientId">Key <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="clientId">Key <span class="required">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="clientId" type="text" ng-model="identityProvider.config.key" required>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="The Key obtained from Stack Overflow client registration." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>The Key obtained from Stack Overflow client registration.</kc-tooltip>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2 class="pull-left"><span>{{realm.realm}}</span> Identity Providers Settings</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Identity Providers</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<form name="realmForm" novalidate class="form-horizontal">
|
||||
<fieldset>
|
||||
|
@ -13,15 +9,13 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th colspan="3" class="kc-table-actions">
|
||||
<div class="pull-right">
|
||||
<div class="select-kc">
|
||||
<select ng-model="provider"
|
||||
<div class="dropdown pull-right">
|
||||
<select class="form-control" ng-model="provider"
|
||||
ng-options="p.name group by p.groupName for p in allProviders track by p.id"
|
||||
data-ng-change="addProvider(provider); provider = null">
|
||||
<option value="" disabled selected>Add provider...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr ng-show="configuredProviders.length > 0">
|
||||
|
@ -43,32 +37,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TODO remove once this page is properly styled -->
|
||||
<style type="text/css">
|
||||
.social-provider input.ng-invalid.dirty,
|
||||
.social-provider input.ng-invalid.ng-dirty {
|
||||
background-color: #FFEEEE;
|
||||
}
|
||||
|
||||
.social-provider .actions > div {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.social-provider td {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.social-provider .action-div {
|
||||
display: inline-block;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.social-provider .icon-remove, .social-provider .icon-question {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<kc-menu></kc-menu>
|
|
@ -1,30 +1,34 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<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>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="publicKey">Public key</label>
|
||||
<label class="col-md-2 control-label" for="publicKey">Public key</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<div class="col-md-10">
|
||||
<textarea type="text" id="publicKey" name="publicKey" class="form-control" rows="4"
|
||||
kc-select-action="click" readonly>{{realm.publicKey}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="certificate">Certificate</label>
|
||||
<label class="col-md-2 control-label" for="certificate">Certificate</label>
|
||||
|
||||
<div class="col-sm-10">
|
||||
<div class="col-md-10">
|
||||
<textarea type="text" id="certificate" name="certificate" class="form-control" rows="8" kc-select-action="click" readonly>{{realm.certificate}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<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>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="generate()">Generate new keys</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,15 +1,7 @@
|
|||
<div class="bs-sidebar col-sm-3 ">
|
||||
<ul data-ng-hide="createRealm">
|
||||
<li class="active"><a href="#/realms">Realms</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<li class="active"><a href="">Realm List</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<h2 class="margin-top">Choose Realm to Manage</h2>
|
||||
<table class="table table-striped table-bordered">
|
||||
<div class="col-md-12">
|
||||
<h1>Realms</h1>
|
||||
|
||||
<table class="datatable table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Realm</th>
|
||||
|
@ -21,5 +13,4 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
|
@ -1,77 +1,75 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<div data-ng-show="access.viewRealm">
|
||||
<h2><span>{{realm.realm}}</span> Login Settings</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label for="registrationAllowed" class="col-sm-2 control-label">User registration</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="registrationAllowed" class="col-md-2 control-label">User registration</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.registrationAllowed" name="registrationAllowed" id="registrationAllowed" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable the registration page. A link for registration will show on login page too." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable the registration page. A link for registration will show on login page too.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group" ng-show="registrationAllowed">
|
||||
<label for="registrationEmailAsUsername" class="col-sm-2 control-label">Email as username</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="registrationEmailAsUsername" class="col-md-2 control-label">Email as username</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.registrationEmailAsUsername" name="registrationEmailAsUsername" id="registrationEmailAsUsername" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If enabled then username field is hidden from registration form and email is used as username for new user." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If enabled then username field is hidden from registration form and email is used as username for new user.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="resetPasswordAllowed" class="col-sm-2 control-label">Forget password</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="resetPasswordAllowed" class="col-md-2 control-label">Forget password</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.resetPasswordAllowed" name="resetPasswordAllowed" id="resetPasswordAllowed" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Show a link on login page for user to click on when they have forgotten their credentials." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Show a link on login page for user to click on when they have forgotten their credentials.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="rememberMe">Remember Me</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="rememberMe">Remember Me</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.rememberMe" name="rememberMe" id="rememberMe" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Show checkbox on login page to allow user to remain logged in between browser restarts until session expires." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="verifyEmail" class="col-sm-2 control-label">Verify email</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="verifyEmail" class="col-md-2 control-label">Verify email</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.verifyEmail" name="verifyEmail" id="verifyEmail" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Require the user to verify their email address the first time they login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Require the user to verify their email address the first time they login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="passwordCredentialGrantAllowed" class="col-sm-2 control-label">Direct Grant API</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="passwordCredentialGrantAllowed" class="col-md-2 control-label">Direct Grant API</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.passwordCredentialGrantAllowed" name="passwordCredentialGrantAllowed" id="passwordCredentialGrantAllowed" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Enable/disable REST API for login/token grant access" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Enable/disable REST API for login/token grant access</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="sslRequired" class="col-sm-2 control-label">Require SSL</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="sslRequired" ng-model="realm.sslRequired">
|
||||
<label for="sslRequired" class="col-md-2 control-label">Require SSL</label>
|
||||
<div class="col-md-2">
|
||||
<div>
|
||||
<select id="sslRequired" ng-model="realm.sslRequired" class="form-control">
|
||||
<option value="all">all requests</option>
|
||||
<option value="external">external requests</option>
|
||||
<option value="none">none</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div data-ng-hide="access.viewRealm">
|
||||
<h2 ><span>{{realm.realm}}</span></h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,16 +0,0 @@
|
|||
<ul data-ng-hide="createRealm">
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="((!path[2] ||
|
||||
path[2] == 'identity-provider-settings' || path[2] == 'required-credentials'
|
||||
|| path[2] == 'login-settings'
|
||||
|| path[2] == 'theme-settings'
|
||||
|| path[2] == 'cache-settings'
|
||||
|| path[2] == 'keys-settings' || path[2] == 'smtp-settings' || path[2] == 'ldap-settings' || path[2] == 'auth-settings') && path[3] != 'clients') && 'active'">
|
||||
<a href="#/realms/{{realm.realm}}">Settings</a>
|
||||
</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>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'clients' || path[1] == 'client' || path[3] == 'clients') && 'active'"><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || (path[1] == 'role' && path[3] != 'clients')) && 'active'"><a href="#/realms/{{realm.realm}}/roles">Roles</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.viewEvents" data-ng-class="(path[2] == 'events' || path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events">Events</a></li>
|
||||
</ul>
|
|
@ -1,70 +1,67 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<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>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset>
|
||||
<legend><span class="text">Required Settings</span></legend>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpHost">Host <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpHost"><span class="required">*</span> Host</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="smtpHost" type="text" ng-model="realm.smtpServer.host" placeholder="SMTP Host" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpPort">Port</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpPort">Port</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="smtpPort" type="number" ng-model="realm.smtpServer.port" placeholder="SMTP Port (defaults to 25)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpFrom">From <span class="required">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpFrom"><span class="required">*</span> From</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="smtpFrom" type="email" ng-model="realm.smtpServer.from" placeholder="Sender Email Address" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpSSL">Enable SSL</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpSSL">Enable SSL</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.ssl" name="smtpSSL" id="smtpSSL" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpStartTLS">Enable StartTLS</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpStartTLS">Enable StartTLS</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.starttls" name="smtpStartTLS" id="smtpStartTLS" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><span class="text">Authentication</span></legend>
|
||||
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="smtpAuth">Enable Authentication</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpAuth">Enable Authentication</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="realm.smtpServer.auth" name="smtpAuth" id="smtpAuth" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpUsername"><span class="required">*</span> Username</span></label>
|
||||
<div class="col-md-6">
|
||||
<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 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>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="smtpPassword"><span class="required">*</span> Password</label>
|
||||
<div class="col-md-6">
|
||||
<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>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button data-kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button data-kc-save data-ng-show="changed">Save</button>
|
||||
<button data-kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,82 +1,80 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<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>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<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>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="loginTheme">Login Theme</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="loginTheme"
|
||||
<label class="col-md-2 control-label" for="loginTheme">Login Theme</label>
|
||||
<div class="col-md-3">
|
||||
<div>
|
||||
<select class="form-control" id="loginTheme"
|
||||
ng-model="realm.loginTheme"
|
||||
ng-options="o as o for o in serverInfo.themes.login">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Select theme for login, TOTP, grant, registration, and forgot password pages." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Select theme for login, TOTP, grant, registration, and forgot password pages.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="accountTheme">Account Theme</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="accountTheme"
|
||||
<label class="col-md-2 control-label" for="accountTheme">Account Theme</label>
|
||||
<div class="col-md-3">
|
||||
<div>
|
||||
<select class="form-control" id="accountTheme"
|
||||
ng-model="realm.accountTheme"
|
||||
ng-options="o as o for o in serverInfo.themes.account">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Select theme for user account management pages." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Select theme for user account management pages.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="adminTheme">Admin Console Theme</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="adminTheme"
|
||||
<label class="col-md-2 control-label" for="adminTheme">Admin Console Theme</label>
|
||||
<div class="col-md-3">
|
||||
<div>
|
||||
<select class="form-control" id="adminTheme"
|
||||
ng-model="realm.adminTheme"
|
||||
ng-options="o as o for o in serverInfo.themes.admin">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Select theme for admin console." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Select theme for admin console.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="emailTheme">Email Theme</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="emailTheme"
|
||||
<label class="col-md-2 control-label" for="emailTheme">Email Theme</label>
|
||||
<div class="col-md-3">
|
||||
<div>
|
||||
<select class="form-control" id="emailTheme"
|
||||
ng-model="realm.emailTheme"
|
||||
ng-options="o as o for o in serverInfo.themes.email">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Select theme for emails that are sent by the server." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Select theme for emails that are sent by the server.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="internationalizationEnabled">Internationalization Enabled</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="internationalizationEnabled">Internationalization Enabled</label>
|
||||
<div class="col-md-3">
|
||||
<input ng-model="realm.internationalizationEnabled" name="internationalizationEnabled" id="internationalizationEnabled" onoffswitch />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="realm.internationalizationEnabled">
|
||||
<label class="col-sm-2 control-label" for="supportedLocales" class="control-label two-lines">Supported Locales</label>
|
||||
<label class="col-md-2 control-label" for="supportedLocales" class="control-label two-lines">Supported Locales</label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input id="supportedLocales" type="text" ui-select2="supportedLocalesOptions" ng-model="realm.supportedLocales" placeholder="Type a locale and enter" ng-required="realm.internationalizationEnabled" ng-disabled="!realm.internationalizationEnabled">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-show="realm.internationalizationEnabled">
|
||||
<label class="col-sm-2 control-label" for="defaultLocale">Default Locale</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="select-kc">
|
||||
<select id="defaultLocale"
|
||||
<label class="col-md-2 control-label" for="defaultLocale">Default Locale</label>
|
||||
<div class="col-md-3">
|
||||
<div>
|
||||
<select class="form-control" id="defaultLocale"
|
||||
ng-model="realm.defaultLocale"
|
||||
ng-options="o as o for o in realm.supportedLocales"
|
||||
ng-required="realm.internationalizationEnabled"
|
||||
|
@ -87,15 +85,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group" data-ng-show="access.manageRealm">
|
||||
<div class="col-md-10 col-md-offset-2">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div data-ng-hide="access.viewRealm">
|
||||
<h2 ><span>{{realm.realm}}</span></h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,26 +1,19 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<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 class="active"><a href="#/realms/{{realm.realm}}/token-settings">Timeout Settings</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Session and Token Timeout Settings</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Settings</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-realm></kc-tabs-realm>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="ssoSessionIdleTimeout">SSO Session Idle Timeout</label>
|
||||
<label class="col-md-2 control-label" for="ssoSessionIdleTimeout">SSO Session Idle Timeout</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.ssoSessionIdleTimeout"
|
||||
id="ssoSessionIdleTimeout" name="ssoSessionIdleTimeout"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="ssoSessionIdleTimeoutUnit" data-ng-model="realm.ssoSessionIdleTimeoutUnit" >
|
||||
<select class="form-control" name="ssoSessionIdleTimeoutUnit" data-ng-model="realm.ssoSessionIdleTimeoutUnit" >
|
||||
<option data-ng-selected="!realm.ssoSessionIdleTimeoutUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -29,19 +22,17 @@
|
|||
</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="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="ssoSessionMaxLifespan">SSO Session Max Lifespan</label>
|
||||
<label class="col-md-2 control-label" for="ssoSessionMaxLifespan">SSO Session Max Lifespan</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.ssoSessionMaxLifespan"
|
||||
id="ssoSessionMaxLifespan" name="ssoSessionMaxLifespan"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="ssoSessionMaxLifespanUnit" data-ng-model="realm.ssoSessionMaxLifespanUnit" >
|
||||
<select class="form-control" name="ssoSessionMaxLifespanUnit" data-ng-model="realm.ssoSessionMaxLifespanUnit" >
|
||||
<option data-ng-selected="!realm.ssoSessionMaxLifespanUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -50,19 +41,17 @@
|
|||
</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="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="accessTokenLifespan">Access Token Lifespan</label>
|
||||
<label class="col-md-2 control-label" for="accessTokenLifespan">Access Token Lifespan</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1"
|
||||
max="31536000" data-ng-model="realm.accessTokenLifespan"
|
||||
id="accessTokenLifespan" name="accessTokenLifespan"/>
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="accessTokenLifespanUnit" data-ng-model="realm.accessTokenLifespanUnit" >
|
||||
<select class="form-control" name="accessTokenLifespanUnit" data-ng-model="realm.accessTokenLifespanUnit" >
|
||||
<option data-ng-selected="!realm.accessTokenLifespanUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -71,17 +60,15 @@
|
|||
</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="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="accessCodeLifespan">Client login timeout</label>
|
||||
<label class="col-md-2 control-label" for="accessCodeLifespan">Client login timeout</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespan" id="accessCodeLifespan" name="accessCodeLifespan">
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
|
||||
<select class="form-control" name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
|
||||
<option data-ng-selected="!realm.accessCodeLifespanUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -90,16 +77,14 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Max time an client has to finish the access token protocol. This should normally be 1 minute." class="fa fa-info-circle"></span> </div>
|
||||
<kc-tooltip>Max time an client has to finish the access token protocol. This should normally be 1 minute.</kc-tooltip> </div>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="accessCodeLifespanLogin" class="two-lines">Login lifespan</label>
|
||||
<label class="col-md-2 control-label" for="accessCodeLifespanLogin" class="two-lines">Login lifespan</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespanLogin" id="accessCodeLifespanLogin" name="accessCodeLifespanLogin">
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="accessCodeLifespanLoginUnit" data-ng-model="realm.accessCodeLifespanLoginUnit">
|
||||
<select class="form-control" name="accessCodeLifespanLoginUnit" data-ng-model="realm.accessCodeLifespanLoginUnit">
|
||||
<option data-ng-selected="!realm.accessCodeLifespanLoginUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -108,17 +93,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Max time a user has to complete a login. This is recommended to be relatively long. 30 minutes or more." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Max time a user has to complete a login. This is recommended to be relatively long. 30 minutes or more.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="accessCodeLifespanUserAction" class="two-lines">Login user action lifespan</label>
|
||||
<label class="col-md-2 control-label" for="accessCodeLifespanUserAction" class="two-lines">Login user action lifespan</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6 form-inline">
|
||||
<input class="form-control" type="number" required min="1" max="31536000" data-ng-model="realm.accessCodeLifespanUserAction" id="accessCodeLifespanUserAction" name="accessCodeLifespanUserAction">
|
||||
</div>
|
||||
<div class="col-sm-4 select-kc">
|
||||
<select name="accessCodeLifespanUserActionUnit" data-ng-model="realm.accessCodeLifespanUserActionUnit">
|
||||
<select class="form-control" name="accessCodeLifespanUserActionUnit" data-ng-model="realm.accessCodeLifespanUserActionUnit">
|
||||
<option data-ng-selected="!realm.accessCodeLifespanUserActionUnit">Seconds</option>
|
||||
<option>Minutes</option>
|
||||
<option>Hours</option>
|
||||
|
@ -127,13 +110,17 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long. 5 minutes or more." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long. 5 minutes or more.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,130 +1,131 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
|
||||
<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}}/default-roles">Default Roles</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
|
||||
<li data-ng-hide="create">{{role.name}}</li>
|
||||
<li data-ng-show="create">Add Role</li>
|
||||
</ol>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>Role</strong> {{role.name}}</h1>
|
||||
<h1 data-ng-show="create"><strong>Add Role</strong></h1>
|
||||
|
||||
<div id="content">
|
||||
<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>
|
||||
<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">
|
||||
<fieldset>
|
||||
<legend><span class="text">Role</span></legend>
|
||||
<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-md-2 control-label" for="name"><span class="required" data-ng-show="create">*</span> Role name</label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
|
||||
required data-ng-readonly="!create">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="description">Description </label>
|
||||
<label class="col-md-2 control-label" for="description">Description </label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-ng-hide="create">
|
||||
<label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
|
||||
</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>
|
||||
<kc-tooltip>When this role is (un)assigned to a user any role associated with it will be (un)assigned implicitly.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="create">
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 Roles</span> </legend>
|
||||
<div class="form-group">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<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="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label">Available Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<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>
|
||||
</button>
|
||||
<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>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label">Associated Roles</label>
|
||||
<kc-tooltip>Realm level roles associated with this composite role.</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset ng-show="clients.length > 0 && !create && (compositeSwitch || role.composite)">
|
||||
<legend uncollapsed class="collapsible"><span class="text">Composite Client Roles</span> </legend>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="clients">Client <span tooltip-placement="right" tooltip="Select a client to view/modify roles associated with this composite." class="fa fa-info-circle"></span>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="clients" name="clients" ng-change="changeClient()" ng-model="compositeClient" ng-options="a.clientId for a in clients" ng-disabled="false">
|
||||
<option value="" selected> Select a Client...</option>
|
||||
</select>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row" data-ng-hide="compositeClient">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-show="compositeClient">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="available-client">Available Roles <span tooltip-placement="right" tooltip="Roles from this client that you can associate to this composite role." class="fa fa-info-circle"></span></label>
|
||||
<div class="row" data-ng-show="compositeClient">
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Roles from this client that you can associate to this composite role.</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons kc-vertical">
|
||||
<button class="btn btn-default" type="submit" ng-click="addClientRole()" tooltip="Associate role" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right">Move right</span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left">Move left</span>
|
||||
Add selected <i class="fa fa-angle-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="assigned-client">Associated Roles <span tooltip-placement="right" tooltip="Client roles associated with this composite role." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-4">
|
||||
<label class="control-label" for="assigned-client">Associated Roles</label>
|
||||
<kc-tooltip>Client roles associated with this composite role.</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Disassociate role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageRealm">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<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>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,27 +1,28 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Roles</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Realm-Level Roles</h2>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="3">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." data-ng-model="searchQuery" class="form-control search">
|
||||
<button class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by name">
|
||||
Icon: search
|
||||
</button>
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="searchQuery" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" type="submit"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right" data-ng-show="access.manageRealm">
|
||||
<a class="btn btn-primary" href="#/create/role/{{realm.realm}}">Add Role</a>
|
||||
<!-- <button class="remove disabled">Remove</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -31,29 +32,18 @@
|
|||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--
|
||||
<tfoot data-ng-show="roles && roles.length > 5">
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<div class="table-nav">
|
||||
<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="next">Next page</a><a href="#" class="last">Last page</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
-->
|
||||
<tbody>
|
||||
<tr ng-repeat="role in roles | filter:{name: searchQuery}">
|
||||
<td><a href="#/realms/{{realm.realm}}/roles/{{role.id}}">{{role.name}}</a></td>
|
||||
<td>{{role.composite}}</td>
|
||||
<td>{{role.description}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!roles || roles.length == 0">
|
||||
<td>No realm roles available</td>
|
||||
<tr data-ng-show="(roles | filter:{name: searchQuery}).length == 0">
|
||||
<td class="text-muted" colspan="3" data-ng-show="searchQuery">No results</td>
|
||||
<td class="text-muted" colspan="3" data-ng-hide="searchQuery">No realm roles available</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,52 +1,46 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Role Mappings</li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
<h2>User <span>{{user.username}}'s</span> Role Mappings</h2>
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageUsers">
|
||||
|
||||
<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>
|
||||
<div class="form-group col-sm-10">
|
||||
<div class="controls changing-selectors">
|
||||
<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>
|
||||
<h1><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageUsers">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">Realm Roles</label>
|
||||
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available">Available Roles</label>
|
||||
<select id="available" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmRoles"
|
||||
ng-options="r.name for r in realmRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
<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>
|
||||
</button>
|
||||
<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>
|
||||
Add selected <i class="fa fa-angle-right"></i>
|
||||
</button>
|
||||
<kc-tooltip>Realm roles that can be assigned to the user.</kc-tooltip>
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned">Assigned Roles</label>
|
||||
<kc-tooltip>Realm roles mapped to the user</kc-tooltip>
|
||||
<select id="assigned" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedRealmMappings"
|
||||
ng-options="r.name for r in realmMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteRealmRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
-
|
||||
</div>
|
||||
<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>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="realm-composite">Effective Roles</label>
|
||||
<kc-tooltip>All realm role mappings. Some roles here might be inherited from a mapped composite role.</kc-tooltip>
|
||||
<select id="realm-composite" class="form-control" multiple size=5
|
||||
ng-disabled="true"
|
||||
ng-model="dummymodel"
|
||||
|
@ -55,53 +49,43 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset ng-show="clients.length > 0">
|
||||
<legend><span class="text">Client Roles</span> </legend>
|
||||
<div class="form-group input-select">
|
||||
<label class="col-sm-2 control-label" for="clients">Client <span tooltip-placement="right" tooltip="Select a client to view or modify additional roles to map." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<div class="select-kc">
|
||||
<select id="clients" name="clients" ng-change="changeClient()" ng-model="client" ng-options="a.clientId for a in clients" ng-disabled="false">
|
||||
<option value="" selected> Select a Client...</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label" class="control-label">
|
||||
<span>Client Roles</span>
|
||||
<select class="form-control" id="clients" name="clients" ng-change="changeClient()" ng-model="client" ng-options="a.clientId for a in clients" ng-disabled="false"></select>
|
||||
</label>
|
||||
<div class="col-md-10">
|
||||
<div class="row" data-ng-hide="client">
|
||||
<div class="col-md-4"><span class="text-muted">Select client to view roles for client</span></div>
|
||||
</div>
|
||||
<div class="form-group" ng-show="client">
|
||||
<div class="controls changing-selectors col-sm-10">
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="available-client">Available Roles <span tooltip-placement="right" tooltip="Assignable roles from this client." class="fa fa-info-circle"></span></label>
|
||||
<div class="row" data-ng-show="client">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="available-client">Available Roles</label>
|
||||
<kc-tooltip>Assignable roles from this client.</kc-tooltip>
|
||||
<select id="available-client" class="form-control" multiple size="5"
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientRoles"
|
||||
ng-options="r.name for r in clientRoles">
|
||||
</select>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
<button class="btn btn-default" type="submit" ng-click="addClientRole()" tooltip="Assign role" tooltip-placement="right">
|
||||
<span class="kc-icon-arrow-right">Move right</span>
|
||||
</button>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<span class="kc-icon-arrow-left">Move left</span>
|
||||
Add selected <i class="fa fa-angle-double-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<label class="control-label" for="assigned-client">Assigned Roles <span tooltip-placement="right" tooltip="Role mappings for this client." class="fa fa-info-circle"></span></label>
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="assigned-client">Assigned Roles</label>
|
||||
<kc-tooltip>Role mappings for this client.</kc-tooltip>
|
||||
<select id="assigned-client" class="form-control" multiple size=5
|
||||
ng-multiple="true"
|
||||
ng-model="selectedClientMappings"
|
||||
ng-options="r.name for r in clientMappings">
|
||||
</select>
|
||||
<button class="btn btn-default" type="submit" ng-click="deleteClientRole()" tooltip="Unassign role" tooltip-placement="left">
|
||||
<i class="fa fa-angle-double-left"></i> Remove selected
|
||||
</button>
|
||||
</div>
|
||||
<div class="middle-buttons">
|
||||
-
|
||||
</div>
|
||||
<div class="select-title">
|
||||
<div class="col-md-3">
|
||||
<label class="control-label" for="client-composite">Effective Roles <span tooltip-placement="right" tooltip="Role mappings for this client. Some roles here might be inherited from a mapped composite role." class="fa fa-info-circle"></span></label>
|
||||
<select id="client-composite" class="form-control" multiple size=5
|
||||
ng-disabled="true"
|
||||
|
@ -111,7 +95,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,9 +1,5 @@
|
|||
<div id="content-area" class="col-sm-12" role="main">
|
||||
<h2></h2>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<h2>Server Info</h2>
|
||||
<div class="col-md-12">
|
||||
<h1>Server Info</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
|
@ -14,17 +10,29 @@
|
|||
<td>Server Time</td>
|
||||
<td>{{serverInfo.serverTime}} (<a data-ng-click="serverInfoUpdate()">update</a>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Providers</td>
|
||||
<td>
|
||||
</table>
|
||||
|
||||
<fieldset>
|
||||
<legend collapsed>Providers</legend>
|
||||
<div class="form-group">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>SPI</th>
|
||||
<th>Providers</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr data-ng-repeat="(spi, providers) in serverInfo.providers">
|
||||
<td>{{spi}}</td>
|
||||
<td>{{providers.sort().join(', ')}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<td>
|
||||
<div data-ng-repeat="provider in providers">
|
||||
{{provider}}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
|
@ -1,13 +1,11 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Sessions</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<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}}/sessions/revocation">Revocation</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Total Active Sessions</h2>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -29,5 +27,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,31 +1,30 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Sessions</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<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 class="active"><a href="#/realms/{{realm.realm}}/sessions/revocation">Revocation</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2 data-ng-hide="create"><span>{{realm.realm}}</span> Revocation Policies</h2>
|
||||
|
||||
<form class="form-horizontal" name="credentialForm" novalidate kc-read-only="!access.manageRealm">
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="notBefore">Not Before</label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="notBefore">Not Before</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-disabled="true" class="form-control" type="text" id="notBefore" name="notBefore" data-ng-model="notBefore" autofocus>
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Revoke any tokens issued before this date." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Revoke any tokens issued before this date.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="pull-right form-actions" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="clear()" class="btn btn-default btn-lg">Clear
|
||||
</button>
|
||||
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-primary btn-lg">Set To Now
|
||||
</button>
|
||||
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary btn-lg" tooltip="For every client that has an admin URL, notify them of the new revocation policy." tooltip-placement="bottom">Push
|
||||
</button>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="access.manageClients">
|
||||
<button type="submit" data-ng-click="setNotBeforeNow()" class="btn btn-default">Set To Now</button>
|
||||
<button type="submit" data-ng-click="clear()" class="btn btn-default">Clear</button>
|
||||
<button type="submit" data-ng-click="pushRevocation()" class="btn btn-primary" tooltip="For every client that has an admin URL, notify them of the new revocation policy." tooltip-placement="bottom">Push</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
<fieldset>
|
||||
<legend collapsed><span class="text">Contact Information</span> <span tooltip-placement="right" tooltip="Expand this section to configure user's contact information." class="fa fa-info-circle"></span></legend>
|
||||
<legend collapsed><span class="text">Contact Information</span> <kc-tooltip>Expand this section to configure user's contact information.</kc-tooltip></legend>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="street">Street</label>
|
||||
<div class="col-sm-6">
|
||||
<label class="col-md-2 control-label" for="street">Street</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.attributes.street" class="form-control" type="text" name="street" id="street" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Street address." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Street address.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="locality">City or Locality</label>
|
||||
<div class="col-sm-6">
|
||||
<label class="col-md-2 control-label" for="locality">City or Locality</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.attributes.locality" class="form-control" type="text" name="locality" id="locality" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="City or locality." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>City or locality.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="region">State, Province, or Region</label>
|
||||
<div class="col-sm-6">
|
||||
<label class="col-md-2 control-label" for="region">State, Province, or Region</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.attributes.region" class="form-control" type="text" name="region" id="region" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="State, province, prefecture, or region." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>State, province, prefecture, or region.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="postal_code">Zip or Postal code</label>
|
||||
<div class="col-sm-6">
|
||||
<label class="col-md-2 control-label" for="postal_code">Zip or Postal code</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.attributes.postal_code" class="form-control" type="text" name="postal_code" id="postal_code" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Zip code or postal code." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Zip code or postal code.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="country">Country</label>
|
||||
<div class="col-sm-6">
|
||||
<label class="col-md-2 control-label" for="country">Country</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.attributes.country" class="form-control" type="text" name="country" id="country" />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Country name." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Country name.</kc-tooltip>
|
||||
</div>
|
||||
</fieldset>
|
|
@ -1,13 +1,13 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Consents</li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
<h2>User <span>{{user.username}}</span> Consents <span tooltip-placement="right" tooltip="This page shows you all the consents, which user granted permissions" class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -38,10 +38,13 @@
|
|||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-danger" ng-click="revokeConsent(consent.clientId)">Revoke consent</button>
|
||||
<button class="btn btn-danger" ng-click="revokeConsent(consent.clientId)">
|
||||
<i class="pficon pficon-delete"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,61 +1,60 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Credentials</li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
<h2>User <span>{{user.username}}'s</span> Credentials <span tooltip-placement="right" tooltip="This page allows you to reset the user's password with a temporary one that they have to change the first time they log in or it allows you to change the password permanently." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<form class="form-horizontal" name="userForm" novalidate>
|
||||
<fieldset class="border-top">
|
||||
<legend><span class="text">Reset Password</span></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="password">New password <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="password">New password <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="password" name="password" data-ng-model="password" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="confirmPassword">Password confirmation <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-sm-4">
|
||||
<label class="col-md-2 control-label" for="confirmPassword">Password confirmation <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="temporaryPassword">Temporary</label>
|
||||
<label class="col-md-2 control-label" for="temporaryPassword">Temporary</label>
|
||||
<div class="col-sm-6">
|
||||
<input ng-model="temporaryPassword" name="temporaryPassword" id="temporaryPassword" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="If enabled user is required to change password on next login" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>If enabled user is required to change password on next login</kc-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="password && confirmPassword">
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="password && confirmPassword">
|
||||
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)">Reset Password</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="border-top" data-ng-show="user.email || user.totp">
|
||||
<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-md-2 control-label" for="password">Reset password email</label>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-ng-show="user.totp">
|
||||
<label class="col-sm-2 control-label">Remove totp</label>
|
||||
<label class="col-md-2 control-label">Remove totp</label>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,37 +1,28 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-show="create">
|
||||
<li class="active"><a href="">User List</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li>
|
||||
</ul>
|
||||
<div id="content">
|
||||
<ol class="breadcrumb" data-ng-hide="create">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Attributes</li>
|
||||
<li data-ng-hide="create">{{user.username}}</li>
|
||||
<li data-ng-show="create">Add User</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb" data-ng-show="create">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li class="active">Add User</li>
|
||||
</ol>
|
||||
<h2 data-ng-show="create" class="pull-left">Add User</h2>
|
||||
<h2 data-ng-hide="create" class="pull-left">User <span>{{user.username}}'s</span> Attributes</h2>
|
||||
<p class="subtitle"><span class="required">*</span> Required fields</p>
|
||||
|
||||
<h1 data-ng-hide="create"><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
<h1 data-ng-show="create">Add User</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<form class="form-horizontal" name="userForm" novalidate kc-read-only="!access.manageUsers">
|
||||
|
||||
<fieldset class="border-top">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label"for="id">ID</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label"for="id">ID</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" id="id" name="id" data-ng-model="user.id" autofocus data-ng-readonly="true">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
|
||||
<div class="col-md-6">
|
||||
<!-- Characters >,<,/,\ are forbidden in username -->
|
||||
<input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus
|
||||
required ng-pattern="/^[^\<\>\\\/]*$/" data-ng-readonly="!create">
|
||||
|
@ -39,65 +30,65 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="email">Email</label>
|
||||
<label class="col-md-2 control-label" for="email">Email</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="email" name="email" id="email"
|
||||
data-ng-model="user.email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="firstName">First Name</label>
|
||||
<label class="col-md-2 control-label" for="firstName">First Name</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" name="firstName" id="firstName"
|
||||
data-ng-model="user.firstName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="lastName">Last Name</label>
|
||||
<label class="col-md-2 control-label" for="lastName">Last Name</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" name="lastName" id="lastName"
|
||||
data-ng-model="user.lastName">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="userEnabled">User Enabled</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label" for="userEnabled">User Enabled</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="A disabled user cannot login." class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>A disabled user cannot login.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix block" data-ng-show="!create && user.federationLink">
|
||||
<label class="col-sm-2 control-label" for="userEnabled">Federation Link</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label" for="userEnabled">Federation Link</label>
|
||||
<div class="col-md-6">
|
||||
<a href="{{federationLink}}">{{federationLinkName}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group clearfix block">
|
||||
<label class="col-sm-2 control-label" for="emailVerified">Email verified</label>
|
||||
<div class="col-sm-5">
|
||||
<label class="col-md-2 control-label" for="emailVerified">Email verified</label>
|
||||
<div class="col-md-6">
|
||||
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" onoffswitch />
|
||||
</div>
|
||||
<span tooltip-placement="right" tooltip="Has the user's email been verified?" class="fa fa-info-circle"></span>
|
||||
<kc-tooltip>Has the user's email been verified?</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<label class="col-sm-2 control-label" for="reqActions">Required User Actions</label>
|
||||
<label class="col-md-2 control-label" for="reqActions">Required User Actions</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<div class="col-md-6">
|
||||
<select ui-select2 id="reqActions" ng-model="user.requiredActions" data-placeholder="Select an action..." multiple>
|
||||
<option ng-repeat="action in userReqActionList" value="{{action.id}}">{{action.text}}</option>
|
||||
</select>
|
||||
</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>
|
||||
<kc-tooltip>Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure TOTP' requires setup of a mobile password generator.</kc-tooltip>
|
||||
</div>
|
||||
<div class="form-group clearfix" data-ng-if="realm.internationalizationEnabled">
|
||||
<label class="col-sm-2 control-label" for="locale">Locale</label>
|
||||
<div class="col-sm-5">
|
||||
<div class="select-kc">
|
||||
<select id="locale"
|
||||
<label class="col-md-2 control-label" for="locale">Locale</label>
|
||||
<div class="col-md-6">
|
||||
<div>
|
||||
<select class="form-control" id="locale"
|
||||
ng-model="user.attributes.locale"
|
||||
ng-options="o as o for o in realm.supportedLocales">
|
||||
<option value="" disabled selected>Select one...</option>
|
||||
|
@ -106,18 +97,24 @@
|
|||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div data-ng-include data-src="resourceUrl + '/partials/user-attribute-entry.html'"></div>
|
||||
<div class="pull-right form-actions" data-ng-show="create && access.manageUsers">
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-cancel data-ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right form-actions" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-reset data-ng-show="changed">Clear changes</button>
|
||||
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
|
||||
<button kc-save data-ng-show="changed">Save</button>
|
||||
<button kc-reset data-ng-show="changed">Cancel</button>
|
||||
<button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,13 +1,13 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Federated Identities</li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
<h2>User <span>{{user.username}}</span> Federated Identities <span tooltip-placement="right" tooltip="This page shows you all the provisioned identities for an user from trusted identity providers." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -22,5 +22,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,20 +1,15 @@
|
|||
<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-sm-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
|
||||
<li class="active"><a href="">Federation</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> User Federation Providers</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1>
|
||||
<span><strong>User Federation</strong> {{realm.realm|capitalize}}</span>
|
||||
</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr ng-show="providers.length > 0 && access.manageUsers">
|
||||
<th colspan="3" class="kc-table-actions">
|
||||
<div class="pull-right">
|
||||
<div class="select-kc">
|
||||
<select ng-model="selectedProvider"
|
||||
<div>
|
||||
<select class="form-control" ng-model="selectedProvider"
|
||||
ng-options="p.id for p in providers"
|
||||
data-ng-change="addProvider(selectedProvider); selectedProvider = null">
|
||||
<option value="" disabled selected>Add provider...</option>
|
||||
|
@ -36,9 +31,10 @@
|
|||
<td>{{instance.priority}}</td>
|
||||
</tr>
|
||||
<tr data-ng-show="!instances || instances.length == 0">
|
||||
<td>No user federation providers configured</td>
|
||||
<td class="text-muted">No user federation providers configured</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,30 +1,26 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<li class="active"><a href="">User List</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/user-federation">Federation</a></li>
|
||||
</ul>
|
||||
<h2></h2>
|
||||
<div id="content">
|
||||
<h2><span>{{realm.realm}}</span> Users</h2>
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<h1><strong>Users</strong> {{realm.realm|capitalize}}</h1>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<caption data-ng-show="users" class="hidden">Table of realm users</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="kc-table-actions" colspan="4">
|
||||
<div class="search-comp clearfix">
|
||||
<input type="text" placeholder="Search..." data-ng-model="query.search" class="form-control search"
|
||||
onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
|
||||
<button data-ng-click="firstPage()" type="submit"
|
||||
class="kc-icon-search" tooltip-placement="right"
|
||||
tooltip="Search by full name, last name, email, or username.">
|
||||
Icon: search
|
||||
</button>
|
||||
<th colspan="4">
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" placeholder="Search..." data-ng-model="query.search" class="form-control search" onkeyup="if(event.keyCode == 13){$(this).next('I').click();}">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search" data-ng-click="firstPage()" type="submit"></i>
|
||||
</div>
|
||||
<span><span>or</span><button class="kc-link" ng-click="query.search = null; firstPage()">View all users</button></span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-primary" ng-click="query.search = null; firstPage()">View all users</button>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="#/create/user/{{realm.realm}}">Add User</a>
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -55,11 +51,12 @@
|
|||
<td>{{user.email}}</td>
|
||||
</tr>
|
||||
<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="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 class="text-muted" data-ng-show="!users">Please enter a search, or click on view all users</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">No results</td>
|
||||
<td class="text-muted" data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No users available</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
|
@ -1,13 +1,13 @@
|
|||
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
|
||||
<div id="content-area" class="col-md-9" role="main">
|
||||
<kc-navigation-user></kc-navigation-user>
|
||||
<div id="content">
|
||||
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
|
||||
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
|
||||
<li class="active">Sessions</li>
|
||||
<li>{{user.username}}</li>
|
||||
</ol>
|
||||
<h2>User <span>{{user.username}}'s</span> Sessions <span tooltip-placement="right" tooltip="View active logins of this user." class="fa fa-info-circle"></span></h2>
|
||||
|
||||
<h1><strong>User</strong> {{user.username|capitalize}}</h1>
|
||||
|
||||
<kc-tabs-user></kc-tabs-user>
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -40,5 +40,6 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<kc-menu></kc-menu>
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
<div kc-sidebar-resize class="col-sm-3 col-md-2 col-sm-pull-9 col-md-pull-10 sidebar-pf sidebar-pf-left">
|
||||
<div class="nav-category">
|
||||
<h2>Configure</h2>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="((!path[2]
|
||||
|| path[2] == 'required-credentials'
|
||||
|| path[2] == 'login-settings'
|
||||
|| path[2] == 'theme-settings'
|
||||
|| path[2] == 'token-settings'
|
||||
|| path[2] == 'cache-settings'
|
||||
|| path[2] == 'defense'
|
||||
|| path[2] == 'keys-settings' || path[2] == 'smtp-settings' || path[2] == 'ldap-settings' || path[2] == 'auth-settings') && path[3] != 'clients') && 'active'">
|
||||
<a href="#/realms/{{realm.realm}}">Settings</a>
|
||||
</li>
|
||||
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'clients' || path[1] == 'client' || path[3] == 'clients') && 'active'"><a href="#/realms/{{realm.realm}}/clients">Clients</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || path[2] == 'default-roles' || (path[1] == 'role' && path[3] != 'clients')) && 'active'"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'identity-provider-settings' || path[2] == 'identity-provider-mappers') && 'active'"><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Providers</a></li>
|
||||
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'user-federation' || path[2] == 'user-federation') && 'active'"><a href="#/realms/{{realm.realm}}/user-federation">User Federation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="nav-category">
|
||||
<h2>Manage</h2>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<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 data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm">Sessions</a></li>
|
||||
<li data-ng-show="access.viewEvents" data-ng-class="(path[2] == 'events' || path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events">Events</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="nav-category" data-ng-hide="createRealm">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
|
@ -1,8 +0,0 @@
|
|||
<ul class="nav nav-tabs nav-tabs-pf" data-ng-hide="create">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-credentials'}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
||||
<li ng-class="{active: path[4] == 'sessions'}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
|
||||
<li ng-class="{active: path[4] == 'federated-identity'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/federated-identity">Federated Identities</a></li>
|
||||
<li ng-class="{active: path[4] == 'consents'}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/consents">Consents</a></li>
|
||||
</ul>
|
|
@ -3,11 +3,26 @@
|
|||
<li ng-class="{active: path[4] == 'credentials'}" data-ng-show="!client.publicClient && client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">Credentials</a></li>
|
||||
<li ng-class="{active: path[4] == 'saml'}" data-ng-show="client.protocol == 'saml' && (client.attributes['saml.client.signature'] == 'true' || client.attributes['saml.encrypt'] == 'true')"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">SAML Keys</a></li>
|
||||
<li ng-class="{active: path[4] == 'roles'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">Roles</a></li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a></li>
|
||||
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="!client.bearerOnly"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">Scope</a></li>
|
||||
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/mappers">Mappers</a>
|
||||
<kc-tooltip>Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server.</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'scope-mappings'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">Scope</a>
|
||||
<kc-tooltip>Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client.</kc-tooltip>
|
||||
</li>
|
||||
<li ng-class="{active: path[4] == 'revocation'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/revocation">Revocation</a></li>
|
||||
<!-- <li ng-class="{active: path[4] == 'identity-provider'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/identity-provider">Identity Provider</a></li> -->
|
||||
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/sessions">Sessions</a></li>
|
||||
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/sessions">Sessions</a>
|
||||
<kc-tooltip>View active sessions for this client. Allows you to see which users are active and when they logged in.</kc-tooltip>
|
||||
</li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'clustering'}" data-ng-show="!client.publicClient"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/clustering">Clustering</a></li>
|
||||
<li ng-class="{active: path[4] == 'installation'}" data-ng-show="client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/installation">Installation</a></li>
|
||||
|
||||
<li ng-class="{active: path[4] == 'installation'}" data-ng-show="client.protocol != 'saml'">
|
||||
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/installation">Installation</a>
|
||||
<kc-tooltip>Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your clients.</kc-tooltip>
|
||||
</li>
|
||||
|
||||
</ul>
|
|
@ -1,10 +1,11 @@
|
|||
<ul class="nav nav-tabs nav-tabs-pf">
|
||||
<ul class="nav nav-tabs">
|
||||
<li ng-class="{active: !path[2]}"><a href="#/realms/{{realm.realm}}">General</a></li>
|
||||
<li ng-class="{active: path[2] == 'login-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/login-settings">Login</a></li>
|
||||
<li ng-class="{active: path[2] == 'identity-provider-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/identity-provider-settings">Identity Provider</a></li>
|
||||
<li ng-class="{active: path[2] == 'required-credentials'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
|
||||
<li ng-class="{active: path[2] == 'keys-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
|
||||
<li ng-class="{active: path[2] == 'smtp-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
|
||||
<li ng-class="{active: path[2] == 'theme-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/theme-settings">Themes</a></li>
|
||||
<li ng-class="{active: path[2] == 'cache-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/cache-settings">Cache Config</a></li>
|
||||
<li ng-class="{active: path[2] == 'token-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/token-settings">Tokens</a></li>
|
||||
<li ng-class="{active: path[2] == 'defense'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/defense/headers">Security Defenses</a></li>
|
||||
</ul>
|
|
@ -0,0 +1,8 @@
|
|||
<ul class="nav nav-tabs" data-ng-show="!create">
|
||||
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
|
||||
<li ng-class="{active: path[4] == 'user-credentials'}" data-ng-show="access.manageUsers"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
|
||||
<li ng-class="{active: path[4] == 'role-mappings'}" ><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
||||
<li ng-class="{active: path[4] == 'consents'}"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/consents">Consents</a></li>
|
||||
<li ng-class="{active: path[4] == 'sessions'}" ><a href="#/realms/{{realm.realm}}/users/{{user.username}}/sessions">Sessions</a></li>
|
||||
<li ng-class="{active: path[4] == 'federated-identity'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/federated-identity">Federated Identities</a></li>
|
||||
</ul>
|
|
@ -1,846 +0,0 @@
|
|||
body {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
.header .container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.navbar-title {
|
||||
background-image: url('../img/logo.png');
|
||||
height: 25px;
|
||||
background-repeat: no-repeat;
|
||||
width: 103px;
|
||||
margin: 3px 10px 5px;
|
||||
text-indent: -99999px;
|
||||
}
|
||||
|
||||
.navbar-nav > li > .dropdown-menu {
|
||||
left: 20px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary li.dropdown.context > a {
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary > li > a {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary li.dropdown.context > a:hover,
|
||||
.navbar-pf .navbar-primary li.dropdown.context.open > a,
|
||||
.navbar-pf .navbar-primary > .active > a:hover {
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary > .active > a {
|
||||
background-color: rgba(0,0,0,0.1);
|
||||
border-bottom-color: rgba(0,0,0,0.3);
|
||||
border-right: rgba(0,0,0,0.3);
|
||||
border-top-color: rgba(0,0,0,0.1);
|
||||
font-weight: 600;
|
||||
background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
|
||||
background-image: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-utility {
|
||||
right: 20px;
|
||||
top: -34px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
|
||||
border-left: none;
|
||||
padding-top: 11px;
|
||||
padding-bottom: 10px;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
|
||||
top: 11px;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-utility > li > a:hover,
|
||||
.navbar-pf .navbar-utility > .open > a,
|
||||
.navbar-pf .navbar-utility > .open > a:hover {
|
||||
background-color: rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
html, body, body > .container, #view {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body > .container {
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
|
||||
#content .glyphicon {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
#content .glyphicon > span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.kc-button {
|
||||
background-image: -moz-linear-gradient(center top , #FAFAFA 0%, #EDEDED 100%);
|
||||
border: 1px solid #BBBBBB;
|
||||
border-radius: 2px;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
font-size: .9em;
|
||||
font-weight: bold;
|
||||
line-height: 2.18182em;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15);
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.04em;
|
||||
/*padding: 0.307692em 1.07692em;*/
|
||||
padding: 0 1.07692em;
|
||||
/*margin: 0.5em;*/
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.kc-button.kc-vertical {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.fieldset-notice {
|
||||
color: #B7B7B7;
|
||||
font-size: 11px;
|
||||
float: right;
|
||||
margin-top: -2em;
|
||||
}
|
||||
|
||||
th.kc-table-actions {
|
||||
line-height: 1em !important;
|
||||
}
|
||||
|
||||
.action-div {
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.required {
|
||||
color: #CB2915;
|
||||
}
|
||||
|
||||
#content-area {
|
||||
border-color: #CECECE;
|
||||
border-style: solid;
|
||||
border-width: 0 1px;
|
||||
padding: 0 0 40px;
|
||||
background-color: #fff;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
#content-area > * {
|
||||
padding: 0 30px;
|
||||
}
|
||||
|
||||
#content-area > .nav {
|
||||
border-color: #CECECE;
|
||||
padding: 0 20px;
|
||||
margin-bottom: 0;
|
||||
padding: 10px 0 0 30px;
|
||||
}
|
||||
|
||||
#container-right-bg {
|
||||
border-width: 0 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #cecece;
|
||||
bottom: 0;
|
||||
position: fixed;
|
||||
top: 70px;
|
||||
z-index: -10;
|
||||
margin-left:26.6em;
|
||||
width: 79.8em;
|
||||
}
|
||||
|
||||
header .navbar {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#idletimeout {
|
||||
background: #CC5100;
|
||||
color: #FFFFFF;
|
||||
font-size: 1.1em;
|
||||
padding: 0.90909090909091em;
|
||||
text-align: center;
|
||||
display: none;
|
||||
}
|
||||
#idletimeout a {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#content {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
/* Forms */
|
||||
|
||||
p.subtitle {
|
||||
float: right;
|
||||
color: #909090;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.form-horizontal,
|
||||
.subtitle + div {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.kc-link {
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
font-weight: normal;
|
||||
font-size: 1em;
|
||||
color: #0099D3;
|
||||
letter-spacing: 0;
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
.kc-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.search-comp {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 0.90909090909091em;
|
||||
}
|
||||
.search-comp input[type="text"] {
|
||||
padding-right: 2.45454545454545em;
|
||||
font-weight: normal;
|
||||
}
|
||||
.search-comp .kc-icon-search {
|
||||
position: absolute;
|
||||
right: 0.2em;
|
||||
top: 0.6em;
|
||||
opacity: 0.5;
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
.search-comp .kc-icon-search:hover,
|
||||
.search-comp .kc-icon-search:active,
|
||||
.search-comp .kc-icon-search:focus {
|
||||
background-image: url('img/sprites.png');
|
||||
opacity: 1;
|
||||
filter: alpha(opacity=100);
|
||||
-webkit-transition: ease-in-out opacity 0.25s;
|
||||
-moz-transition: ease-in-out opacity 0.25s;
|
||||
-o-transition: ease-in-out opacity 0.25s;
|
||||
transition: ease-in-out opacity 0.25s;
|
||||
}
|
||||
.search-comp .kc-icon-search + .tooltip {
|
||||
width: 20em;
|
||||
font-weight: normal;
|
||||
}
|
||||
.search-comp + span {
|
||||
font-weight: normal;
|
||||
color: #A1A1A1;
|
||||
}
|
||||
.search-comp + span span {
|
||||
margin-left: 0.45454545454545em;
|
||||
margin-right: 0.45454545454545em;
|
||||
display: inline-block;
|
||||
}
|
||||
.search-comp + span .link {
|
||||
font-size: 0.90909090909091em;
|
||||
}
|
||||
|
||||
form .btn + .btn {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.multiple + .multiple {
|
||||
clear: both;
|
||||
margin-left: 16.666666666666664%;
|
||||
}
|
||||
|
||||
/* Top menu */
|
||||
|
||||
#kc-navigation li.active {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Side menu */
|
||||
|
||||
.bs-sidebar {
|
||||
background-color: #f9f9f9;
|
||||
padding-top: 44px;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
z-index: 20;
|
||||
}
|
||||
.bs-sidebar ul {
|
||||
list-style: none;
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.bs-sidebar ul li {
|
||||
margin-bottom: 0.5em;
|
||||
margin-left: -1em;
|
||||
}
|
||||
.bs-sidebar ul li a {
|
||||
font-size: 14px;
|
||||
padding-left: 25px;
|
||||
color: #4d5258;
|
||||
line-height: 28px;
|
||||
display: block;
|
||||
border-width: 1px 0 1px 1px;
|
||||
border-style: solid;
|
||||
border-color: #f9f9f9;
|
||||
}
|
||||
.bs-sidebar ul li a:hover,
|
||||
.bs-sidebar ul li a:focus {
|
||||
text-decoration: none;
|
||||
color: #777777;
|
||||
border-right: 2px solid #aaa;
|
||||
}
|
||||
.bs-sidebar ul li.active a {
|
||||
background-color: #c7e5f0;
|
||||
border-color: #56bae0;
|
||||
font-weight: bold;
|
||||
background-image: url(../img/icon-sidebar-active.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
}
|
||||
|
||||
.bs-sidebar ul li.active a:hover {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* On-Off switch */
|
||||
|
||||
.onoffswitch {
|
||||
-moz-user-select: none;
|
||||
height: 26px;
|
||||
position: relative;
|
||||
width: 62px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox {
|
||||
display: none;
|
||||
}
|
||||
.onoffswitch .onoffswitch-label {
|
||||
border: 1px solid #bbb;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 62px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner {
|
||||
display: block;
|
||||
margin-left: -100%;
|
||||
transition: margin 0.3s ease-in 0s;
|
||||
width: 200%;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner > span {
|
||||
-moz-box-sizing: border-box;
|
||||
color: white;
|
||||
float: left;
|
||||
font-size: 11px;
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-weight: bold;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding: 0;
|
||||
width: 50%;
|
||||
}
|
||||
.onoffswitch .onoffswitch-switch {
|
||||
background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 2px;
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
right: 39px;
|
||||
top: 0;
|
||||
transition: all 0.3s ease-in 0s;
|
||||
-webkit-transition: all 0.3s ease-in 0s;
|
||||
width: 23px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner .onoffswitch-active {
|
||||
background-image: linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -o-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -moz-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -webkit-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -ms-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #00a9ec), color-stop(1, 0, #009bd3));
|
||||
color: #FFFFFF;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-active,
|
||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-inactive {
|
||||
background-image: none;
|
||||
background-color: #e5e5e5;
|
||||
color: #9d9fa1;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner .onoffswitch-inactive {
|
||||
background: linear-gradient(#fefefe, #e8e8e8) repeat scroll 0 0 transparent;
|
||||
color: #4d5258;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
|
||||
margin-left: 0;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* Inputs */
|
||||
|
||||
.form-horizontal .control-label {
|
||||
color: #909090;
|
||||
line-height: 1.4em;
|
||||
padding-top: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.control-label .required {
|
||||
position: absolute;
|
||||
right: -2px;
|
||||
}
|
||||
|
||||
/* Details stuff */
|
||||
|
||||
#content h2 {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-weight: 100;
|
||||
font-size: 24px;
|
||||
margin-bottom: 25px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#content h2.margin-top {
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
#content .subtitle.margin-top {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#content-area #content h2 span {
|
||||
color: #a1a1a1;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
fieldset.border-top {
|
||||
border-top: 1px solid #E9E8E8;
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
/* Legend stuff */
|
||||
legend {
|
||||
border-color: #E9E8E8;
|
||||
border-style: solid;
|
||||
border-width: 1px 0 0;
|
||||
display: block;
|
||||
font-size: 13px;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 13px;
|
||||
padding-top: 18px;
|
||||
}
|
||||
|
||||
legend.collapsible {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
legend .text {
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #505050;
|
||||
}
|
||||
|
||||
legend:hover .text {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* Icons */
|
||||
[class*="kc-icon-"] {
|
||||
display: inline-block;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
background-repeat: no-repeat;
|
||||
text-indent: -99999em;
|
||||
margin-right: 0.5em;
|
||||
vertical-align: text-top;
|
||||
}
|
||||
|
||||
button[class^="kc-icon-"] {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
line-height: 1em;
|
||||
}
|
||||
button[class^="kc-icon-"]:hover {
|
||||
background-image: url(img/sprites.png);
|
||||
}
|
||||
|
||||
legend .kc-icon-collapse,
|
||||
legend .kc-icon-expand {
|
||||
background-image: url(../img/icon-collapse-expand.png);
|
||||
background-position: left top;
|
||||
background-repeat: no-repeat;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-right: 1em;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
legend .kc-icon-expand {
|
||||
background-position: left -14px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
legend .kc-icon-collapse {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Realm selector from the top menu */
|
||||
|
||||
.header .navbar-primary li > .select-kc {
|
||||
background-color: #555A5E;
|
||||
background-image: url("../img/sprite-arrow-down.png");
|
||||
background-position: right -26px;
|
||||
background-repeat: no-repeat;
|
||||
border: 1px solid #676C6E;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
font-size: 0.769231em;
|
||||
margin-left: 1em;
|
||||
margin-top: 0.7em;
|
||||
padding-left: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.header .navbar-primary li .select-kc:hover {
|
||||
border-color: #7E8385;
|
||||
}
|
||||
.header .navbar-primary li .select-kc select {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.header .navbar-primary li .select-kc select:-moz-focusring {
|
||||
color: rgba(0, 0, 0, 0);
|
||||
text-shadow: 0 0 0 #FFFFFF;
|
||||
}
|
||||
.header .navbar-primary li .select-kc select option {
|
||||
background-color: #FFFFFF;
|
||||
color: #333333;
|
||||
}
|
||||
.header .navbar-primary li a#refresh {
|
||||
border: medium none;
|
||||
display: inline-block;
|
||||
font-size: 0.769231em;
|
||||
margin: 0.7em 0 0 1em;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.header .navbar-primary li a#refresh:hover {
|
||||
background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
}
|
||||
.header .navbar-primary li a#refresh .icon-spinner6 {
|
||||
background-image: url("../img/sprites-gray.png");
|
||||
margin-right: 0;
|
||||
}
|
||||
.header .navbar-primary li a#refresh .icon-spinner6:hover {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
background-image: url("../img/sprites-white.png");
|
||||
}
|
||||
|
||||
/* and from forms */
|
||||
|
||||
.select-kc {
|
||||
background: url("../img/select-arrow.png") no-repeat scroll right center #FFFFFF;
|
||||
border: 1px solid #B6B6B6;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1) inset;
|
||||
color: #333333;
|
||||
display: inline-block;
|
||||
font-family: "Open Sans",sans-serif;
|
||||
height: 26px;
|
||||
min-width: 75px;
|
||||
overflow: hidden;
|
||||
padding: 0 0.9em 0 0;
|
||||
}
|
||||
.select-kc:hover {
|
||||
border-color: #62AFDB;
|
||||
}
|
||||
.select-kc:focus {
|
||||
border-color: #62AFDB;
|
||||
box-shadow: 0 0 5px #62AFDB;
|
||||
}
|
||||
.select-kc.error {
|
||||
background-color: #F8E7E7;
|
||||
border-color: #BA1212;
|
||||
transition: all 0.33s ease-in-out 0s;
|
||||
}
|
||||
.select-kc.error:focus {
|
||||
box-shadow: 0 0 5px #BA1212;
|
||||
}
|
||||
.select-kc select {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
border: medium none;
|
||||
font-family: "Open Sans",sans-serif;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-left: -2px;
|
||||
margin-top: -2px;
|
||||
padding: 5px .496em;
|
||||
width: 150%;
|
||||
}
|
||||
.select-kc option {
|
||||
line-height: 2em;
|
||||
padding: 0.363636em 0.909091em;
|
||||
}
|
||||
.select-kc option:hover {
|
||||
background-color: #D5ECF9;
|
||||
}
|
||||
|
||||
/* Select2 */
|
||||
|
||||
.select2-container-multi .select2-choices .select2-search-field {
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
/* If input has a button attached to it*/
|
||||
|
||||
.kc-button-control {
|
||||
xwidth: auto;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* More inputs in one line */
|
||||
|
||||
.kc-multiline input {
|
||||
margin-bottom: .35em;
|
||||
}
|
||||
|
||||
.kc-item-deletable {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Left-Rigth selector form */
|
||||
|
||||
.changing-selectors .select-title label {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.changing-selectors .select-title {
|
||||
display: inline-block;
|
||||
}
|
||||
.changing-selectors .select-title label {
|
||||
margin-left: 0.2em;
|
||||
margin-bottom: 0.3em;
|
||||
margin-top: 0.5em;
|
||||
display: block;
|
||||
}
|
||||
.changing-selectors select {
|
||||
min-height: 150px;
|
||||
font-size: 12px;
|
||||
padding: 0.545454545454545em;
|
||||
min-width: 18.1818181818182em;
|
||||
border: 1px #b6b6b6 solid;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0px 2px 2px rgba(0, 0, 0, 0.1);
|
||||
color: #333;
|
||||
max-width: 200px;
|
||||
width: auto;
|
||||
min-width: 150px;
|
||||
display: inline-block;
|
||||
}
|
||||
.changing-selectors select:hover {
|
||||
border-color: #62afdb;
|
||||
}
|
||||
.changing-selectors select option[disabled="disabled"] {
|
||||
color: #aaa;
|
||||
}
|
||||
.changing-selectors .middle-buttons {
|
||||
display: inline-block;
|
||||
margin-left: 0.8em;
|
||||
margin-right: 0.8em;
|
||||
vertical-align: top;
|
||||
margin-top: 75px;
|
||||
}
|
||||
|
||||
.changing-selectors .middle-buttons .btn {
|
||||
display: block;
|
||||
}
|
||||
.changing-selectors .middle-buttons .btn + .btn {
|
||||
margin-left: 0;
|
||||
}
|
||||
.changing-selectors .middle-buttons button:first-child {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.changing-selectors .middle-buttons button.disabled span {
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
.changing-selectors .middle-buttons button span {
|
||||
margin-right: 0;
|
||||
vertical-align: bottom;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.changing-selectors .middle-buttons.kc-vertical .kc-button{
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Input file button */
|
||||
|
||||
.kc-button-input-file {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.kc-button-input-file .transparent {
|
||||
bottom: 0;
|
||||
cursor: pointer;
|
||||
height: 30em;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 30em;
|
||||
}
|
||||
.kc-button-input-file:hover .button {
|
||||
background-image: none;
|
||||
}
|
||||
.kc-uploaded-file {
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
margin-right: 10px;
|
||||
padding-top: 5px;
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
.kc-link-input-file {
|
||||
display: inline-block;
|
||||
margin-top: 0.1em;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.kc-link-input-file:hover .link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.kc-link-input-file .link {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.kc-link-input-file .transparent {
|
||||
bottom: 0;
|
||||
cursor: pointer;
|
||||
height: 30em;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 30em;
|
||||
}
|
||||
.kc-link-input-file .link:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Select2 fix for zero-width when nothing is selected */
|
||||
.select2-container-multi .select2-choices {
|
||||
min-width: 22em;
|
||||
}
|
||||
|
||||
/* Alerts */
|
||||
|
||||
.feedback-aligner {
|
||||
position: fixed;
|
||||
top: 1.5em;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.feedback-aligner .alert {
|
||||
background-position: 1.27273em center;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: 2px;
|
||||
border-width: 1px;
|
||||
color: #4D5258;
|
||||
display: inline-block;
|
||||
font-size: 1.1em;
|
||||
line-height: 1.4em;
|
||||
margin: 0;
|
||||
padding: 0.909091em 3.63636em;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
}
|
||||
.feedback-aligner .alert.alert-success {
|
||||
background-color: #E4F1E1;
|
||||
border-color: #4B9E39;
|
||||
}
|
||||
.feedback-aligner .alert.alert-danger {
|
||||
background-color: #F8E7E7;
|
||||
border-color: #B91415;
|
||||
}
|
||||
.feedback-aligner .alert.alert-warning {
|
||||
background-color: #FEF1E9;
|
||||
border-color: #F17528;
|
||||
}
|
||||
.feedback-aligner .alert.alert-info {
|
||||
background-color: #E4F3FA;
|
||||
border-color: #5994B2;
|
||||
}
|
||||
.modal-header h3 {
|
||||
margin: 5px 0;
|
||||
}
|
||||
.modal-footer {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
|
||||
.table > thead > tr > th,
|
||||
.table > tbody > tr > th,
|
||||
.table > tfoot > tr > th,
|
||||
.table > thead > tr > td,
|
||||
.table > tbody > tr > td,
|
||||
.table > tfoot > tr > td {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.actions {
|
||||
width: 70px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Realm Credentials */
|
||||
|
||||
.action-div > i {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table table {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.form-control[readonly] {
|
||||
cursor: default;
|
||||
border: none;
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
@import url("../lib/patternfly/css/patternfly.css");
|
||||
@import url("../lib/select2-3.4.1/select2.css");
|
||||
|
||||
@import url("admin-console.css");
|
||||
@import url("tables.css");
|
||||
@import url("sprites.css");
|
||||
|
||||
.navbar-pf {
|
||||
background-image: url('../img/header-bkgrnd.png');
|
||||
border-top: 3px solid rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary {
|
||||
font-size: 13px;
|
||||
background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,.4) 100%);
|
||||
background-image: linear-gradient(to bottom, rgba(0,0,0,.1) 0%, rgba(0,0,0,.4) 100%);
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-header {
|
||||
border-bottom: 1px solid rgba(255,255,255,.15);
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-primary li.dropdown.context > a,
|
||||
.navbar-pf .navbar-primary li.dropdown.context > a:hover,
|
||||
.navbar-pf .navbar-primary li.dropdown.context.open > a,
|
||||
.navbar-pf .navbar-primary > .active > a,
|
||||
.navbar-pf .navbar-primary > .active > a:hover{
|
||||
background-color: rgba(0,0,0,0.1);
|
||||
background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
|
||||
background-image: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
|
||||
border-bottom: none;
|
||||
border-right-color: rgba(255,255,255,0.15);
|
||||
border-top-color: rgba(255,255,255,0.05);
|
||||
}
|
||||
|
||||
.dropdown-menu .separator {
|
||||
border-top: 1px solid #ddd;
|
||||
margin-top: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
Before Width: | Height: | Size: 333 B |
Before Width: | Height: | Size: 80 KiB |
153
forms/common-themes/src/main/resources/theme/keycloak/admin/resources/css/styles.css
Executable file → Normal file
|
@ -1,2 +1,151 @@
|
|||
@import url("base-styles.css");
|
||||
@import url("overrides.css");
|
||||
html,body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.navbar-pf .navbar-brand {
|
||||
padding: 5px 0 0px;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.required {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.tooltip-inner {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.margin-top {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
|
||||
/*********** Loading ***********/
|
||||
|
||||
.loading {
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #eee;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
padding: 2px 200px 2px 5px;
|
||||
}
|
||||
|
||||
/*********** Feedback ***********/
|
||||
|
||||
.feedback-aligner {
|
||||
position: fixed;
|
||||
top: 15px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
.feedback-aligner .alert {
|
||||
border-radius: 2px;
|
||||
border-width: 1px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/*********** On-Off Switch ***********/
|
||||
|
||||
.onoffswitch {
|
||||
-moz-user-select: none;
|
||||
height: 26px;
|
||||
position: relative;
|
||||
width: 62px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox {
|
||||
display: none;
|
||||
}
|
||||
.onoffswitch .onoffswitch-label {
|
||||
border: 1px solid #bbb;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 62px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner {
|
||||
display: block;
|
||||
margin-left: -100%;
|
||||
transition: margin 0.3s ease-in 0s;
|
||||
width: 200%;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner > span {
|
||||
-moz-box-sizing: border-box;
|
||||
color: white;
|
||||
float: left;
|
||||
font-size: 11px;
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-weight: bold;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding: 0;
|
||||
width: 50%;
|
||||
}
|
||||
.onoffswitch .onoffswitch-switch {
|
||||
background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 2px;
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
right: 39px;
|
||||
top: 0;
|
||||
transition: all 0.3s ease-in 0s;
|
||||
-webkit-transition: all 0.3s ease-in 0s;
|
||||
width: 23px;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner .onoffswitch-active {
|
||||
background-image: linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -o-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -moz-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -webkit-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -ms-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #00a9ec), color-stop(1, 0, #009bd3));
|
||||
color: #FFFFFF;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-active,
|
||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-inactive {
|
||||
background-image: none;
|
||||
background-color: #e5e5e5;
|
||||
color: #9d9fa1;
|
||||
}
|
||||
.onoffswitch .onoffswitch-inner .onoffswitch-inactive {
|
||||
background: linear-gradient(#fefefe, #e8e8e8) repeat scroll 0 0 transparent;
|
||||
color: #4d5258;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
|
||||
margin-left: 0;
|
||||
}
|
||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
|
||||
/*********** Select 2 ***********/
|
||||
|
||||
.select2-container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.select2-container-multi .select2-choices .select2-search-field {
|
||||
height: 26px;
|
||||
}
|
|
@ -1,206 +0,0 @@
|
|||
|
||||
table tfoot tr .table-nav {
|
||||
float: right;
|
||||
}
|
||||
table tfoot tr .table-nav a,
|
||||
table tfoot tr .table-nav button {
|
||||
display: inline-block;
|
||||
line-height: 22px;
|
||||
border-left: 1px solid #d9d9d9;
|
||||
border-right: none;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
width: 3.5em;
|
||||
background-color: #f3f3f3;
|
||||
background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));
|
||||
text-indent: -99999em;
|
||||
background-image: url(img/sprite-table-nav.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: left top;
|
||||
vertical-align: top;
|
||||
}
|
||||
table tfoot tr .table-nav a.last,
|
||||
table tfoot tr .table-nav button.last {
|
||||
background-position: top right;
|
||||
}
|
||||
table tfoot tr .table-nav a.prev,
|
||||
table tfoot tr .table-nav button.prev {
|
||||
background-position: bottom left;
|
||||
}
|
||||
table tfoot tr .table-nav a.next,
|
||||
table tfoot tr .table-nav button.next {
|
||||
background-position: bottom right;
|
||||
}
|
||||
table tfoot tr .table-nav a:hover,
|
||||
table tfoot tr .table-nav button:hover {
|
||||
background-image: url(img/sprite-table-nav.png);
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
table tfoot tr .table-nav a:active,
|
||||
table tfoot tr .table-nav button:active {
|
||||
box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.25) inset;
|
||||
}
|
||||
table tfoot tr .table-nav a.disabled,
|
||||
table tfoot tr .table-nav button:disabled {
|
||||
opacity: 0.5;
|
||||
filter: alpha(opacity=50);
|
||||
cursor: default;
|
||||
}
|
||||
table tfoot tr .table-nav a.disabled:active,
|
||||
table tfoot tr .table-nav button:disabled:active {
|
||||
box-shadow: none;
|
||||
}
|
||||
table tfoot tr .table-nav span {
|
||||
font-size: 1.1em;
|
||||
border-left: 1px solid #d9d9d9;
|
||||
line-height: 2.18181818181818em;
|
||||
display: inline-block;
|
||||
padding: 0 1.36363636363636em;
|
||||
}
|
||||
|
||||
|
||||
td.events-success {
|
||||
background-color: #E4F1E1 !important;
|
||||
}
|
||||
|
||||
td.events-error {
|
||||
background-color: #F8E7E7 !important;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
table {
|
||||
width: 100%;
|
||||
border: 1px #dcdcdc solid;
|
||||
border-spacing: 0;
|
||||
}
|
||||
table caption {
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
padding: 11.5px;
|
||||
}
|
||||
table tbody tr:nth-child(even) {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
table tbody tr:nth-child(odd) {
|
||||
background-color: #fff;
|
||||
}
|
||||
table tbody tr td,
|
||||
table thead tr th {
|
||||
font-weight: normal;
|
||||
padding: 6px 15px;
|
||||
font-size: 11.5px;
|
||||
border-top: 1px #ebebeb;
|
||||
border-right: 1px #dcdcdc solid;
|
||||
text-align: left;
|
||||
}
|
||||
.kc-table-actions {
|
||||
padding: 1px;
|
||||
border-top: none;
|
||||
}
|
||||
.kc-table-actions {
|
||||
padding: 1px;
|
||||
}
|
||||
.kc-table-number {
|
||||
text-align: right;
|
||||
width: 100px;
|
||||
}
|
||||
table thead tr th {
|
||||
font-weight: bold;
|
||||
border: none;
|
||||
border-right: 1px #dcdcdc solid;
|
||||
background-image: linear-gradient(top, #fafafa 0%, #eeeeee 100%);
|
||||
background-image: -o-linear-gradient(top, #fafafa 0%, #eeeeee 100%);
|
||||
background-image: -moz-linear-gradient(top, #fafafa 0%, #eeeeee 100%);
|
||||
background-image: -webkit-linear-gradient(top, #fafafa 0%, #eeeeee 100%);
|
||||
background-image: -ms-linear-gradient(top, #fafafa 0%, #eeeeee 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #eeeeee));
|
||||
border-bottom: 1px #cedede solid;
|
||||
}
|
||||
table thead tr th button,
|
||||
table thead tr th .button {
|
||||
margin-left: 0.72727272727273em;
|
||||
}
|
||||
table tbody tr:first-child td {
|
||||
border-top: 1px solid #f2f2f2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.kc-table-actions button + button,
|
||||
.kc-table-actions .button + button {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.kc-table-actions div.actions {
|
||||
float: right;
|
||||
font-size: 0.90909090909091em;
|
||||
}
|
||||
table tbody tr {
|
||||
border-top: 1px solid #ededed;
|
||||
}
|
||||
table tbody tr:hover {
|
||||
cursor: default;
|
||||
}
|
||||
table tbody tr td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
table tbody tr td.token-cell {
|
||||
padding: 0 0.7em;
|
||||
line-height: 0;
|
||||
}
|
||||
table tbody tr td.token-cell .token {
|
||||
padding-top: 0.18181818181818em;
|
||||
padding-bottom: 0.18181818181818em;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
table tbody tr td.token-cell button {
|
||||
float: left;
|
||||
margin-bottom: 7px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
table tbody.selectable-rows tr:hover {
|
||||
cursor: pointer;
|
||||
background-color: #ebebeb;
|
||||
}
|
||||
table tbody.selectable-rows tr:first-child td {
|
||||
padding-top: 9px;
|
||||
}
|
||||
table tbody.selectable-rows tr.selected,
|
||||
table tbody.selectable-rows tr.selected:hover {
|
||||
background-color: #eaf5fb;
|
||||
}
|
||||
table tbody.selectable-rows tr.selected td:first-child,
|
||||
table tbody.selectable-rows tr.selected:hover td:first-child {
|
||||
background-image: url(img/icon-row-selected.svg);
|
||||
background-position: 0.2em center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
table tfoot tr {
|
||||
border-top: 1px solid #cecece;
|
||||
}
|
||||
|
||||
.kc-table-actions > * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
td .form-group {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.kc-table-actions .form-group {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.kc-table-actions select {
|
||||
height: 26px;
|
||||
}
|
||||
*/
|
|
@ -1,39 +1,498 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.2" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="270px" height="10px" viewBox="1.5 0 270 10" overflow="scroll" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M123.49,9.379h-4.882V0.622h4.882v0.903h-3.862v2.821h3.63v0.898h-3.63v3.222h3.862V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M132.514,9.379h-1.158l-4.789-7.352h-0.046c0.062,0.864,0.094,1.655,0.094,2.374v4.978h-0.94V0.622h1.15 L131.6,7.94h0.045c-0.006-0.108-0.023-0.454-0.051-1.041c-0.028-0.582-0.039-0.998-0.028-1.255V0.622h0.951v8.753h-0.003V9.379 L132.514,9.379z"/>
|
||||
<path fill="#FFFFFF" d="M137.865,9.379h-1.018V1.527h-2.772V0.622h6.565v0.903h-2.772v7.852h-0.002V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M147.08,9.379h-4.878V0.622h4.878v0.903h-3.86v2.821h3.631v0.898h-3.631v3.222h3.86V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M150.287,5.735v3.64h-1.018V0.622h2.402c1.074,0,1.865,0.204,2.38,0.614 c0.514,0.412,0.771,1.032,0.771,1.858c0,1.156-0.586,1.94-1.763,2.349l2.382,3.934h-1.206l-2.122-3.644h-1.826L150.287,5.735 L150.287,5.735z M150.287,4.863h1.397c0.718,0,1.244-0.142,1.581-0.428c0.334-0.286,0.504-0.714,0.504-1.285 c0-0.582-0.17-0.997-0.512-1.254c-0.339-0.255-0.888-0.381-1.642-0.381h-1.324v3.349H150.287L150.287,4.863z"/>
|
||||
<path fill="#FFFFFF" d="M162.651,3.175c0,0.884-0.301,1.567-0.906,2.046c-0.605,0.477-1.473,0.715-2.598,0.715h-1.032V9.38h-1.015 V0.622h2.269C161.557,0.622,162.651,1.47,162.651,3.175z M158.115,5.058h0.92c0.898,0,1.555-0.146,1.959-0.435 c0.4-0.293,0.604-0.759,0.604-1.404c0-0.577-0.189-1.006-0.569-1.295c-0.38-0.279-0.972-0.423-1.773-0.423h-1.14V5.058 L158.115,5.058z"/>
|
||||
<path fill="#FFFFFF" d="M165.745,5.735v3.64h-1.019V0.622h2.403c1.073,0,1.864,0.204,2.383,0.614 c0.511,0.412,0.771,1.032,0.771,1.858c0,1.156-0.587,1.94-1.762,2.349l2.38,3.934h-1.205l-2.12-3.644h-1.827v0.002H165.745z M165.745,4.863h1.396c0.718,0,1.244-0.142,1.581-0.428c0.335-0.286,0.505-0.714,0.505-1.285c0-0.582-0.17-0.997-0.511-1.254 c-0.339-0.255-0.887-0.381-1.643-0.381h-1.323v3.349H165.745L165.745,4.863z"/>
|
||||
<path fill="#FFFFFF" d="M172.557,9.379V0.622h1.017v8.753h-1.017V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M181.162,7.047c0,0.773-0.282,1.374-0.839,1.804c-0.559,0.434-1.318,0.647-2.276,0.647 c-1.039,0-1.837-0.134-2.394-0.401V8.113c0.357,0.152,0.749,0.273,1.173,0.358c0.421,0.088,0.843,0.13,1.258,0.13 c0.68,0,1.188-0.129,1.531-0.383c0.345-0.257,0.514-0.62,0.514-1.074c0-0.303-0.06-0.555-0.183-0.748 c-0.121-0.194-0.32-0.374-0.609-0.536c-0.285-0.163-0.72-0.351-1.301-0.558c-0.815-0.29-1.398-0.636-1.748-1.036 c-0.351-0.398-0.524-0.92-0.524-1.562c0-0.674,0.254-1.211,0.763-1.611c0.508-0.398,1.177-0.599,2.013-0.599 c0.87,0,1.673,0.161,2.4,0.48l-0.317,0.884c-0.724-0.3-1.428-0.454-2.11-0.454c-0.539,0-0.958,0.114-1.265,0.347 c-0.302,0.231-0.453,0.553-0.453,0.965c0,0.305,0.057,0.551,0.168,0.745c0.114,0.195,0.302,0.372,0.566,0.533 c0.267,0.161,0.672,0.34,1.22,0.535c0.921,0.327,1.551,0.679,1.898,1.056C180.988,5.961,181.162,6.449,181.162,7.047z"/>
|
||||
<path fill="#FFFFFF" d="M188.081,9.379H183.2V0.622h4.881v0.903h-3.862v2.821h3.632v0.898h-3.632v3.222h3.862V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M199.203,9.379l-1.089-2.785h-3.51l-1.079,2.785h-1.032l3.463-8.793h0.855l3.443,8.793H199.203z M197.793,5.676l-1.017-2.712c-0.131-0.345-0.272-0.766-0.407-1.263c-0.09,0.383-0.212,0.804-0.378,1.263l-1.031,2.712H197.793z"/>
|
||||
<path fill="#FFFFFF" d="M207.259,3.175c0,0.884-0.302,1.567-0.907,2.046c-0.608,0.477-1.474,0.715-2.596,0.715h-1.032V9.38h-1.022 V0.622h2.274C206.167,0.622,207.259,1.47,207.259,3.175z M202.726,5.058h0.915c0.901,0,1.556-0.146,1.96-0.435 c0.399-0.293,0.605-0.759,0.605-1.404c0-0.577-0.189-1.006-0.569-1.295c-0.382-0.279-0.97-0.423-1.774-0.423h-1.137V5.058 L202.726,5.058z"/>
|
||||
<path fill="#FFFFFF" d="M214.892,3.175c0,0.884-0.306,1.567-0.908,2.046c-0.607,0.477-1.472,0.715-2.597,0.715h-1.032V9.38h-1.02 V0.622h2.272C213.794,0.622,214.892,1.47,214.892,3.175z M210.354,5.058h0.917c0.904,0,1.559-0.146,1.959-0.435 c0.404-0.293,0.604-0.759,0.604-1.404c0-0.577-0.188-1.006-0.567-1.295c-0.38-0.279-0.971-0.423-1.774-0.423h-1.139V5.058 L210.354,5.058z"/>
|
||||
<path fill="#FFFFFF" d="M216.967,9.379V0.622h1.021v7.832h3.858v0.922h-4.879V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M223.578,9.379V0.622h1.021v8.753h-1.021V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M230.992,1.406c-0.959,0-1.72,0.32-2.28,0.959c-0.556,0.642-0.833,1.518-0.833,2.633 c0,1.147,0.269,2.031,0.806,2.656c0.538,0.622,1.303,0.937,2.299,0.937c0.611,0,1.308-0.108,2.089-0.327v0.891 c-0.605,0.228-1.354,0.342-2.244,0.342c-1.288,0-2.284-0.395-2.987-1.18c-0.699-0.777-1.052-1.891-1.052-3.334 c0-0.902,0.171-1.69,0.507-2.371c0.335-0.678,0.823-1.202,1.46-1.569s1.387-0.551,2.249-0.551c0.918,0,1.719,0.168,2.407,0.504 l-0.431,0.875C232.323,1.56,231.656,1.406,230.992,1.406z"/>
|
||||
<path fill="#FFFFFF" d="M240.731,9.379l-1.09-2.785h-3.513l-1.073,2.785h-1.031l3.458-8.793h0.857l3.445,8.793H240.731z M239.323,5.676l-1.016-2.712c-0.133-0.345-0.271-0.766-0.406-1.263c-0.089,0.383-0.215,0.804-0.378,1.263l-1.033,2.712H239.323z"/>
|
||||
<path fill="#FFFFFF" d="M245.928,9.379h-1.017V1.527h-2.772V0.622h6.564v0.903h-2.771v7.852h-0.004V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M250.269,9.379V0.622h1.018v8.753h-1.018V9.379z"/>
|
||||
<path fill="#FFFFFF" d="M261.531,4.987c0,1.402-0.354,2.503-1.063,3.305c-0.706,0.805-1.691,1.206-2.955,1.206 c-1.29,0-2.285-0.396-2.988-1.186c-0.7-0.788-1.051-1.901-1.051-3.338c0-1.424,0.353-2.532,1.056-3.312 c0.7-0.785,1.704-1.18,2.992-1.18c1.261,0,2.24,0.399,2.95,1.2C261.182,2.479,261.531,3.58,261.531,4.987z M254.556,4.987 c0,1.186,0.25,2.085,0.755,2.696c0.508,0.614,1.241,0.923,2.203,0.923c0.972,0,1.705-0.311,2.2-0.919 c0.495-0.615,0.739-1.515,0.739-2.701c0-1.179-0.244-2.072-0.737-2.681c-0.49-0.61-1.223-0.914-2.189-0.914 c-0.968,0-1.706,0.306-2.213,0.918C254.808,2.926,254.556,3.817,254.556,4.987z"/>
|
||||
<path fill="#FFFFFF" d="M270.571,9.379h-1.163l-4.784-7.352h-0.049c0.061,0.864,0.094,1.655,0.094,2.374v4.978h-0.942V0.622h1.151 l4.772,7.319h0.049c-0.011-0.108-0.026-0.454-0.054-1.041c-0.028-0.582-0.041-0.998-0.03-1.255V0.622h0.952v8.755h0.004V9.379z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M9.059,3.334c0,1.013-0.298,1.796-0.896,2.347C7.566,6.234,6.717,6.51,5.618,6.51H4.929v3.008H2.48V0.451 h3.138c1.145,0,2.005,0.25,2.58,0.75C8.772,1.702,9.059,2.413,9.059,3.334z M4.929,4.513h0.447c0.368,0,0.66-0.103,0.877-0.31 C6.47,3.996,6.579,3.711,6.579,3.347c0-0.612-0.339-0.918-1.017-0.918H4.929V4.513z"/>
|
||||
<path fill="#FFFFFF" d="M19.178,9.518l-0.446-1.699h-2.945l-0.459,1.699h-2.691l2.958-9.104h3.268l2.995,9.104H19.178z M18.223,5.809L17.833,4.32C17.741,3.99,17.631,3.562,17.5,3.037c-0.13-0.525-0.216-0.901-0.257-1.128 c-0.037,0.211-0.111,0.558-0.22,1.042c-0.109,0.483-0.353,1.437-0.729,2.858H18.223z"/>
|
||||
<path fill="#FFFFFF" d="M29.948,9.518h-2.449V2.454h-2.214V0.451h6.871v2.003h-2.208V9.518z"/>
|
||||
<path fill="#FFFFFF" d="M40.563,9.518h-2.449V2.454H35.9V0.451h6.871v2.003h-2.208V9.518z"/>
|
||||
<path fill="#FFFFFF" d="M52.561,9.518h-5.382V0.451h5.382v1.965h-2.933v1.427h2.716v1.965h-2.716V7.52h2.933V9.518z"/>
|
||||
<path fill="#FFFFFF" d="M59.709,6.219v3.299H57.26V0.451h2.97c2.464,0,3.696,0.893,3.696,2.679c0,1.05-0.513,1.862-1.538,2.437 l2.642,3.951h-2.778l-1.922-3.299H59.709z M59.709,4.376h0.459c0.856,0,1.284-0.378,1.284-1.135c0-0.625-0.42-0.937-1.259-0.937 h-0.484V4.376z"/>
|
||||
<path fill="#FFFFFF" d="M77.598,9.518h-3.212L71.075,3.13h-0.056c0.079,1.004,0.118,1.771,0.118,2.301v4.086h-2.17V0.451h3.2 l3.299,6.301h0.037c-0.058-0.914-0.086-1.648-0.086-2.202V0.451h2.183V9.518z"/>
|
||||
<path fill="#FFFFFF" d="M85.082,9.518h-2.412V0.451h5.357v1.965h-2.945v1.73h2.716v1.966h-2.716V9.518z"/>
|
||||
<path fill="#FFFFFF" d="M92.627,9.518V0.451h2.449v7.088h3.491v1.979H92.627z"/>
|
||||
<path fill="#FFFFFF" d="M106.367,3.812l1.562-3.361h2.654l-2.983,5.525v3.541h-2.468V6.051l-2.983-5.6h2.667L106.367,3.812z"/>
|
||||
</g>
|
||||
</svg>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="120"
|
||||
height="20"
|
||||
viewBox="-3.268 0.083 120 20"
|
||||
enable-background="new -3.268 0.083 325.403 77.333"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="brand.svg"><metadata
|
||||
id="metadata7046"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs7044"><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_1_"
|
||||
id="linearGradient7503"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-85.7192"
|
||||
y1="-1070.1299"
|
||||
x2="-23.0562"
|
||||
y2="-1070.1299" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_2_"
|
||||
id="linearGradient7505"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,-302,-242.667)"
|
||||
x1="334.32031"
|
||||
y1="-357.21579"
|
||||
x2="326.04669"
|
||||
y2="-357.21579" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_3_"
|
||||
id="linearGradient7507"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-58.8633"
|
||||
y1="-1076.7139"
|
||||
x2="-51.862999"
|
||||
y2="-1057.2131" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_4_"
|
||||
id="linearGradient7509"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-75.903801"
|
||||
y1="-1064.3447"
|
||||
x2="-45.0681"
|
||||
y2="-1056.6775" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_5_"
|
||||
id="linearGradient7511"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-72.945801"
|
||||
y1="-1040.1738"
|
||||
x2="-64.320503"
|
||||
y2="-1082.4258" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_14_"
|
||||
id="linearGradient7513"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-66.2808"
|
||||
y1="-1035.334"
|
||||
x2="-66.2808"
|
||||
y2="-1045.5018" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#SVGID_15_"
|
||||
id="linearGradient7515"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"
|
||||
x1="-55.5112"
|
||||
y1="-1087.1055"
|
||||
x2="-55.5112"
|
||||
y2="-1087.1055" /></defs><sodipodi:namedview
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2048"
|
||||
inkscape:window-height="1128"
|
||||
id="namedview7042"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.357581"
|
||||
inkscape:cx="52.748537"
|
||||
inkscape:cy="-1.6861514"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g6865" /><g
|
||||
id="g6865"
|
||||
transform="matrix(0.14866632,0,0,0.14866632,14.719196,8.4313349)"><linearGradient
|
||||
id="SVGID_1_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-85.7192"
|
||||
y1="-1070.1299"
|
||||
x2="-23.0562"
|
||||
y2="-1070.1299"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FDFDFD"
|
||||
id="stop6874" /><stop
|
||||
offset="0.1452"
|
||||
style="stop-color:#F4F5F5"
|
||||
id="stop6876" /><stop
|
||||
offset="0.6844"
|
||||
style="stop-color:#D9DBDB"
|
||||
id="stop6878" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#CFD1D1"
|
||||
id="stop6880" /></linearGradient><linearGradient
|
||||
id="SVGID_2_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="334.32031"
|
||||
y1="-357.21579"
|
||||
x2="326.04669"
|
||||
y2="-357.21579"
|
||||
gradientTransform="matrix(1,0,0,-1,-302,-242.667)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#E6E6E6"
|
||||
id="stop6885" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#B2B3B3"
|
||||
id="stop6887" /></linearGradient><linearGradient
|
||||
id="SVGID_3_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-58.8633"
|
||||
y1="-1076.7139"
|
||||
x2="-51.862999"
|
||||
y2="-1057.2131"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#F6F6F6"
|
||||
id="stop6892" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#B2B3B3"
|
||||
id="stop6894" /></linearGradient><linearGradient
|
||||
id="SVGID_4_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-75.903801"
|
||||
y1="-1064.3447"
|
||||
x2="-45.0681"
|
||||
y2="-1056.6775"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#B8D7E9"
|
||||
id="stop6911" /><stop
|
||||
offset="0.3324"
|
||||
style="stop-color:#CCE3F1"
|
||||
id="stop6913" /><stop
|
||||
offset="0.6937"
|
||||
style="stop-color:#DAEBF7"
|
||||
id="stop6915" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#DFEEF9"
|
||||
id="stop6917" /></linearGradient><linearGradient
|
||||
id="SVGID_5_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-72.945801"
|
||||
y1="-1040.1738"
|
||||
x2="-64.320503"
|
||||
y2="-1082.4258"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#F1F9FE"
|
||||
id="stop6922" /><stop
|
||||
offset="0.4254"
|
||||
style="stop-color:#E9F5FD"
|
||||
id="stop6924" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E4F3FD"
|
||||
id="stop6926" /></linearGradient><g
|
||||
id="g6936"
|
||||
transform="matrix(2.0385634,0,0,2.0385634,-80.240752,-88.764594)"><linearGradient
|
||||
id="SVGID_6_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="35.512199"
|
||||
y1="-1053"
|
||||
x2="35.512199"
|
||||
y2="-1103.885"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6939" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6941" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6943" /></linearGradient><path
|
||||
d="m 127.54,48.914 h -11.599 c 0.303,2.346 1.01,3.92 2.117,4.725 1.107,0.805 2.943,1.205 5.506,1.205 3.432,0 7.43,-0.238 11.99,-0.717 l 0.912,5.994 c -3.346,1.607 -8.015,2.411 -14.01,2.411 -6.038,0 -10.339,-1.304 -12.901,-3.909 -2.563,-2.607 -3.845,-6.907 -3.845,-12.902 0,-6.299 1.248,-10.707 3.746,-13.228 2.498,-2.519 6.701,-3.779 12.609,-3.779 5.344,0 9.209,0.923 11.599,2.769 2.389,1.848 3.605,4.66 3.649,8.439 0,2.997 -0.771,5.245 -2.313,6.744 -1.541,1.498 -4.029,2.248 -7.46,2.248 z m -11.794,-5.8 h 9.122 c 1.173,0 1.966,-0.282 2.378,-0.847 0.413,-0.564 0.619,-1.394 0.619,-2.479 0,-1.52 -0.391,-2.574 -1.172,-3.16 -0.782,-0.586 -2.216,-0.88 -4.301,-0.88 -2.477,0 -4.171,0.489 -5.083,1.466 -0.912,0.981 -1.433,2.946 -1.563,5.9 z"
|
||||
id="path6945"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_6_)" /><linearGradient
|
||||
id="SVGID_7_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="69.1362"
|
||||
y1="-1053"
|
||||
x2="69.1362"
|
||||
y2="-1103.8832"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6948" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6950" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6952" /></linearGradient><path
|
||||
d="m 172.957,29.626 -11.402,32.581 c -0.609,1.736 -1.359,3.344 -2.248,4.82 -0.892,1.478 -2.031,2.897 -3.422,4.27 -1.391,1.368 -3.117,2.378 -5.18,3.029 -2.064,0.652 -4.355,0.824 -6.875,0.521 l -0.781,-5.672 c 2.605,-0.693 4.647,-1.597 6.125,-2.701 1.477,-1.107 2.627,-2.599 3.453,-4.466 l 0.131,-0.262 h -1.825 c -1.607,0 -2.649,-0.781 -3.128,-2.349 l -10.49,-29.775 h 10.295 l 5.995,20.786 c 0.391,1.521 0.717,3.128 0.978,4.819 h 0.847 c 0.13,-0.521 0.347,-1.336 0.651,-2.44 0.304,-1.104 0.521,-1.897 0.652,-2.379 l 5.93,-20.786 10.294,0.004 0,0 z"
|
||||
id="path6954"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_7_)" /><linearGradient
|
||||
id="SVGID_8_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="100.2241"
|
||||
y1="-1053"
|
||||
x2="100.2241"
|
||||
y2="-1103.885"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6957" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6959" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6961" /></linearGradient><path
|
||||
d="m 199.644,54.127 0.851,6.256 c -3.306,1.434 -7.451,2.149 -12.446,2.149 -5.906,0 -10.064,-1.271 -12.479,-3.812 -2.411,-2.541 -3.615,-6.896 -3.615,-13.062 0,-6.215 1.216,-10.59 3.646,-13.131 2.436,-2.541 6.625,-3.812 12.575,-3.812 4.865,0 8.818,0.674 11.859,2.021 l -1.042,5.994 c -4.692,-0.086 -7.756,-0.131 -9.188,-0.131 -2.953,0 -4.984,0.631 -6.093,1.891 -1.106,1.26 -1.662,3.646 -1.662,7.168 0,3.518 0.556,5.906 1.662,7.167 1.106,1.261 3.14,1.89 6.093,1.89 3.778,-0.002 7.057,-0.197 9.839,-0.588 z"
|
||||
id="path6963"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_8_)" /><linearGradient
|
||||
id="SVGID_9_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="150.97121"
|
||||
y1="-1053"
|
||||
x2="150.97121"
|
||||
y2="-1103.886"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6966" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6968" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6970" /></linearGradient><path
|
||||
d="m 237.004,28.714 c 5.996,0 10.241,1.293 12.74,3.877 2.497,2.585 3.746,6.962 3.746,13.13 0,6.17 -1.249,10.523 -3.746,13.064 -2.499,2.542 -6.744,3.812 -12.74,3.812 -6.038,0 -10.308,-1.271 -12.804,-3.812 -2.499,-2.541 -3.747,-6.896 -3.747,-13.064 0,-6.211 1.248,-10.599 3.747,-13.162 2.496,-2.563 6.766,-3.845 12.804,-3.845 z m 0,7.233 c -2.562,0 -4.278,0.65 -5.146,1.954 -0.871,1.304 -1.305,3.91 -1.305,7.82 0,3.822 0.434,6.385 1.305,7.688 0.867,1.303 2.584,1.955 5.146,1.955 2.478,0 4.16,-0.652 5.052,-1.955 0.889,-1.304 1.336,-3.866 1.336,-7.688 0,-3.865 -0.437,-6.462 -1.305,-7.788 -0.869,-1.324 -2.565,-1.986 -5.083,-1.986 z"
|
||||
id="path6972"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_9_)" /><linearGradient
|
||||
id="SVGID_10_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="184.87891"
|
||||
y1="-1053"
|
||||
x2="184.87891"
|
||||
y2="-1103.885"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6975" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6977" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6979" /></linearGradient><path
|
||||
d="m 257.883,36.794 -0.911,-6.517 c 5.776,-1.043 11.358,-1.563 16.745,-1.563 4.345,0 7.537,0.88 9.578,2.64 2.043,1.759 3.063,4.811 3.063,9.154 V 61.75 h -7.625 l -0.979,-4.887 c -3.217,3.779 -7.168,5.669 -11.857,5.669 -3.086,0 -5.604,-0.814 -7.561,-2.443 -1.957,-1.629 -2.936,-3.897 -2.936,-6.81 v -3.258 c 0,-2.562 0.869,-4.562 2.607,-5.994 1.735,-1.437 4.146,-2.15 7.23,-2.15 h 11.47 v -1.434 c -0.045,-1.65 -0.424,-2.759 -1.142,-3.324 -0.717,-0.563 -2.097,-0.847 -4.14,-0.847 -3.552,0 -8.069,0.175 -13.542,0.522 z m 7.037,13.944 v 1.238 c 0,2.215 1.261,3.319 3.779,3.319 2.606,0 5.278,-1.042 8.016,-3.127 v -4.496 h -8.666 c -2.086,0.047 -3.129,1.068 -3.129,3.066 z"
|
||||
id="path6981"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_10_)" /><linearGradient
|
||||
id="SVGID_11_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="5.9375"
|
||||
y1="-1053"
|
||||
x2="5.9375"
|
||||
y2="-1103.882"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6984" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6986" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6988" /></linearGradient><path
|
||||
d="m 98.519,47.415 c -0.913,-1.563 -1.912,-2.714 -2.997,-3.454 v -0.13 c 1.303,-0.868 2.302,-1.89 2.997,-3.062 L 106.86,29.623 H 96.043 l -7.95,11.208 h -2.997 c 0.303,-1.781 0.455,-3.736 0.455,-5.865 v -18.83 h -2.992 l -6.651,9.482 v 36.13 h 9.644 v -10.1 c 0,-1.26 -0.152,-2.866 -0.455,-4.821 h 3.062 L 97.15,61.75 h 10.816 L 98.519,47.415 z"
|
||||
id="path6990"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_11_)" /><linearGradient
|
||||
id="SVGID_12_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="125.3193"
|
||||
y1="-1053"
|
||||
x2="125.3193"
|
||||
y2="-1103.884"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop6993" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop6995" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop6997" /></linearGradient><path
|
||||
d="m 218.679,54.518 h -2.607 c -2.434,0 -3.646,-1.086 -3.646,-3.258 V 16.138 h -3.014 l -6.563,9.36 V 53.67 c 0,2.824 0.823,5.008 2.477,6.549 1.65,1.542 3.91,2.313 6.777,2.313 3.475,0 6.035,-0.435 7.688,-1.304 l -1.112,-6.71 z"
|
||||
id="path6999"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_12_)" /><linearGradient
|
||||
id="SVGID_13_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="220.1055"
|
||||
y1="-1053"
|
||||
x2="220.1055"
|
||||
y2="-1103.882"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFE"
|
||||
id="stop7002" /><stop
|
||||
offset="0.4815"
|
||||
style="stop-color:#F2F1F1"
|
||||
id="stop7004" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#E9E7E8"
|
||||
id="stop7006" /></linearGradient><path
|
||||
d="m 312.684,47.415 c -0.909,-1.563 -1.909,-2.714 -2.998,-3.454 v -0.13 c 1.306,-0.868 2.306,-1.89 2.998,-3.062 l 8.343,-11.146 H 310.21 l -7.949,11.208 h -2.996 c 0.303,-1.781 0.455,-3.736 0.455,-5.865 v -18.83 h -2.99 l -6.651,9.484 v 36.13 h 9.646 v -10.1 c 0,-1.26 -0.154,-2.867 -0.457,-4.822 h 3.062 l 8.992,14.922 h 10.813 l -9.451,-14.335 z"
|
||||
id="path7008"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#SVGID_13_)" /></g><linearGradient
|
||||
id="SVGID_14_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-66.2808"
|
||||
y1="-1035.334"
|
||||
x2="-66.2808"
|
||||
y2="-1045.5018"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#00639A"
|
||||
id="stop7011" /><stop
|
||||
offset="0.2355"
|
||||
style="stop-color:#00578A"
|
||||
id="stop7013" /><stop
|
||||
offset="0.507"
|
||||
style="stop-color:#004D7B"
|
||||
id="stop7015" /><stop
|
||||
offset="0.7167"
|
||||
style="stop-color:#004773"
|
||||
id="stop7017" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#00446E"
|
||||
id="stop7019" /></linearGradient><linearGradient
|
||||
id="SVGID_15_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-55.5112"
|
||||
y1="-1087.1055"
|
||||
x2="-55.5112"
|
||||
y2="-1087.1055"
|
||||
gradientTransform="matrix(1,0,0,-1,86,-956.167)"><stop
|
||||
offset="0"
|
||||
style="stop-color:#F6F6F6"
|
||||
id="stop7034" /><stop
|
||||
offset="0.5386"
|
||||
style="stop-color:#E4E4E4"
|
||||
id="stop7036" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#DADADA"
|
||||
id="stop7038" /></linearGradient><g
|
||||
id="g7182"
|
||||
transform="matrix(3.3533283,0,0,3.3533283,-113.29645,-57.295274)"><g
|
||||
id="g6867"><path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6869"
|
||||
d="m 62.944,34.438 c -7.205,5 -14.688,3.682 -23.183,-3.358 -4.897,-4.059 -11.15,-2.771 -15.411,-1.454 -2.648,0.82 -6.324,0.744 -9.518,0.075 C 0.854,26.771 3.903,35.739 6.493,43.716 11.25,58.356 3.257,61.747 0.51,56.531 c -1.766,6.615 7.138,8.572 10.937,7.701 6.006,-1.377 14.051,-2.153 19.043,-0.627 9.544,2.916 13.125,0.513 11.542,-2.57 -0.52,-1.012 -0.229,-2.446 0.583,-3.126 2.834,-2.374 5.295,-0.373 8.007,-1.947 2.108,-1.226 2.077,-3.927 -1.19,-5.463 -1.731,-0.813 -1.649,-2.881 0.184,-3.84 3.73,-1.952 8.75,-1.036 10,-5.138 0.447,-1.469 1.699,-5.159 3.328,-7.083 z"
|
||||
stroke-miterlimit="10" /><path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6871"
|
||||
d="M 29.615,8.753 C 28.563,8.159 25.341,6.141 24.536,5.689 23.73,5.236 21.813,3.808 19.717,3.808 c -2.096,0 -4.014,1.428 -4.819,1.881 -0.805,0.452 -4.027,2.471 -5.079,3.064 -0.805,0.454 -3.724,2.037 -3.724,6.34 0,1.309 0,3.564 0,4.521 0,2.843 1.597,4.979 4.479,6.44 0.983,0.499 1.762,1.329 1.762,3.468 0,0.943 0.352,1.161 0.918,1.161 h 0.68 c 0.625,0 0.965,0.235 0.965,1.256 0,0.562 0,2.062 0,2.062 v 37.2 l 2.713,2.779 h 1.244 l 5.682,-5.819 v -34.16 c 0,0 0,-1.5 0,-2.062 0,-1.021 0.34,-1.256 0.965,-1.256 h 0.68 c 0.566,0 0.918,-0.218 0.918,-1.161 0,-2.139 0.778,-2.969 1.762,-3.468 2.882,-1.462 4.479,-3.598 4.479,-6.44 0,-0.956 0,-3.212 0,-4.521 C 33.339,10.79 30.42,9.207 29.615,8.753 z"
|
||||
stroke-miterlimit="10" /></g><path
|
||||
style="fill:url(#linearGradient7503)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6882"
|
||||
d="m 62.944,34.438 c -7.205,5 -14.688,3.682 -23.183,-3.358 -4.897,-4.059 -11.15,-2.771 -15.411,-1.454 -2.648,0.82 -6.324,0.744 -9.518,0.075 C 0.854,26.771 3.903,35.739 6.493,43.716 11.25,58.356 3.257,61.747 0.51,56.531 c -1.766,6.615 7.138,8.572 10.937,7.701 6.006,-1.377 14.051,-2.153 19.043,-0.627 9.544,2.916 13.125,0.513 11.542,-2.57 -0.52,-1.012 -0.229,-2.446 0.583,-3.126 2.834,-2.374 5.295,-0.373 8.007,-1.947 2.108,-1.226 2.077,-3.927 -1.19,-5.463 -1.731,-0.813 -1.649,-2.881 0.184,-3.84 3.73,-1.952 8.75,-1.036 10,-5.138 0.447,-1.469 1.699,-5.159 3.328,-7.083 z" /><path
|
||||
style="fill:url(#linearGradient7505)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6889"
|
||||
d="m 26.991,32.645 c 0,4.983 0.741,22.798 4.538,30.405 L 22.795,62.856 V 31.383 l 4.196,1.262 z" /><path
|
||||
style="fill:url(#linearGradient7507)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6896"
|
||||
d="M 7.364,44.396 C 4.602,36.938 0.855,27.771 14.833,30.701 c 3.193,0.669 6.869,0.745 9.518,-0.075 4.261,-1.317 9.972,-2.444 14.514,1.521 8.875,7.748 16.875,8.292 24.08,3.292 -1.63,1.924 -3.106,5.563 -3.33,7.083 -0.189,1.293 -1.134,1.873 -2.382,2.379 -18.519,7.52 -15.394,-5.307 -21.352,-9.48 -3.158,-2.214 -7.733,-2.09 -11.247,-0.812 -3.171,1.153 -6.437,0.864 -9.833,-0.396 C 9.134,32.105 5.326,33.217 7.364,44.396 z" /><line
|
||||
style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-miterlimit:10"
|
||||
id="line6898"
|
||||
y2="31.938"
|
||||
x2="24.634001"
|
||||
y1="63.160999"
|
||||
x1="24.634001"
|
||||
stroke-miterlimit="10" /><g
|
||||
style="opacity:0.75"
|
||||
id="g6900"><path
|
||||
style="fill:#ffffff"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6902"
|
||||
d="m 31.691,30.336 c 2.719,0 4.941,0.747 6.795,2.284 5.541,4.592 10.63,6.823 15.557,6.823 1.473,0 2.934,-0.208 4.373,-0.615 -0.317,0.854 -0.559,1.602 -0.714,2.111 -0.432,1.414 -1.598,1.811 -4.357,2.437 -1.463,0.332 -3.121,0.708 -4.656,1.513 -1.577,0.824 -2.536,2.322 -2.503,3.908 0.032,1.51 0.928,2.822 2.396,3.514 1.153,0.541 1.478,1.135 1.487,1.373 0.012,0.26 -0.343,0.487 -0.45,0.551 -0.597,0.348 -1.181,0.412 -2.051,0.412 -0.16,0 -0.321,-0.002 -0.482,-0.004 -0.179,-0.002 -0.356,-0.004 -0.535,-0.004 -1.632,0 -3.393,0.211 -5.219,1.74 -1.545,1.294 -2.019,3.742 -1.078,5.573 0.137,0.267 0.141,0.405 0.149,0.407 -0.093,0.127 -0.771,0.565 -2.586,0.565 -1.776,0 -4.107,-0.426 -6.741,-1.229 -2.005,-0.612 -4.512,-0.924 -7.451,-0.924 -3.827,0 -8.428,0.554 -12.624,1.516 -0.412,0.094 -0.934,0.145 -1.509,0.145 -1.875,0 -4.187,-0.543 -5.673,-1.595 1.674,-0.011 3.264,-0.886 4.366,-2.403 1.341,-1.845 3.15,-6.289 0.213,-15.33 L 8.317,42.854 C 7.039,38.917 5.447,34.021 6.776,32.19 c 0.508,-0.699 1.636,-1.053 3.354,-1.053 1.188,0 2.632,0.177 4.295,0.525 1.76,0.369 3.618,0.563 5.375,0.563 1.944,0 3.676,-0.231 5.144,-0.686 1.664,-0.518 4.176,-1.203 6.747,-1.203 m 0,-2 c -2.663,0 -5.243,0.641 -7.34,1.29 -1.324,0.41 -2.904,0.596 -4.553,0.596 -1.649,0 -3.367,-0.187 -4.965,-0.521 -1.854,-0.389 -3.409,-0.568 -4.704,-0.568 -8.474,0 -5.881,7.664 -3.635,14.583 3.376,10.393 0.327,15.117 -2.708,15.117 -1.241,0 -2.479,-0.789 -3.276,-2.302 -1.506,5.643 4.751,7.896 8.98,7.896 0.729,0 1.397,-0.067 1.956,-0.194 3.684,-0.844 8.134,-1.463 12.177,-1.463 2.549,0 4.936,0.246 6.866,0.836 3.037,0.931 5.472,1.318 7.326,1.318 3.975,0 5.295,-1.785 4.216,-3.888 -0.52,-1.013 -0.229,-2.446 0.583,-3.126 1.375,-1.152 2.663,-1.274 3.935,-1.274 0.34,0 0.679,0.009 1.018,0.009 1.005,0 2.011,-0.076 3.055,-0.682 2.108,-1.227 2.077,-3.927 -1.19,-5.463 -1.731,-0.814 -1.649,-2.881 0.184,-3.84 3.73,-1.952 8.75,-1.036 10,-5.139 0.448,-1.472 1.7,-5.161 3.33,-7.083 -2.906,2.017 -5.857,3.005 -8.902,3.005 -4.504,0 -9.211,-2.163 -14.28,-6.364 -2.489,-2.06 -5.325,-2.743 -8.073,-2.743 l 0,0 z m 31.253,6.102 h 0.005 -0.005 z" /></g><path
|
||||
style="fill:none;stroke:#034672;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6904"
|
||||
d="m 62.944,34.438 c -7.205,5 -14.688,3.682 -23.183,-3.358 -4.897,-4.059 -11.15,-2.771 -15.411,-1.454 -2.648,0.82 -6.324,0.744 -9.518,0.075 C 0.854,26.771 3.903,35.739 6.493,43.716 11.25,58.356 3.257,61.747 0.51,56.531 c -1.766,6.615 7.138,8.572 10.937,7.701 6.006,-1.377 14.051,-2.153 19.043,-0.627 9.544,2.916 13.125,0.513 11.542,-2.57 -0.52,-1.012 -0.229,-2.446 0.583,-3.126 2.834,-2.374 5.295,-0.373 8.007,-1.947 2.108,-1.226 2.077,-3.927 -1.19,-5.463 -1.731,-0.813 -1.649,-2.881 0.184,-3.84 3.73,-1.952 8.75,-1.036 10,-5.138 0.447,-1.469 1.699,-5.159 3.328,-7.083 z"
|
||||
stroke-miterlimit="10" /><path
|
||||
style="fill:#034672"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6906"
|
||||
d="M 7.364,43.396 C 4.602,35.938 0.855,26.771 14.833,29.701 c 3.193,0.669 6.869,0.745 9.518,-0.075 4.261,-1.317 9.972,-2.444 14.514,1.521 8.875,7.748 16.875,8.292 24.08,3.292 -1.63,1.924 -3.106,5.563 -3.33,7.083 -0.189,1.293 -1.116,1.916 -2.382,2.379 C 44.114,48.696 43.109,38.416 37.151,34.236 33.993,32.022 28.148,32.328 24.634,33.606 21.463,34.759 18.197,34.47 14.801,33.21 9.134,31.105 5.326,32.217 7.364,43.396 z" /><path
|
||||
style="fill:#ffffff"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6908"
|
||||
d="M 29.615,8.753 C 28.563,8.159 25.341,6.141 24.536,5.689 23.73,5.236 21.813,3.808 19.717,3.808 c -2.096,0 -4.014,1.428 -4.819,1.881 -0.805,0.452 -4.027,2.471 -5.079,3.064 -0.805,0.454 -3.724,2.037 -3.724,6.34 0,1.309 0,3.564 0,4.521 0,2.843 1.597,4.979 4.479,6.44 0.983,0.499 1.762,1.329 1.762,3.468 0,0.943 0.352,1.161 0.918,1.161 h 0.68 c 0.625,0 0.965,0.235 0.965,1.256 0,0.562 0,2.062 0,2.062 v 37.2 l 2.713,2.779 h 1.244 l 5.682,-5.819 v -34.16 c 0,0 0,-1.5 0,-2.062 0,-1.021 0.34,-1.256 0.965,-1.256 h 0.68 c 0.566,0 0.918,-0.218 0.918,-1.161 0,-2.139 0.778,-2.969 1.762,-3.468 2.882,-1.462 4.479,-3.598 4.479,-6.44 0,-0.956 0,-3.212 0,-4.521 C 33.339,10.79 30.42,9.207 29.615,8.753 z" /><path
|
||||
style="fill:url(#linearGradient7509)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6919"
|
||||
d="M 29.615,8.753 C 28.563,8.159 25.341,6.141 24.536,5.689 23.73,5.236 21.813,3.808 19.717,3.808 v 69.29 l 4.819,-4.936 v -34.16 c 0,0 0,-1.5 0,-2.062 0,-1.021 0.34,-1.256 0.965,-1.256 h 0.68 c 0.566,0 0.918,-0.218 0.918,-1.161 0,-2.139 0.778,-2.969 1.762,-3.468 2.882,-1.462 4.479,-3.598 4.479,-6.44 0,-0.956 0,-3.212 0,-4.521 C 33.339,10.79 30.42,9.207 29.615,8.753 z" /><path
|
||||
style="fill:url(#linearGradient7511)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6928"
|
||||
d="m 19.717,3.808 c -2.097,0 -4.014,1.428 -4.819,1.881 -0.805,0.452 -4.027,2.471 -5.079,3.064 -0.805,0.454 -3.724,2.037 -3.724,6.34 0,1.309 0,3.564 0,4.521 0,2.843 1.597,4.979 4.479,6.44 0.983,0.499 1.762,1.329 1.762,3.468 0,0.943 0.352,1.161 0.918,1.161 h 0.68 c 0.625,0 0.965,0.235 0.965,1.256 0,0.562 0,2.062 0,2.062 v 37.2 l 2.713,2.779 h 1.244 l 0.862,-0.883 -0.001,-69.289 0,0 z" /><path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6930"
|
||||
d="m 19.427,3.808 c 1.908,0.938 3.431,1.966 4.236,2.419 0.805,0.452 4.027,2.471 5.079,3.064 0.805,0.454 3.724,2.037 3.724,6.34 0,1.309 0,2.806 0,3.762 0,2.843 -1.597,4.979 -4.479,6.44 -0.983,0.499 -1.762,1.431 -1.762,3.569 v 1.238"
|
||||
stroke-miterlimit="10" /><path
|
||||
style="fill:none;stroke:#034672;stroke-width:2;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6932"
|
||||
d="M 29.615,8.753 C 28.563,8.159 25.341,6.141 24.536,5.689 23.73,5.236 21.813,3.808 19.717,3.808 c -2.096,0 -4.014,1.428 -4.819,1.881 -0.805,0.452 -4.027,2.471 -5.079,3.064 -0.805,0.454 -3.724,2.037 -3.724,6.34 0,1.309 0,3.564 0,4.521 0,2.843 1.597,4.979 4.479,6.44 0.983,0.499 1.762,1.329 1.762,3.468 0,0.943 0.352,1.161 0.918,1.161 h 0.68 c 0.625,0 0.965,0.235 0.965,1.256 0,0.562 0,2.062 0,2.062 v 37.2 l 2.713,2.779 h 1.244 l 5.682,-5.819 v -34.16 c 0,0 0,-1.5 0,-2.062 0,-1.021 0.34,-1.256 0.965,-1.256 h 0.68 c 0.566,0 0.918,-0.218 0.918,-1.161 0,-2.139 0.778,-2.969 1.762,-3.468 2.882,-1.462 4.479,-3.598 4.479,-6.44 0,-0.956 0,-3.212 0,-4.521 C 33.339,10.79 30.42,9.207 29.615,8.753 z"
|
||||
stroke-miterlimit="10" /><path
|
||||
style="fill:#e9f6fe;stroke:#034672;stroke-width:2;stroke-miterlimit:10"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6934"
|
||||
d="M 34.536,34.001"
|
||||
stroke-miterlimit="10" /><polygon
|
||||
style="fill:url(#linearGradient7513)"
|
||||
id="polygon7021"
|
||||
points="28.771,11.704 19.719,13.729 10.667,11.704 9.667,15.443 19.719,20.501 29.771,15.443 " /><polyline
|
||||
style="opacity:0.2"
|
||||
id="polyline7023"
|
||||
points="19.719,20.501 29.771,15.443 28.771,11.704 19.719,13.729 "
|
||||
enable-background="new " /><path
|
||||
style="fill:#034672"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7025"
|
||||
d="m 14.801,33.209 c 3.396,1.261 6.662,1.55 9.833,0.396 l -0.283,-2.223 c -2.648,0.82 -6.324,0.744 -9.518,0.075 l -0.032,1.752 z" /><path
|
||||
style="fill:#034672"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7027"
|
||||
d="m 19.446,32.856 c -0.403,2.757 1.896,4.707 1.896,7.619 3.849,-4.335 -1.073,-5.797 -1.896,-7.619 z" /><path
|
||||
style="fill:#034672"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7029"
|
||||
d="m 19.399,33.043 c -0.118,3.207 -0.402,5.581 -1.741,7.247 -2.419,-4.737 0.687,-6.32 1.741,-7.247 z" /><circle
|
||||
d="m 21.021,33.021 c 0,0.880342 -0.713658,1.594 -1.594,1.594 -0.880342,0 -1.594,-0.713658 -1.594,-1.594 0,-0.880342 0.713658,-1.594 1.594,-1.594 0.880342,0 1.594,0.713658 1.594,1.594 z"
|
||||
style="fill:#034672"
|
||||
sodipodi:ry="1.594"
|
||||
sodipodi:rx="1.594"
|
||||
sodipodi:cy="33.021"
|
||||
sodipodi:cx="19.427"
|
||||
id="circle7031"
|
||||
r="1.594"
|
||||
cy="33.021"
|
||||
cx="19.427" /><path
|
||||
style="fill:url(#linearGradient7515)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7040"
|
||||
d="M 30.489,63.605" /></g></g></svg>
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 202 B |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 250 KiB |
Before Width: | Height: | Size: 64 KiB |
|
@ -1,2 +1,3 @@
|
|||
parent=patternfly
|
||||
parent=base
|
||||
import=common/keycloak
|
||||
styles=css/styles.css lib/patternfly/css/patternfly.css lib/select2-3.4.1/select2.css css/styles.css
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 118 KiB |