keycloak-aplcache

Details

diff --git a/examples/themes/src/main/resources/theme/logo-example/admin/resources/css/logo.css b/examples/themes/src/main/resources/theme/logo-example/admin/resources/css/logo.css
index c00e814..81ed18e 100755
--- a/examples/themes/src/main/resources/theme/logo-example/admin/resources/css/logo.css
+++ b/examples/themes/src/main/resources/theme/logo-example/admin/resources/css/logo.css
@@ -1,7 +1,4 @@
 
 .navbar-pf .navbar-brand {
-    background: url('../img/red-hat-logo.png') no-repeat 0px 0px;
-    display: block;
-    height: 25px;
-    width: 200px;
+    background: url('../img/red-hat-logo.png') no-repeat 0px 5px;
 }
\ No newline at end of file
diff --git a/examples/themes/src/main/resources/theme/logo-example/admin/resources/img/red-hat-logo.png b/examples/themes/src/main/resources/theme/logo-example/admin/resources/img/red-hat-logo.png
index 7dcf731..0b01b1a 100755
Binary files a/examples/themes/src/main/resources/theme/logo-example/admin/resources/img/red-hat-logo.png and b/examples/themes/src/main/resources/theme/logo-example/admin/resources/img/red-hat-logo.png differ
diff --git a/examples/themes/src/main/resources/theme/logo-example/admin/theme.properties b/examples/themes/src/main/resources/theme/logo-example/admin/theme.properties
index 8cf8245..4bbbf0e 100755
--- a/examples/themes/src/main/resources/theme/logo-example/admin/theme.properties
+++ b/examples/themes/src/main/resources/theme/logo-example/admin/theme.properties
@@ -1,3 +1,3 @@
 parent=keycloak
 import=common/keycloak
-styles=css/styles.css lib/patternfly/css/patternfly.css lib/select2-3.4.1/select2.css css/styles.css css/logo.css
\ No newline at end of file
+styles=lib/patternfly/css/patternfly.css lib/select2-3.4.1/select2.css css/styles.css css/logo.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
index 810aef7..0b599bf 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
@@ -310,17 +310,23 @@ module.controller('ClientCertificateExportCtrl', function($scope, $location, $ht
             data: $scope.jks,
             headers: {
                 'Content-Type': 'application/json',
-                'Accept': 'client/octet-stream'
+                'Accept': 'application/octet-stream'
             }
         }).success(function(data){
             var blob = new Blob([data], {
-                type: 'client/octet-stream'
+                type: 'application/octet-stream'
             });
             var ext = ".jks";
             if ($scope.jks.format == 'PKCS12') ext = ".p12";
             saveAs(blob, 'keystore' + ext);
-        }).error(function(){
-            Notifications.error("Error downloading.");
+        }).error(function(data) {
+            var errorMsg = 'Error downloading';
+            try {
+                var error = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(data)));
+                errorMsg = error['error_description'] ? error['error_description'] : errorMsg;
+            } catch (err) {
+            }
+            Notifications.error(errorMsg);
         });
     }
 
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/authentication-flows.html b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/authentication-flows.html
index d0fc0d1..50f01b9 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/authentication-flows.html
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/authentication-flows.html
@@ -9,7 +9,7 @@
             <th colspan="6" class="kc-table-actions">
                 <div class="dropdown pull-left">
                     <select class="form-control" ng-model="flow"
-                            ng-options="flow.alias for flow in flows"
+                            ng-options="(flow.alias|capitalize) for flow in flows"
                             data-ng-change="setupForm()">
                     </select>
                 </div>
@@ -24,7 +24,7 @@
         <tbody>
         <tr ng-repeat="execution in executions" data-ng-show="executions.length > 0">
             <td ng-show="execution.subFlow"></td>
-            <td><h2>{{execution.referenceType}}</h2></td>
+            <td>{{execution.referenceType|capitalize}}</td>
             <td ng-hide="execution.subFlow"></td>
             <td ng-repeat="choice in execution.requirementChoices">
                 <!--
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-saml-keys.html b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-saml-keys.html
index eff7050..540fa9d 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-saml-keys.html
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-saml-keys.html
@@ -30,9 +30,9 @@
             </div>
             <div class="form-group">
                 <div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
