This commit is contained in:
Bill Burke 2013-09-18 16:34:51 -04:00
parent 1408475ca1
commit 778d78d74f
11 changed files with 551 additions and 323 deletions

View file

@ -11,13 +11,33 @@
#idletimeout span { font-weight:bold }
</style>
<link rel="icon" href="/auth-server/admin-ui/img/favicon.ico">
<!-- Frameworks -->
<link rel="stylesheet" href="/auth-server/admin-ui/css/reset.css">
<link rel="stylesheet" href="/auth-server/admin-ui/bootstrap-3.0.0-wip/css/bootstrap.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/sprites.css">
<link rel="stylesheet" href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic'>
<!-- RCUE styles -->
<link rel="stylesheet" href="/auth-server/admin-ui/css/base.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/forms.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/header.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/tabs.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/icons.css">
<link rel="stylesheet" href="/auth-server/admin-ui/css/tables.css">
<!-- Page styles -->
<link rel="stylesheet" href="/auth-server/admin-ui/css/admin-console.css">
<link href="lib/select2-3.4.1/select2.css" rel="stylesheet">
<!--
<link href="lib/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="lib/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="css/admin.css" rel="stylesheet">
<link href="css/admin-responsive.css" rel="stylesheet">
<link href="lib/select2-3.4.1/select2.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
-->
<script src="lib/jquery/jquery-1.10.2.js" type="text/javascript"></script>
<script src="lib/select2-3.4.1/select2.js" type="text/javascript"></script>
@ -29,15 +49,21 @@
<script src="lib/jquery/jquery.idletimer.js" type="text/javascript"></script>
<script src="lib/jquery/jquery.idletimeout.js" type="text/javascript"></script>
<script src="lib/angular/select2.js" type="text/javascript"></script>
<!--
<script src="/auth-server/admin-ui/bootstrap-3.0.0-wip/js/dropdown.js"></script>
<script src="/auth-server/admin-ui/bootstrap-3.0.0-wip/js/tooltip.js"></script>
<script src="/auth-server/admin-ui/js/bootstrap-tokenfield.js"></script>
-->
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/loaders.js"></script>
<script src="js/services.js"></script>
<!-- <script src="/auth-server/admin-ui/js/base.js"></script> -->
</head>
<body data-ng-controller="GlobalCtrl">
<body class="admin-console" data-ng-controller="GlobalCtrl">
<div id="idletimeout">
You will be logged off in <span></span>&nbsp;seconds due to inactivity.
<a id="idletimeout-resume" href="#">Click here to continue using this web page</a>.

View file

