keycloak-aplcache

client type selection

3/6/2014 11:48:52 AM

Details

diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
index d7416a0..800c7e3 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
@@ -217,16 +217,43 @@ module.controller('ApplicationInstallationCtrl', function($scope, realm, applica
 module.controller('ApplicationDetailCtrl', function($scope, realm, application, Application, $location, Dialog, Notifications) {
     console.log('ApplicationDetailCtrl');
 
+    $scope.clientTypes = [
+        "confidential",
+        "public",
+        "bearer-only"
+    ];
+
     $scope.realm = realm;
     $scope.create = !application.name;
     if (!$scope.create) {
         $scope.application= angular.copy(application);
+        $scope.clientType = $scope.clientTypes[0];
+        if (application.bearerOnly) {
+            $scope.clientType = $scope.clientTypes[2];
+        } else if (application.publicClient) {
+            $scope.clientType = $scope.clientTypes[1];
+        }
     } else {
         $scope.application = {};
         $scope.application.webOrigins = [];
         $scope.application.redirectUris = [];
+        $scope.clientType = $scope.clientTypes[0];
     }
 
+    $scope.changeClientType = function() {
+        console.log('Client Type: ' + $scope.clientType);
+        if ($scope.clientType == "confidential") {
+            $scope.application.bearerOnly = false;
+            $scope.application.publicClient = false;
+        } else if ($scope.clientType == "public") {
+            $scope.application.bearerOnly = false;
+            $scope.application.publicClient = true;
+        } else if ($scope.clientType == "bearer-only") {
+            $scope.application.bearerOnly = true;
+            $scope.application.publicClient = false;
+        }
+    };
+
     $scope.$watch(function() {
         return $location.path();
     }, function() {
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
index 5279f15..54ca912 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
@@ -76,12 +76,33 @@ module.controller('OAuthClientListCtrl', function($scope, realm, oauthClients, O
 module.controller('OAuthClientDetailCtrl', function($scope, realm, oauth, OAuthClient, $location, Dialog, Notifications) {
     $scope.realm = realm;
     $scope.create = !oauth.id;
+
+    $scope.clientTypes = [
+        "confidential",
+        "public"
+    ];
+
+    $scope.changeClientType = function() {
+        console.log('Client Type: ' + $scope.clientType);
+        if ($scope.clientType == "confidential") {
+            $scope.oauth.publicClient = false;
+        } else if ($scope.clientType == "public") {
+            $scope.oauth.publicClient = true;
+        }
+    };
+
+
     if (!$scope.create) {
         $scope.oauth= angular.copy(oauth);
+        $scope.clientType = $scope.clientTypes[0];
+        if (oauth.publicClient) {
+            $scope.clientType = $scope.clientTypes[1];
+        }
     } else {
         $scope.oauth = {};
         $scope.oauth.webOrigins = [];
         $scope.oauth.redirectUris = [];
+        $scope.clientType = $scope.clientTypes[0];
     }
 
     $scope.$watch(function() {
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
index 6cde4cd..09ff0d1 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
@@ -39,16 +39,16 @@
                         <input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block" data-ng-show="!application.publicClient">
-                    <label class="col-sm-2 control-label" for="bearerOnly">Bearer Only</label>
-                    <div class="col-sm-4">
-                        <input ng-model="application.bearerOnly" name="bearerOnly" id="bearerOnly" onoffswitch />
-                    </div>
-                </div>
-                <div class="form-group clearfix block">
-                    <label class="col-sm-2 control-label" for="publicClient">Public Client</label>
+                <div class="form-group">
+                    <label class="col-sm-2 control-label" for="clientType">Client Type</label>
                     <div class="col-sm-4">
-                        <input ng-model="application.publicClient" name="publicClient" id="publicClient" onoffswitch />
+                        <div class="select-kc">
+                            <select id="clientType"
+                                    ng-change="changeClientType()"
+                                    ng-model="clientType"
+                                    ng-options="cType for cType in clientTypes">
+                            </select>
+                        </div>
                     </div>
                 </div>
                 <div class="form-group" data-ng-show="!application.bearerOnly">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
index a279e7c..5fe0e99 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
@@ -40,10 +40,16 @@
                         <input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block">
-                    <label class="col-sm-2 control-label" for="publicClient">Public Client</label>
+                <div class="form-group">
+                    <label class="col-sm-2 control-label" for="clientType">Client Type</label>
                     <div class="col-sm-4">
-                        <input ng-model="oauth.publicClient" name="publicClient" id="publicClient" onoffswitch />
+                        <div class="select-kc">
+                            <select id="clientType"
+                                    ng-change="changeClientType()"
+                                    ng-model="clientType"
+                                    ng-options="cType for cType in clientTypes">
+                            </select>
+                        </div>
                     </div>
                 </div>
                 <div class="form-group">
diff --git a/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java b/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
index b808089..184de4e 100755
--- a/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
@@ -44,13 +44,6 @@ public class OAuthClientManager {
     public OAuthClientModel create(OAuthClientRepresentation rep) {
         OAuthClientModel model = create(rep.getName());
         update(rep, model);
-        model.setSecret(rep.getSecret());
-        if (rep.getClaims() != null) {
-            ClaimManager.setClaims(model, rep.getClaims());
-        }
-        if (rep.getNotBefore() != null) {
-            model.setNotBefore(rep.getNotBefore());
-        }
         return model;
     }
 
@@ -58,6 +51,13 @@ public class OAuthClientManager {
         if (rep.getName() != null) model.setClientId(rep.getName());
         if (rep.isEnabled() != null) model.setEnabled(rep.isEnabled());
         if (rep.isPublicClient() != null) model.setPublicClient(rep.isPublicClient());
+        if (rep.getClaims() != null) {
+            ClaimManager.setClaims(model, rep.getClaims());
+        }
+        if (rep.getNotBefore() != null) {
+            model.setNotBefore(rep.getNotBefore());
+        }
+        if (rep.getSecret() != null) model.setSecret(rep.getSecret());
         List<String> redirectUris = rep.getRedirectUris();
         if (redirectUris != null) {
             model.setRedirectUris(new HashSet<String>(redirectUris));