-                    <button class="btn btn-primary" type="submit" data-ng-click="generateSigningKey()">Generate new keys</button>
-                    <button class="btn btn-primary" type="submit" data-ng-click="importSigningKey()">Import</button>
-                    <button class="btn btn-primary" type="submit" data-ng-hide="!signingKeyInfo.certificate" data-ng-click="exportSigningKey()">Export</button>
+                    <button class="btn btn-default" type="submit" data-ng-click="generateSigningKey()">Generate new keys</button>
+                    <button class="btn btn-default" type="submit" data-ng-click="importSigningKey()">Import</button>
+                    <button class="btn btn-default" type="submit" data-ng-hide="!signingKeyInfo.certificate" data-ng-click="exportSigningKey()">Export</button>
                 </div>
             </div>
         </fieldset>
@@ -56,9 +56,9 @@
             </div>
             <div class="form-group">
                 <div class="col-md-10 col-md-offset-2" data-ng-show="access.manageRealm">
-                    <button class="btn btn-primary" type="submit" data-ng-click="generateEncryptionKey()">Generate new keys</button>
-                    <button class="btn btn-primary" type="submit" data-ng-click="importEncryptionKey()">Import</button>
-                    <button class="btn btn-primary" type="submit" data-ng-hide="!encryptionKeyInfo.certificate" data-ng-click="exportEncryptionKey()">Export</button>
+                    <button class="btn btn-default" type="submit" data-ng-click="generateEncryptionKey()">Generate new keys</button>
+                    <button class="btn btn-default" type="submit" data-ng-click="importEncryptionKey()">Import</button>
+                    <button class="btn btn-default" type="submit" data-ng-hide="!encryptionKeyInfo.certificate" data-ng-click="exportEncryptionKey()">Export</button>
                 </div>
             </div>
         </fieldset>
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-service-account-roles.html b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-service-account-roles.html
index 03a38d9..29bb4ab 100644
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-service-account-roles.html
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-service-account-roles.html
@@ -5,8 +5,6 @@
         <li>{{client.clientId}}</li>
     </ol>
 
-    <h1>{{client.clientId|capitalize}}</h1>
-
     <kc-tabs-client></kc-tabs-client>
 
     <h2><span>{{client.clientId}}</span> Service Accounts </h2>
diff --git a/forms/common-themes/src/main/resources/theme/keycloak/admin/resources/css/styles.css b/forms/common-themes/src/main/resources/theme/keycloak/admin/resources/css/styles.css
index 30fb25a..e550668 100644
--- a/forms/common-themes/src/main/resources/theme/keycloak/admin/resources/css/styles.css
+++ b/forms/common-themes/src/main/resources/theme/keycloak/admin/resources/css/styles.css
@@ -2,15 +2,6 @@ html,body {
     height: 100%;
 }
 
-/**
-.navbar-pf .navbar-brand {
-    background: url('../img/brand.svg') no-repeat 0px 5px;
-    display: block;
-    height: 25px;
-    width: 200px;
-}
-**/
-
 form {
     margin-top: 20px;
 }
@@ -269,15 +260,15 @@ table {
   border-top: none!important;
 }
 
-.navbar-brand{
-  padding: 0!important;
-  height: 56px!important;
+.navbar-pf .navbar-brand {
+  padding: 0;
+  height: 56px;
   line-height: 56px;
-  background-position: center center!important;
-  background-image: url('../img/keyclok-logo.svg')!important;
-  background-size: 148px 36px !important;
-background-repeat: no-repeat;
-  width: 148px!important;
+  background-position: center center;
+  background-image: url('../img/keyclok-logo.svg');
+  background-size: 148px 36px;
+  background-repeat: no-repeat;
+  width: 148px;
 }
 
 .navbar-pf .navbar-utility > li > a{
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
index 03ddcfd..d988aaa 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
@@ -11,6 +11,7 @@ import org.keycloak.models.ClientModel;
 import org.keycloak.models.KeycloakSession;
 import org.keycloak.models.RealmModel;
 import org.keycloak.models.utils.KeycloakModelUtils;
+import org.keycloak.services.ErrorResponseException;
 import org.keycloak.util.CertificateUtils;
 import org.keycloak.util.PemUtils;
 
@@ -21,6 +22,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
 import java.io.ByteArrayOutputStream;
@@ -281,10 +283,10 @@ public class ClientAttributeCertificateResource {
             throw new NotFoundException("keypair not generated for client");
         }
         if (privatePem != null && config.getKeyPassword() == null) {
-            throw new BadRequestException("Need to specify a key password for jks download");
+            throw new ErrorResponseException("password-missing", "Need to specify a key password for jks download", Response.Status.BAD_REQUEST);
         }
         if (config.getStorePassword() == null) {
-            throw new BadRequestException("Need to specify a store password for jks download");
+            throw new ErrorResponseException("password-missing", "Need to specify a store password for jks download", Response.Status.BAD_REQUEST);
         }
         final KeyStore keyStore;
         try {