keycloak-aplcache

Merge pull request #2803 from dbarentine/1.9.x KEYCLOAK-2973

5/6/2016 2:07:44 AM

Details

diff --git a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoUserProvider.java b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoUserProvider.java
index e0ea9d7..1f26239 100755
--- a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoUserProvider.java
+++ b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoUserProvider.java
@@ -372,7 +372,11 @@ public class MongoUserProvider implements UserProvider {
         MongoUserEntity userEntity = mongoUser.getUser();
         FederatedIdentityEntity federatedIdentityEntity = findFederatedIdentityLink(userEntity, federatedIdentityModel.getIdentityProvider());
 
+        //pushItemToList updates the whole federatedIdentities array in Mongo so we just need to remove this object from the Java
+        //List and pushItemToList will handle the DB update.
+        userEntity.getFederatedIdentities().remove(federatedIdentityEntity);
         federatedIdentityEntity.setToken(federatedIdentityModel.getToken());
+        getMongoStore().pushItemToList(userEntity, "federatedIdentities", federatedIdentityEntity, true, invocationContext);
     }
 
     @Override