Details
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
index 675cc48..cbfea0a 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
@@ -34,6 +34,14 @@ module.config([ '$routeProvider', function($routeProvider) {
}
},
controller : 'RealmTokenDetailCtrl'
+ }).when('/realms/:realm/social-settings', {
+ templateUrl : 'partials/realm-social.html',
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ }
+ },
+ controller : 'RealmTokenDetailCtrl'
})
.when('/realms/:realm/required-credentials', {
templateUrl : 'partials/realm-credentials.html',
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
index f8638cf..a3884d5 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
@@ -15,53 +15,70 @@
</ul>
</div>
<div id="content">
- <h2 class="pull-left">Application Scope Mappings for <span>{{application.name}}</span></h2>
+ <h2 class="pull-left"><span>{{application.name}}</span> Scope Mappings</h2>
<p class="subtitle"></p>
<form name="realmForm" novalidate>
- <fieldset>
- <legend uncollapsed><span class="text">Realm Scope</span> </legend>
+ <legend uncollapsed><span class="text">Realm Roles</span> </legend>
+ <fieldset class="border-top">
<div class="form-group">
- <div class="controls">
- <select multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- <button type="submit" ng-click="addRealmRole()">---></button>
- <button type="submit" ng-click="deleteRealmRole()"><---</button>
- <select multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <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 type="submit" ng-click="addRealmRole()" data-original-title="Move right" class="tooltipRightTrigger"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteRealmRole()" data-original-title="Move left" class="tooltipRightTrigger"><span class="icon-arrow-left">Move left</span></button>
+ </div>
+ <div class="select-title">
+ <label for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
+ </div>
</div>
</div>
</fieldset>
+
<fieldset ng-show="applications.length > 0">
- <legend collapsed><span class="text">Application Scope</span> </legend>
+ <legend collapsed><span class="text">Application Roles</span> </legend>
<div class="form-group input-select">
<label for="applications">Application: </label>
<div class="input-group">
<div class="select-rcue">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in applications">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications">
</select>
</div>
</div>
</div>
- <div class="form-group" ng-show="application">
- <div class="controls">
- <select multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- <button type="submit" ng-click="addApplicationRole()">---></button>
- <button type="submit" ng-click="deleteApplicationRole()"><---</button>
- <select multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label for="app-available">Available Roles</label>
+ <select id="app-available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addApplicationRole()" data-original-title="Move right" class="tooltipRightTrigger"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteApplicationRole()" data-original-title="Move left" class="tooltipRightTrigger"><span class="icon-arrow-left">Move left</span></button>
+ </div>
+ <div class="select-title">
+ <label for="app-assigned">Assigned Roles</label>
+ <select id="app-assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
+ </div>
</div>
</div>
</fieldset>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/menu.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/menu.html
index 677b1d0..927e32b 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/menu.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/menu.html
@@ -1,37 +1,37 @@
-<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>
- </li>
- </ul>
- </div>
- </div>
- <div class="navbar primary">
- <div class="navbar-inner clearfix" data-ng-controller="RealmDropdownCtrl">
- <ul class="nav pull-left">
- <li>
- <span class="dropdown-label" data-ng-show="showNav()">Realm:</span>
- <div class="dropdown" data-ng-show="showNav()">
- <select ng-change="changeRealm()" ng-model="current.realm" ng-options="r.realm for r in current.realms"></select>
- </div>
- </li>
- </ul>
- <div class="pull-right" data-ng-show="auth.loggedIn">
- <a class="button primary" href="#/create/realm" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
- data-ng-show="auth.loggedIn">Add Realm</a>
- </div>
- </div>
- </div>
-</div>
+<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>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="navbar primary">
+ <div class="navbar-inner clearfix" data-ng-controller="RealmDropdownCtrl">
+ <ul class="nav pull-left">
+ <li>
+ <span class="dropdown-label" data-ng-show="showNav()">Realm:</span>
+ <div class="dropdown" data-ng-show="showNav()">
+ <select ng-change="changeRealm()" ng-model="current.realm" ng-options="r.realm for r in current.realms"></select>
+ </div>
+ </li>
+ </ul>
+ <div class="pull-right" data-ng-show="auth.loggedIn">
+ <a class="button primary" href="#/create/realm" data-ng-class="path[0] == 'create' && path[1] == 'realm' && 'active'"
+ data-ng-show="auth.loggedIn">Add Realm</a>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
index 62b1061..fa1a42c 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
@@ -4,11 +4,11 @@
<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="#/realms/{{realm.id}}">Settings</a></li>
- <li data-ng-show="realm.social"><a href="#">Social</a></li>
+ <li><a href="#/realms/{{realm.id}}">General</a></li>
+ <li data-ng-show="realm.social"><a href="#/realms/{{realm.id}}/social-settings">Social</a></li>
<li><a href="#/realms/{{realm.id}}/roles">Roles</a></li>
- <li class="active"><a href="#/realms/{{realm.id}}/required-credentials">Required Credentials</a></li>
- <li><a href="#/realms/{{realm.id}}/token-settings">Token Settings</a></li>
+ <li class="active"><a href="#/realms/{{realm.id}}/required-credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.id}}/token-settings">Token</a></li>
</ul>
</div>
<div id="content">
@@ -17,21 +17,21 @@
<form name="realmForm" novalidate>
<fieldset>
<legend uncollapsed><span class="text">Required Credentials</span></legend>
- <div class="form-group">
+ <div class="form-group clearfix block">
<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">
+ <div class="form-group clearfix block">
<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">
+ <div class="form-group clearfix block">
<label class="control-label">Required OAuth Credentials</label>
<div class="controls">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
index fcb89f1..b740e8c 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
@@ -5,7 +5,7 @@
<div class="top-nav" data-ng-hide="createRealm">
<ul class="rcue-tabs">
<li class="active"><a href="#/realms/{{realm.id}}">General</a></li>
- <li data-ng-show="realm.social"><a href="#">Social</a></li>
+ <li data-ng-show="realm.social"><a href="#/realms/{{realm.id}}/social-settings">Social</a></li>
<li><a href="#/realms/{{realm.id}}/roles">Roles</a></li>
<li><a href="#/realms/{{realm.id}}/required-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.id}}/token-settings">Token</a></li>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
index 1c2ccba..16f7b78 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
@@ -1,5 +1,5 @@
<ul data-ng-hide="createRealm">
- <li data-ng-class="(!path[2] || path[1] == 'role' || path[2] == 'roles' || path[2] == 'token-settings' || path[2] == 'required-credentials') && 'active'"><a href="#/realms/{{realm.id}}">Settings</a></li>
+ <li data-ng-class="(!path[2] || path[1] == 'role' || path[2] == 'roles' || path[2] == 'token-settings' || path[2] == 'social-settings' || path[2] == 'required-credentials') && 'active'"><a href="#/realms/{{realm.id}}">Settings</a></li>
<li data-ng-class="(path[2] == 'users' || path[1] == 'user') && '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>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
new file mode 100755
index 0000000..d68727b
--- /dev/null
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
@@ -0,0 +1,33 @@
+<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="#/realms/{{realm.id}}">General</a></li>
+ <li class="active" data-ng-show="realm.social"><a href="#/realms/{{realm.id}}/social-settings">Social</a></li>
+ <li><a href="#/realms/{{realm.id}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.id}}/required-credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.id}}/token-settings">Token</a></li>
+ </ul>
+ </div>
+ <div id="content">
+ <h2 class="pull-left"><span>{{realm.realm}}</span> Social Providers</h2>
+ <p class="subtitle"></p>
+ <form name="realmForm" novalidate>
+ <fieldset>
+ <legend uncollapsed><span class="text">Social Settings</span></legend>
+ </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/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
index c1d38a7..9c9ef88 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
@@ -4,11 +4,11 @@
<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="#/realms/{{realm.id}}">Settings</a></li>
- <li data-ng-show="realm.social"><a href="#">Social</a></li>
+ <li><a href="#/realms/{{realm.id}}">General</a></li>
+ <li data-ng-show="realm.social"><a href="#/realms/{{realm.id}}/social-settings">Social</a></li>
<li><a href="#/realms/{{realm.id}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.id}}/required-credentials">Required Credentials</a></li>
- <li class="active"><a href="#/realms/{{realm.id}}/token-settings">Token Settings</a></li>
+ <li><a href="#/realms/{{realm.id}}/required-credentials">Credentials</a></li>
+ <li class="active"><a href="#/realms/{{realm.id}}/token-settings">Token</a></li>
</ul>
</div>
<div id="content">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
index 902394d..9f58a7e 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
@@ -19,6 +19,7 @@
<h2 class="pull-left"><span>{{user.username}}'s</span> Role Mappings</h2>
<p class="subtitle">All fields required</p>
<form name="realmForm" novalidate>
+ <legend uncollapsed><span class="text">Realm Roles</span> </legend>
<fieldset class="border-top">
<div class="form-group">
<div class="controls changing-selectors">
@@ -57,20 +58,28 @@
</div>
</div>
</div>
- <div class="form-group" ng-show="application">
- <div class="controls">
- <select multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- <button type="submit" ng-click="addApplicationRole()">---></button>
- <button type="submit" ng-click="deleteApplicationRole()"><---</button>
- <select multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label for="app-available">Available Roles</label>
+ <select id="app-available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addApplicationRole()" data-original-title="Move right" class="tooltipRightTrigger"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteApplicationRole()" data-original-title="Move left" class="tooltipRightTrigger"><span class="icon-arrow-left">Move left</span></button>
+ </div>
+ <div class="select-title">
+ <label for="app-assigned">Assigned Roles</label>
+ <select id="app-assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
+ </div>
</div>
</div>
</fieldset>
diff --git a/model/api/src/main/java/org/keycloak/models/Constants.java b/model/api/src/main/java/org/keycloak/models/Constants.java
index ada97fd..52db21f 100755
--- a/model/api/src/main/java/org/keycloak/models/Constants.java
+++ b/model/api/src/main/java/org/keycloak/models/Constants.java
@@ -5,7 +5,7 @@ package org.keycloak.models;
* @version $Revision: 1 $
*/
public interface Constants {
- String ADMIN_REALM = "Keycloak Adminstration";
+ String ADMIN_REALM = "Keycloak Administration";
String ADMIN_CONSOLE_APPLICATION = "Admin Console";
String ADMIN_CONSOLE_ADMIN_ROLE = "admin";
String APPLICATION_ROLE = "KEYCLOAK_APPLICATION";