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());