Details
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/index.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/index.html
index ad1a87e..98755b7 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/index.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/index.html
@@ -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> seconds due to inactivity.
<a id="idletimeout-resume" href="#">Click here to continue using this web page</a>.
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/app.js b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/app.js
index ca23826..1029c93 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/app.js
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/app.js
@@ -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,
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/controllers.js b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/controllers.js
index edfa8d9..62bfc70 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/controllers.js
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/js/controllers.js
@@ -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");
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-detail.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-detail.html
index 312adde..ddf08bc 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-detail.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-detail.html
@@ -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>
-
- <form class="form-horizontal" name="applicationForm" novalidate>
- <fieldset>
- <legend>Settings</legend>
-
- <div data-kc-input>
- <label>Name</label>
- <input class="input-xlarge" type="text" name="name" data-ng-model="application.name" autofocus
- required>
- </div>
+ <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>
- <div data-kc-input>
- <label>Enabled</label>
- <input class="input-xlarge" type="checkbox" name="enabled" data-ng-model="application.enabled">
- </div>
+ <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>User registration</label>
- <input class="input-xlarge" type="checkbox" name="social"
- data-ng-model="application.userRegistration">
+ <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 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 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>
- </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>
\ No newline at end of file
+</div>
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-list.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-list.html
index c767407..390e932 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-list.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-list.html
@@ -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>
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-menu.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-menu.html
index 9246307..cd99b0b 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-menu.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/application-menu.html
@@ -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>
\ No newline at end of file
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/menu.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/menu.html
index 21c4733..9845267 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/menu.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/menu.html
@@ -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>
\ No newline at end of file
+ <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 -->
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-credentials.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-credentials.html
new file mode 100755
index 0000000..14a0c63
--- /dev/null
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-credentials.html
@@ -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>
\ No newline at end of file
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-detail.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-detail.html
index a5675d8..b997e5d 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-detail.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-detail.html
@@ -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>
-
- <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 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>
+
+ <div class="controls">
+ <input type="text" id="name" name="name" data-ng-model="realm.realm" autofocus
+ required>
+ </div>
</div>
- </div>
-
- <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>
- </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>
- </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 class="form-group">
+ <label class="control-label">Enabled</label>
+
+ <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">Cookie login allowed</label>
-
- <div class="controls">
- <input class="input-xlarge" type="checkbox" name="cookieLoginAllowed"
- data-ng-model="realm.cookieLoginAllowed">
- </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">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>
-
- <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>
+ </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 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>
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-menu.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-menu.html
index ae5217a..1f109c6 100755
--- a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-menu.html
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-menu.html
@@ -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>
\ No newline at end of file
+<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>
+
diff --git a/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-tokens.html b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-tokens.html
new file mode 100755
index 0000000..442ec88
--- /dev/null
+++ b/examples/as7-eap-demo/server/src/main/webapp/saas/admin/partials/realm-tokens.html
@@ -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>
\ No newline at end of file