diff --git a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
index 0fa958c..dd82b2c 100755
--- a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
+++ b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
@@ -2218,7 +2218,13 @@ public class RepresentationToModel {
}
}
if (!hasResource && !"".equals(resourceId)) {
- policy.addResource(storeFactory.getResourceStore().findById(resourceId, policy.getResourceServer().getId()));
+ Resource resource = storeFactory.getResourceStore().findById(resourceId, policy.getResourceServer().getId());
+
+ if (resource == null) {
+ throw new RuntimeException("Resource [" + resourceId + "] not found.");
+ }
+
+ policy.addResource(resource);
}
}
diff --git a/themes/src/main/resources/theme/base/admin/resources/js/authz/authz-controller.js b/themes/src/main/resources/theme/base/admin/resources/js/authz/authz-controller.js
index 2a86b93..ff7d80f 100644
--- a/themes/src/main/resources/theme/base/admin/resources/js/authz/authz-controller.js
+++ b/themes/src/main/resources/theme/base/admin/resources/js/authz/authz-controller.js
@@ -890,7 +890,12 @@ module.controller('ResourceServerPolicyResourceDetailCtrl', function($scope, $ro
},
onUpdate : function() {
- $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ if ($scope.policy.config.resources && $scope.policy.config.resources._id) {
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ } else {
+ delete $scope.policy.config.resources
+ }
+
var policies = [];
for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
@@ -920,7 +925,11 @@ module.controller('ResourceServerPolicyResourceDetailCtrl', function($scope, $ro
},
onCreate : function() {
- $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ if ($scope.policy.config.resources && $scope.policy.config.resources._id) {
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ } else {
+ delete $scope.policy.config.resources
+ }
var policies = [];