keycloak-aplcache

Details

diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/groups.js b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/groups.js
index c336dc8..00c8e93 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/groups.js
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/groups.js
@@ -8,6 +8,7 @@ module.controller('GroupListCtrl', function($scope, $route, realm, groups, Group
     $scope.tree = [];
 
     $scope.edit = function(selected) {
+        if (selected.id == 'realm') return;
         $location.url("/realms/" + realm.realm + "/groups/" + selected.id);
     }
 
@@ -23,6 +24,7 @@ module.controller('GroupListCtrl', function($scope, $route, realm, groups, Group
     $scope.paste = function(selected) {
         if (selected == null) return;
         if ($scope.cutNode == null) return;
+        if (selected.id == $scope.cutNode.id) return;
         if (selected.id == 'realm') {
             Groups.save({realm: realm.realm}, {id:$scope.cutNode.id}, function() {
                 $route.reload();
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
index 0fb9c2f..8ef4dd2 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
@@ -104,6 +104,9 @@ public class GroupAdapter implements GroupModel {
     @Override
     public void setParent(GroupModel parent) {
         if (parent == null) group.setParent(null);
+        else if (parent.getId().equals(getId())) {
+            return;
+        }
         else {
             GroupEntity parentEntity = toEntity(parent, em);
             group.setParent(parentEntity);
@@ -112,11 +115,17 @@ public class GroupAdapter implements GroupModel {
 
     @Override
     public void addChild(GroupModel subGroup) {
+        if (subGroup.getId().equals(getId())) {
+            return;
+        }
         subGroup.setParent(this);
     }
 
     @Override
     public void removeChild(GroupModel subGroup) {
+        if (subGroup.getId().equals(getId())) {
+            return;
+        }
         subGroup.setParent(null);
     }
 
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
index 88deab5..acc5182 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
@@ -1994,6 +1994,9 @@ public class RealmAdapter implements RealmModel {
 
     @Override
     public void moveGroup(GroupModel group, GroupModel toParent) {
+        if (toParent != null && group.getId().equals(toParent.getId())) {
+            return;
+        }
         if (group.getParentId() != null) {
             group.getParent().removeChild(group);
         }
diff --git a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/GroupAdapter.java b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/GroupAdapter.java
index 180eb9d..32be0be 100755
--- a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/GroupAdapter.java
+++ b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/GroupAdapter.java
@@ -223,6 +223,9 @@ public class GroupAdapter extends AbstractMongoAdapter<MongoGroupEntity> impleme
     @Override
     public void setParent(GroupModel parent) {
         if (parent == null) group.setParentId(null);
+        else if (parent.getId().equals(getId())) {
+            return;
+        }
         else {
             group.setParentId(parent.getId());
         }
@@ -232,6 +235,9 @@ public class GroupAdapter extends AbstractMongoAdapter<MongoGroupEntity> impleme
 
     @Override
     public void addChild(GroupModel subGroup) {
+        if (subGroup.getId().equals(getId())) {
+            return;
+        }
         subGroup.setParent(this);
         updateGroup();
 
@@ -239,6 +245,9 @@ public class GroupAdapter extends AbstractMongoAdapter<MongoGroupEntity> impleme
 
     @Override
     public void removeChild(GroupModel subGroup) {
+        if (subGroup.getId().equals(getId())) {
+            return;
+        }
         subGroup.setParent(null);
         updateGroup();
 
diff --git a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
index 8f8d43d..d31503c 100755
--- a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
+++ b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
@@ -636,6 +636,9 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
 
     @Override
     public void moveGroup(GroupModel group, GroupModel toParent) {
+        if (toParent != null && group.getId().equals(toParent.getId())) {
+            return;
+        }
         if (group.getParentId() != null) {
             group.getParent().removeChild(group);
         }