keycloak-aplcache

Details

diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaUserProvider.java b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaUserProvider.java
index daa7bd9..040d6eb 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaUserProvider.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaUserProvider.java
@@ -76,21 +76,21 @@ public class JpaUserProvider implements UserProvider {
         entity.setRealmId(realm.getId());
         em.persist(entity);
         em.flush();
-        UserModel userModel = new UserAdapter(session, realm, em, entity);
+        UserAdapter userModel = new UserAdapter(session, realm, em, entity);
 
         if (addDefaultRoles) {
             for (String r : realm.getDefaultRoles()) {
-                userModel.grantRole(realm.getRole(r));
+                userModel.grantRoleImpl(realm.getRole(r)); // No need to check if user has role as it's new user
             }
 
             for (ClientModel application : realm.getClients()) {
                 for (String r : application.getDefaultRoles()) {
-                    userModel.grantRole(application.getRole(r));
+                    userModel.grantRoleImpl(application.getRole(r)); // No need to check if user has role as it's new user
                 }
             }
 
             for (GroupModel g : realm.getDefaultGroups()) {
-                userModel.joinGroup(g);
+                userModel.joinGroupImpl(g); // No need to check if user has group as it's new user
             }
         }
 
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
index ef24368..9cce404 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
@@ -517,6 +517,11 @@ public class UserAdapter implements UserModel, JpaModel<UserEntity> {
     @Override
     public void joinGroup(GroupModel group) {
         if (isMemberOf(group)) return;
+        joinGroupImpl(group);
+
+    }
+
+    protected void joinGroupImpl(GroupModel group) {
         UserGroupMembershipEntity entity = new UserGroupMembershipEntity();
         entity.setUser(getEntity());
         entity.setGroupId(group.getId());
@@ -570,6 +575,10 @@ public class UserAdapter implements UserModel, JpaModel<UserEntity> {
     @Override
     public void grantRole(RoleModel role) {
         if (hasRole(role)) return;
+        grantRoleImpl(role);
+    }
+
+    public void grantRoleImpl(RoleModel role) {
         UserRoleMappingEntity entity = new UserRoleMappingEntity();
         entity.setUser(getEntity());
         entity.setRoleId(role.getId());