@ -194,6 +194,51 @@ module.factory('spinnerInterceptor', function($q, $window, $rootScope, $location
};
});
// collapsable form fieldsets
module.directive('collapsable', function() {
return function(scope, element, attrs) {
element.click(function() {
$(this).toggleClass('collapsed');
$(this).find('.toggle-icons').toggleClass('icon-collapse').toggleClass('icon-expand');
$(this).find('.toggle-icons').text($(this).text() == "Icon: expand" ? "Icon: collapse" : "Icon: expand");
$(this).parent().find('.form-group').toggleClass('hidden');
});
}
});
// collapsable form fieldsets
module.directive('uncollapsed', function() {
return function(scope, element, attrs) {
element.prepend('<span class="icon-collapse toggle-icons">Icon: collapse</span>');
element.click(function() {
$(this).toggleClass('collapsed');
$(this).find('.toggle-icons').toggleClass('icon-collapse').toggleClass('icon-expand');
$(this).find('.toggle-icons').text($(this).text() == "Icon: expand" ? "Icon: collapse" : "Icon: expand");
$(this).parent().find('.form-group').toggleClass('hidden');
});
}
});
// collapsable form fieldsets
module.directive('collapsed', function() {
return function(scope, element, attrs) {
element.prepend('<span class="icon-expand toggle-icons">Icon: expand</span>');
element.parent().find('.form-group').toggleClass('hidden');
element.click(function() {
$(this).toggleClass('collapsed');
$(this).find('.toggle-icons').toggleClass('icon-collapse').toggleClass('icon-expand');
$(this).find('.toggle-icons').text($(this).text() == "Icon: expand" ? "Icon: collapse" : "Icon: expand");
$(this).parent().find('.form-group').toggleClass('hidden');
});
}
});
module.directive('kcInput', function() {
var d = {
scope : true,

View file

@ -347,63 +347,43 @@ module.controller('RoleDetailCtrl', function($scope, realm, role, Role, $locatio
};
});
module.controller('ApplicationListCtrl', function($scope, realm, applications, Application, $location, Dialog, Notifications) {
module.controller('ApplicationListCtrl', function($scope, realm, applications, Application, $location) {
console.log('ApplicationListCtrl');
$scope.realm = realm;
$scope.selection = {
applications : angular.copy(applications),
application : null
};
$scope.create = false;
$scope.changeApplication = function() {
console.log('ApplicationListCtrl.changeApplication() - ' + $scope.selection.application.name);
$location.url("/realms/" + realm.id + "/applications/" + $scope.selection.application.id);
};
$scope.applications = applications;
$scope.$watch(function() {
return $location.path();
}, function() {
$scope.path = $location.path().substring(1).split("/");
});
});
module.controller('ApplicationDetailCtrl', function($scope, realm, applications, application, Application, $location, Dialog, Notifications) {
module.controller('ApplicationDetailCtrl', function($scope, realm, application, Application, $location, Dialog, Notifications) {
console.log('ApplicationDetailCtrl');
$scope.realm = realm;
$scope.create = !application.id;
var selection = {
applications : null,
application : null
};
selection.applications = applications;
for (var i=0;i < selection.applications.length; i++) {
if (selection.applications[i].name == application.name) {
console.log('app name: ' + application.name);
selection.application = selection.applications[i];
break;
}
}
$scope.selection = selection;
if (!$scope.create) {
$scope.application= selection.application;
$scope.application= angular.copy(application);
} else {
$scope.application = {};
}
$scope.changeApplication = function() {
console.log('ApplicationDetailCtrl.changeApplication() - ' + $scope.selection.application.name);
$location.url("/realms/" + realm.id + "/applications/" + $scope.selection.application.id);
};
$scope.$watch(function() {
return $location.path();
}, function() {
$scope.path = $location.path().substring(1).split("/");
});
$scope.$watch('application', function() {
if (!angular.equals($scope.selection.application, application)) {
console.log('watch application');
if (!angular.equals($scope.application, application)) {
console.log('application changed');
$scope.changed = true;
}
}, true);
$scope.save = function() {
if ($scope.applicationForm.$valid) {
@ -447,7 +427,7 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, applications,
Dialog.confirmDelete($scope.application.name, 'application', function() {
$scope.application.$remove({
realm : realm.id,
id : $scope.applicatino.id
id : $scope.application.id
}, function() {
$location.url("/realms/" + realm.id + "/applications");
Notifications.success("Deleted application");

View file

@ -1,71 +1,77 @@
<div id="wrapper" class="container">
<div class="row">
<aside class="span3" data-ng-include data-src="'partials/application-menu.html'"></aside>
<div id="actions-bg"></div>
<div id="container-right" class="span9">
<h1 data-ng-show="create"><span class="gray">New Application</span></h1>
<h1 data-ng-hide="create">
<span class="gray">Application Settings</span>
</h1>
<div data-ng-show="applicationForm.showErrors && applicationForm.$error.required" class="alert alert-error">Please fill
in all required fields
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
<div class="top-nav">
<ul class="rcue-tabs">
<li class="active"><a href="#">Settings</a></li>
<li><a href="#">Credentials</a></li>
<li><a href="#">Installation</a></li>
<li><a href="#">Roles</a></li>
<li><a href="#">Scopes</a></li>
<li><a href="#">Sessions</a></li>
</ul>
</div>
<p class="subtitle subtitle-right"><span class="required">*</span> Required fields</p>
<div id="content">
<h2 class="pull-left" data-ng-show="create">New Application</h2>
<h2 class="pull-left" data-ng-hide="create">Application <span>{{application.name}}</span></h2>
<p class="subtitle"><span class="required">*</span> Required fields</p>
<form name="applicationForm" novalidate>
<fieldset>
<legend uncollapsed><span class="text">Application Settings</span></legend>
<div class="form-group">
<label for="name">Name</label><span class="required">*</span>
<div class="controls">
<input type="text" id="name" name="name" data-ng-model="application.name" autofocus
required>
</div>
</div>
<form class="form-horizontal" name="applicationForm" novalidate>
<fieldset>
<legend>Settings</legend>
<div class="form-group clearfix block">
<label class="control-label">Enabled</label>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="application.enabled" class="onoffswitch-checkbox"
name="enabled" id="enabled">
<label for="enabled" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
<div class="form-group">
<label for="adminUrl" class="control-label">Admin URL</label>
<div data-kc-input>
<label>Name</label>
<input class="input-xlarge" type="text" name="name" data-ng-model="application.name" autofocus
required>
<div class="controls">
<input class="input-small" type="text" name="adminUrl" id="adminUrl"
data-ng-model="application.adminUrl">
</div>
</div>
</fieldset>
<div class="form-actions" data-ng-show="create">
<button type="submit" data-ng-click="save()" class="primary">Save
</button>
<button type="submit" data-ng-click="cancel()" data-ng-click="cancel()"
data-ng-show="changed">Cancel
</button>
</div>
<div data-kc-input>
<label>Enabled</label>
<input class="input-xlarge" type="checkbox" name="enabled" data-ng-model="application.enabled">
<div class="form-actions" data-ng-show="!create">
<button type="submit" data-ng-click="save()" class="primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" data-ng-show="changed">Clear changes
</button>
<button type="submit" data-ng-click="remove()" class="danger">
Delete
</button>
</div>
<div data-kc-input>
<label>User registration</label>
<input class="input-xlarge" type="checkbox" name="social"
data-ng-model="application.userRegistration">
</div>
<div class="control-group">
<label for="applicationForm-adminUrl" class="control-label">Admin URL</label>
<div class="controls">
<input class="input-small" type="text" name="adminUrl"
data-ng-model="application.adminUrl">
</div>
</div>
</fieldset>
<div class="form-actions" data-ng-show="create">
<button type="submit" data-ng-click="save()" class="btn btn-primary" data-ng-show="changed">Save
</button>
<button type="submit" data-ng-click="cancel()" class="btn" data-ng-click="cancel()"
data-ng-show="changed">Cancel
</button>
</div>
<div class="form-actions" data-ng-show="!create">
<button type="submit" data-ng-click="save()" class="btn btn-primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" class="btn" data-ng-show="changed">Clear changes
</button>
<button type="submit" data-ng-click="remove()" class="btn btn-danger" data-ng-hide="changed">
Delete
</button>
</div>
</form>
</form>
</div>
</div>
<div id="container-right-bg"></div>
</div>
</div>
</div>

View file

@ -1,10 +1,56 @@
<div id="wrapper" class="container">
<div class="row">
<aside class="span3" data-ng-include data-src="'partials/application-menu.html'"></aside>
<div id="actions-bg"></div>
<div id="container-right" class="span9">
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
<div class="top-nav" data-ng-hide="createRealm">
<ul class="rcue-tabs">
<li class="active"><a href="#">Applications</a></li>
<li><a href="#/create/application/{{realm.id}}">New Application</a></li>
</ul>
</div>
<div id="content">
<h2 class="pull-left">Applications</h2>
<table>
<caption>Table of realm applications</caption>
<thead>
<tr>
<th class="rcue-table-actions" colspan="4">
<div class="search-comp clearfix">
<input type="text" placeholder="Search..." class="search">
<button class="icon-search tooltipRightTrigger"
data-original-title="Search by application name.">
Icon: search
</button>
</div>
</th>
</tr>
<tr>
<th>Application Name</th>
<th>Enabled</th>
<th>Base URL</th>
</tr>
</thead>
<tfoot>
<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 class="selectable-rows">
<tr ng-repeat="app in applications">
<td><a href="#/realms/{{realm.id}}/applications/{{app.id}}">{{app.name}}</a></td>
<td>{{app.enabled}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="container-right-bg"></div>
</div>

View file

@ -1,25 +1,23 @@
<div data-ng-hide="create">
<nav id="local-nav">
<div data-ng-show="selection.applications.length > 0"><span class="divider-vertical-right">Application </span>
<select ng-change="changeApplication()" ng-model="selection.application" ng-options="a.name for a in selection.applications">
<option value="">-- chose an application --</option>
</select>
</div>
<ul class="nav nav-list" data-ng-show="selection.application">
<li data-ng-class="path[4] == 'roles' && 'active'"><a
href="#/realms/{{realm.id}}/applications/{{selection.application.id}}/roles">Application Roles</a>
<ul class="sub-items">
<li data-ng-class="path[0] == 'create' && path[1] == 'role' && 'active'"><a
href="#/create/role/realms/{{realm.id}}/applications/{{selection.application.id}}">Add Role</a></li>
</ul>
</li>
</ul>
<hr/>
<div>
<a href="#/create/application/{{realm.id}}">New Application...</a>
</div>
<div>
<a href="#/realms/{{realm.id}}">Back to realm management...</a>
</div>
</nav>
<div data-ng-show="selection.applications.length > 0"><span class="divider-vertical-right">Application </span>
<select ng-change="changeApplication()" ng-model="selection.application" ng-options="a.name for a in selection.applications">
<option value="">-- chose an application --</option>
</select>
</div>
<ul data-ng-show="selection.application">
<li data-ng-class="path[4] == 'roles' && 'active'"><a
href="#/realms/{{realm.id}}/applications/{{selection.application.id}}/roles">Application Roles</a>
<ul class="sub-items">
<li data-ng-class="path[0] == 'create' && path[1] == 'role' && 'active'"><a
href="#/create/role/realms/{{realm.id}}/applications/{{selection.application.id}}">Add Role</a></li>
</ul>
</li>
</ul>
<hr/>
<div>
<a href="#/create/application/{{realm.id}}">New Application...</a>
</div>
<div>
<a href="#/realms/{{realm.id}}">Back to realm management...</a>
</div>
</div>

View file

@ -1,34 +1,48 @@
<header class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<div class="nav-collapse">
<nav id="global-nav">
<div data-ng-controller="RealmDropdownCtrl" >
<ul class="nav pull-left" data-ng-show="showNav()">
<li class="divider-vertical-right"><a href="#/realms/{{current.realm.id}}">Realm</a></li>
</ul>
<select class="nav pull-left" data-ng-show="showNav()" ng-change="changeRealm()" ng-model="current.realm" ng-options="r.realm for r in current.realms">
</select>
<!-- <select class="nav pull-left" ng-options="r.name for r in current.realms"></select> -->
</div>
<ul class="nav pull-right" data-ng-hide="auth.loggedIn">
<li><a href="/auth-server/rest/saas/login">Login</a></li>
<li><a href="/auth-server/rest/saas/registrations">Register</a></li>
<div class="header rcue">
<div class="navbar utility">
<div class="navbar-inner clearfix">
<h1><a href="#"><strong>Keycloak</strong> Central Login</a></h1>
<ul class="nav pull-right" data-ng-hide="auth.loggedIn">
<li><a href="/auth-server/rest/saas/login">Login</a></li>
<li><a href="/auth-server/rest/saas/registrations">Register</a></li>
</ul>
<ul class="nav pull-right" data-ng-show="auth.loggedIn">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="icon-user">Icon: user</span>{{auth.user.displayName}}<i class="caret"></i></a>
<ul class="dropdown-menu">
<li><a href="#">Manage Account</a></li>
<li class="separator"><a href="/auth-server/rest/saas/logout">Sign Out</a></li>
</ul>
<ul class="nav pull-right" data-ng-show="auth.loggedIn">
<li class="divider-vertical-left dropdown"><a data-toggle="dropdown" class="dropdown-toggle" href="#"><i
class="icon-user icon-gray"></i> Welcome: <b>{{auth.user.displayName}}</b> <i class="caret"></i></a>
<ul class="dropdown-menu">
<li><a href="/auth-server/rest/saas/logout">Sign Out</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right" data-ng-show="auth.loggedIn">
<li class="divider-vertical-left" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
data-ng-show="auth.loggedIn"><a href="#/create/realm">New Realm</a></li>
</ul>
</nav>
</div>
</li>
</ul>
</div>
</div>
</header>
<div class="navbar primary">
<div class="navbar-inner" data-ng-controller="RealmDropdownCtrl">
<ul class="nav pull-right" data-ng-show="auth.loggedIn">
<li class="divider-vertical-left" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
data-ng-show="auth.loggedIn"><a href="#/create/realm">New Realm</a></li>
</ul>
<ul class="nav" >
<li data-ng-show="showNav()"><a href="#/realms/{{current.realm.id}}">Realm</a></li>
<li class="select-rcue" data-ng-show="showNav()"><select ng-change="changeRealm()" ng-model="current.realm" ng-options="r.realm for r in current.realms">
</select></li>
</ul>
</div>
</div>
<!--
<div class="navbar primary">
<div class="navbar-inner" data-ng-controller="RealmDropdownCtrl">
<ul class="nav pull-right" data-ng-show="auth.loggedIn">
<li class="divider-vertical-left" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
data-ng-show="auth.loggedIn"><a href="#/create/realm">New Realm</a></li>
</ul>
<ul class="nav" data-ng-show="showNav()">
<li class="divider-vertical-right"><a href="#/realms/{{current.realm.id}}">Realm</a></li>
</ul>
<select class="nav pull-left" data-ng-show="showNav()" ng-change="changeRealm()" ng-model="current.realm" ng-options="r.realm for r in current.realms">
</select>
</div>
</div> -->
</div><!-- End .header -->

View file

@ -0,0 +1,54 @@
<div id="wrapper" class="container">
<div class="row">
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
<div class="top-nav" data-ng-hide="createRealm">
<ul class="rcue-tabs">
<li><a href="#">Settings</a></li>
<li data-ng-show="realm.social"><a href="#">Social</a></li>
<li><a href="#">Roles</a></li>
<li class="active"><a href="#">Required Credentials</a></li>
<li><a href="#">Token Settings</a></li>
</ul>
</div>
<div id="content">
<h2 class="pull-left">Realm: <span>{{realm.realm}}</span></h2>
<form name="realmForm" novalidate>
<fieldset>
<legend collapsed><span class="text">Required Credentials</span></legend>
<div class="form-group">
<label class="control-label">Required User Credentials</label>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredCredentials">
</div>
</div>
<div class="form-group">
<label class="control-label">Required Application Credentials</label>
<div class="controls">
<input style="width:250;height:25" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredApplicationCredentials">
</div>
</div>
<div class="form-group">
<label class="control-label">Required OAuth Credentials</label>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredOAuthClientCredentials">
</div>
</div>
</fieldset>
<div class="form-actions">
<button type="submit" data-ng-click="save()" class="primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" data-ng-show="changed">Clear changes
</button>
</div>
</form>
</div>
</div>
<div id="container-right-bg"></div>
</div>
</div>

View file

@ -1,164 +1,178 @@
<div id="wrapper" class="container">
<div class="row">
<aside class="span3" data-ng-include data-src="'partials/realm-menu.html'"></aside>
<div id="actions-bg"></div>
<div id="container-right" class="span9">
<h1 data-ng-show="createRealm"><span class="gray">New Realm</span></h1>
<h1 data-ng-hide="createRealm">
<span class="gray">Realm Settings</span>
</h1>
<div data-ng-show="realmForm.showErrors && realmForm.$error.required" class="alert alert-error">Please fill
in all required fields
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
<div class="top-nav" data-ng-hide="createRealm">
<ul class="rcue-tabs">
<li class="active"><a href="#">Settings</a></li>
<li data-ng-show="realm.social"><a href="#">Social</a></li>
<li><a href="#">Roles</a></li>
<li><a href="#">Required Credentials</a></li>
<li><a href="#">Token Settings</a></li>
</ul>
</div>
<p class="subtitle subtitle-right"><span class="required">*</span> Required fields</p>
<div id="content">
<h2 class="pull-left" data-ng-show="createRealm">New Realm</h2>
<h2 class="pull-left" data-ng-hide="createRealm">Realm: <span>{{realm.realm}}</span></h2>
<p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p>
<form name="realmForm" novalidate>
<fieldset>
<legend uncollapsed><span class="text">Required Settings</span> </legend>
<div class="form-group">
<label for="name">Name </label><span class="required" data-ng-show="createRealm">*</span>
<form class="form-horizontal" name="realmForm" novalidate>
<fieldset>
<div class="control-group">
<label for="realmForm-name" class="control-label">Name <span class="required">*</span></label>
<div class="controls">
<input class="input-xlarge" type="text" name="name" data-ng-model="realm.realm" autofocus
required>
<div class="controls">
<input type="text" id="name" name="name" data-ng-model="realm.realm" autofocus
required>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label">Enabled</label>
<table>
<tr>
<td>
<div class="control-group">
<label class="control-label">Enabled</label>
<div class="controls">
<input class="input-xlarge" type="checkbox" name="enabled"
data-ng-model="realm.enabled">
</div>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="realm.enabled" class="onoffswitch-checkbox"
name="enabled" id="enabled">
<label for="enabled" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
</fieldset>
<fieldset>
<legend uncollapsed><span class="text">Login Options</span></legend>
<div class="form-group clearfix block">
<label class="control-label">Social login</label>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="realm.social" class="onoffswitch-checkbox" name="social" id="social">
<label for="social" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
<div class="form-group clearfix block">
<label class="control-label">User registration</label>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="realm.userRegistration" class="onoffswitch-checkbox" name="userRegistration" id="userRegistration">
<label for="userRegistration" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
<div class="form-group clearfix block">
<label class="control-label">Require SSL</label>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="realm.requireSsl" class="onoffswitch-checkbox" name="requireSsl" id="requireSsl">
<label for="requireSsl" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
<div class="form-group">
<label class="control-label">Cookie login allowed</label>
<div class="onoffswitch">
<input type="checkbox" data-ng-model="realm.cookieLoginAllowed" class="onoffswitch-checkbox" name="cookieLoginAllowed" id="cookieLoginAllowed">
<label for="cookieLoginAllowed" class="onoffswitch-label">
<span class="onoffswitch-inner">
<span class="onoffswitch-active">ON</span>
<span class="onoffswitch-inactive">OFF</span>
</span>
<span class="onoffswitch-switch"></span>
</label>
</div>
</div>
</fieldset>
<fieldset>
<legend collapsed><span class="text">Token Settings</span></legend>
<div class="form-group input-select">
<label for="tokenLifespan">Token lifespan</label>
<div class="input-group">
<input type="text" data-ng-model="realm.tokenLifespan" id="tokenLifespan" name="tokenLifespan" class="tiny">
<div class="select-rcue">
<select name="tokenLifespanUnit" data-ng-model="realm.tokenLifespanUnit">
<option data-ng-selected="!realm.tokenLifespanUnit">Seconds</option>
<option>Minutes</option>
<option>Hours</option>
<option>Days</option>
</select>
</div>
</td>
<td>
<div class="control-group">
<label class="control-label">Social login</label>
<div class="controls">
<input class="input-xlarge" type="checkbox" name="social"
data-ng-model="realm.social">
</div>
</div>
</div>
<div class="form-group input-select">
<label for="accessCodeLifespan">Access code lifespan</label>
<div class="input-group">
<input type="text" data-ng-model="realm.accessCodeLifespan" id="accessCodeLifespan" name="accessCodeLifespan" class="tiny">
<div class="select-rcue">
<select name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
<option data-ng-selected="!realm.accessCodeLifespanUnit">Seconds</option>
<option>Minutes</option>
<option>Hours</option>
<option>Days</option>
</select>
</div>
</td>
</tr>
<tr>
<td>
<div class="control-group">
<label class="control-label">Require SSL</label>
<div class="controls">
<input class="input-xlarge" type="checkbox" name="requireSsl"
data-ng-model="realm.requireSsl">
</div>
</div>
</td>
<td>
<div class="control-group">
<label class="control-label">Cookie login allowed</label>
<div class="controls">
<input class="input-xlarge" type="checkbox" name="cookieLoginAllowed"
data-ng-model="realm.cookieLoginAllowed">
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="control-group">
<label class="control-label">User registration</label>
<div class="controls">
<input class="input-xlarge" type="checkbox" name="userRegistration"
data-ng-model="realm.userRegistration">
</div>
</div>
</td>
</tr>
</table>
<div class="control-group">
<label for="realmForm-tokenLifespan" class="control-label">Token lifespan</label>
<div class="controls">
<input class="input-small" type="text" name="tokenLifespan"
data-ng-model="realm.tokenLifespan">
<select style="width: auto;" name="tokenLifespanUnit"
data-ng-model="realm.tokenLifespanUnit">
<option value="SECONDS" data-ng-selected="!realm.tokenLifespanUnit">Seconds</option>
<option value="MINUTES">Minutes</option>
<option value="HOURS">Hours</option>
<option value="DAYS">Days</option>
</select>
</div>
</div>
</div>
<div class="control-group">
<label for="realmForm-accessCodeLifespan" class="control-label">Access code lifespan</label>
</fieldset>
<fieldset>
<legend collapsed><span class="text">Default Credential Settings</span></legend>
<div class="form-group">
<label class="control-label">Required User Credentials</label>
<div class="controls">
<input class="input-small" type="text" name="accessCodeLifespan"
data-ng-model="realm.accessCodeLifespan">
<select style="width: auto;" name="accessCodeLifespanUnit"
data-ng-model="realm.accessCodeLifespanUnit">
<option value="SECONDS" data-ng-selected="!realm.accessCodeLifespanUnit">Seconds
</option>
<option value="MINUTES">Minutes</option>
<option value="HOURS">Hours</option>
<option value="DAYS">Days</option>
</select>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredCredentials">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Required User Credentials</label>
<div class="form-group">
<label class="control-label">Required Application Credentials</label>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredCredentials">
<div class="controls">
<input style="width:250;height:25" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredApplicationCredentials">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Required Application Credentials</label>
<div class="form-group">
<label class="control-label">Required OAuth Credentials</label>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredApplicationCredentials">
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredOAuthClientCredentials">
</div>
</div>
</fieldset>
<div class="form-actions" data-ng-show="createRealm">
<button type="submit" data-ng-click="save()" class="primary" data-ng-show="changed">Save
</button>
<button type="submit" data-ng-click="cancel()" data-ng-click="cancel()"
data-ng-show="changed">Cancel
</button>
</div>
<div class="control-group">
<label class="control-label">Required OAuth Credentials</label>
<div class="controls">
<input style="width:250px" type="text" ui-select2="userCredentialOptions" ng-model="realm.requiredOAuthClientCredentials">
</div>
<div class="form-actions" data-ng-show="!createRealm">
<button type="submit" data-ng-click="save()" class="primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" data-ng-show="changed">Clear changes
</button>
<button type="submit" data-ng-click="remove()" class="danger" data-ng-hide="changed">
Delete
</button>
</div>
</fieldset>
<div class="form-actions" data-ng-show="createRealm">
<button type="submit" data-ng-click="save()" class="btn btn-primary" data-ng-show="changed">Save
</button>
<button type="submit" data-ng-click="cancel()" class="btn" data-ng-click="cancel()"
data-ng-show="changed">Cancel
</button>
</div>
<div class="form-actions" data-ng-show="!createRealm">
<button type="submit" data-ng-click="save()" class="btn btn-primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" class="btn" data-ng-show="changed">Clear changes
</button>
<button type="submit" data-ng-click="remove()" class="btn btn-danger" data-ng-hide="changed">
Delete
</button>
</div>
</form>
</form>
</div>
</div>
<div id="container-right-bg"></div>
</div>

View file

@ -1,22 +1,7 @@
<div data-ng-hide="createRealm">
<nav id="local-nav">
<ul class="nav nav-list">
<li data-ng-class="path[2] == 'users' && 'active'"><a href="#/realms/{{realm.id}}/users">Users</a>
<ul class="sub-items">
<li data-ng-class="path[0] == 'create' && path[1] == 'user' && 'active'"><a
href="#/create/user/{{realm.id}}">New User</a></li>
<li data-ng-class="path[0] == 'find' && path[1] == 'user' && 'active'"><a
href="#/realms/{{realm.id}}/users">Find User</a></li>
</ul>
</li>
<li data-ng-class="path[2] == 'roles' && 'active'"><a href="#/realms/{{realm.id}}/roles">Roles</a>
<ul class="sub-items">
<li data-ng-class="path[0] == 'create' && path[1] == 'role' && 'active'"><a
href="#/create/role/{{realm.id}}">New Role</a></li>
</ul>
</li>
<li data-ng-class="path[2] == 'applications' && 'active'"><a href="#/realms/{{realm.id}}/applications">Manage Applications</a></li>
<li data-ng-class="!path[2] && 'active'"><a href="#/realms/{{realm.id}}">Realm Settings</a></li>
</ul>
</nav>
</div>
<ul data-ng-hide="createRealm">
<li data-ng-class="!path[2] && 'active'"><a href="#/realms/{{realm.id}}">Realm Settings</a></li>
<li data-ng-class="path[2] == 'users' && 'active'"><a href="#/realms/{{realm.id}}/users">Users</a>
</li>
<li data-ng-class="(path[2] == 'applications' || path[1] == 'application') && 'active'"><a href="#/realms/{{realm.id}}/applications">Applications</a></li>
</ul>

View file

@ -0,0 +1,60 @@
<div id="wrapper" class="container">
<div class="row">
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
<div class="top-nav" data-ng-hide="createRealm">
<ul class="rcue-tabs">
<li><a href="#">Settings</a></li>
<li data-ng-show="realm.social"><a href="#">Social</a></li>
<li><a href="#">Roles</a></li>
<li><a href="#">Required Credentials</a></li>
<li class="active"><a href="#">Token Settings</a></li>
</ul>
</div>
<div id="content">
<h2 class="pull-left">Realm: <span>{{realm.realm}}</span></h2>
<form name="realmForm" novalidate>
<fieldset>
<legend collapsed><span class="text">Token Settings</span></legend>
<div class="form-group input-select">
<label for="tokenLifespan">Token lifespan</label>
<div class="input-group">
<input type="text" data-ng-model="realm.tokenLifespan" id="tokenLifespan" name="tokenLifespan" class="tiny">
<div class="select-rcue">
<select name="tokenLifespanUnit" data-ng-model="realm.tokenLifespanUnit">
<option data-ng-selected="!realm.tokenLifespanUnit">Seconds</option>
<option>Minutes</option>
<option>Hours</option>
<option>Days</option>
</select>
</div>
</div>
</div>
<div class="form-group input-select">
<label for="accessCodeLifespan">Access code lifespan</label>
<div class="input-group">
<input type="text" data-ng-model="realm.accessCodeLifespan" id="accessCodeLifespan" name="accessCodeLifespan" class="tiny">
<div class="select-rcue">
<select name="accessCodeLifespanUnit" data-ng-model="realm.accessCodeLifespanUnit">
<option data-ng-selected="!realm.accessCodeLifespanUnit">Seconds</option>
<option>Minutes</option>
<option>Hours</option>
<option>Days</option>
</select>
</div>
</div>
</div>
</fieldset>
<div class="form-actions">
<button type="submit" data-ng-click="save()" class="primary" data-ng-show="changed">Save
changes
</button>
<button type="submit" data-ng-click="reset()" data-ng-show="changed">Clear changes
</button>
</div>
</form>
</div>
</div>
<div id="container-right-bg"></div>
</div>
</div>