Details
diff --git a/examples/cors/angular-product-app/src/main/webapp/index.html b/examples/cors/angular-product-app/src/main/webapp/index.html
index 6cef8b9..b385fe3 100755
--- a/examples/cors/angular-product-app/src/main/webapp/index.html
+++ b/examples/cors/angular-product-app/src/main/webapp/index.html
@@ -81,6 +81,16 @@
</div>
</div>
<hr />
+ <div>
+ <h2><span>Server version</span></h2>
+ <button type="submit" data-ng-click="loadVersion()">Load version</button>
+
+ <div data-ng-show="version">
+ Keycloak version: {{version.version}} <br/>
+ Keycloak build time: {{version['build-time'] | date:'yyyy-MM-dd HH:mm:ss'}} <br/>
+ </div>
+ </div>
+ <hr />
</div>
</body>
</html>
diff --git a/examples/cors/angular-product-app/src/main/webapp/js/app.js b/examples/cors/angular-product-app/src/main/webapp/js/app.js
index 699644e..d6e9fd4 100755
--- a/examples/cors/angular-product-app/src/main/webapp/js/app.js
+++ b/examples/cors/angular-product-app/src/main/webapp/js/app.js
@@ -32,6 +32,9 @@ angular.element(document).ready(function ($http) {
module.controller('GlobalCtrl', function($scope, $http) {
$scope.products = [];
$scope.roles = [];
+ $scope.serverInfo = [];
+ $scope.realm = [];
+ $scope.version = [];
$scope.reloadData = function() {
$http.get("http://localhost-db:8080/cors-database/products").success(function(data) {
$scope.products = angular.fromJson(data);
@@ -72,6 +75,12 @@ module.controller('GlobalCtrl', function($scope, $http) {
});
};
+ $scope.loadVersion = function() {
+ $http.get("http://localhost-auth:8080/auth/version").success(function(data) {
+ $scope.version = angular.fromJson(data);
+ });
+ };
+
$scope.logout = logout;
});
diff --git a/services/src/main/java/org/keycloak/services/resources/ServerVersionResource.java b/services/src/main/java/org/keycloak/services/resources/ServerVersionResource.java
index ad703f9..4bf4b2f 100755
--- a/services/src/main/java/org/keycloak/services/resources/ServerVersionResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/ServerVersionResource.java
@@ -1,12 +1,19 @@
package org.keycloak.services.resources;
+import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
+import org.jboss.resteasy.spi.HttpRequest;
+import org.jboss.resteasy.spi.HttpResponse;
import org.keycloak.Version;
import javax.ws.rs.GET;
+import javax.ws.rs.OPTIONS;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
@@ -15,10 +22,26 @@ import javax.ws.rs.core.MediaType;
@Path("/version")
public class ServerVersionResource {
+ protected static final Logger logger = Logger.getLogger(ServerVersionResource.class);
+
+ @Context
+ protected HttpRequest request;
+
+ @Context
+ protected HttpResponse response;
+
+ @OPTIONS
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getVersionPreflight() {
+ logger.debugv("cors request from: {0}", request.getHttpHeaders().getRequestHeaders().getFirst("Origin"));
+ return Cors.add(request, Response.ok()).allowedMethods("GET").auth().preflight().build();
+ }
+
@GET
@NoCache
@Produces(MediaType.APPLICATION_JSON)
public Version getVersion() {
+ Cors.add(request).allowedOrigins("*").allowedMethods("GET").auth().build(response);
return Version.SINGLETON;
}
}