@Override public void updateFederatedIdentity(RealmModel realm, String userId, FederatedIdentityModel model) { createIndex(realm, userId); BrokerLinkEntity entity = getBrokerLinkEntity(realm, userId, model.getIdentityProvider()); if (entity == null) return; entity.setBrokerUserName(model.getUserName()); entity.setBrokerUserId(model.getUserId()); entity.setToken(model.getToken()); em.persist(entity); em.flush(); }
public static UserFederationLinkRemovedEvent create(String userId, String realmId, FederatedIdentityModel socialLink) { UserFederationLinkRemovedEvent event = new UserFederationLinkRemovedEvent(); event.userId = userId; event.realmId = realmId; if (socialLink != null) { event.identityProviderId = socialLink.getIdentityProvider(); event.socialUserId = socialLink.getUserId(); } return event; }
@Override public void updateFederatedIdentity(RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel) { FederatedIdentityEntity federatedIdentity = findFederatedIdentity(federatedUser, federatedIdentityModel.getIdentityProvider()); federatedIdentity.setToken(federatedIdentityModel.getToken()); em.persist(federatedIdentity); em.flush(); }
public static FederatedIdentityRepresentation toRepresentation(FederatedIdentityModel socialLink) { FederatedIdentityRepresentation rep = new FederatedIdentityRepresentation(); rep.setUserName(socialLink.getUserName()); rep.setIdentityProvider(socialLink.getIdentityProvider()); rep.setUserId(socialLink.getUserId()); return rep; }
@GET @Path("/user-by-federated-identity") @Produces(MediaType.APPLICATION_JSON) public UserRepresentation getUserByFederatedIdentity(@QueryParam("realmName") String realmName, @QueryParam("identityProvider") String identityProvider, @QueryParam("userId") String userId, @QueryParam("userName") String userName) { RealmModel realm = getRealmByName(realmName); UserModel foundFederatedUser = session.users().getUserByFederatedIdentity(new FederatedIdentityModel(identityProvider, userId, userName), realm); if (foundFederatedUser == null) return null; return ModelToRepresentation.toRepresentation(foundFederatedUser); }
private FederatedIdentityModel getIdentity(Set<FederatedIdentityModel> identities, String providerId) { for (FederatedIdentityModel link : identities) { if (providerId.equals(link.getIdentityProvider())) { return link; } } return null; }
public String getUserId() { return federatedIdentityModel != null ? federatedIdentityModel.getUserId() : null; }
public String getUserName() { return federatedIdentityModel != null ? federatedIdentityModel.getUserName() : null; }
@Override public Response retrieveToken(FederatedIdentityModel identity) { return Response.ok(identity.getToken()).build(); }
private static String getUserByFederatedIdentityCacheKey(String realmId, FederatedIdentityModel socialLink) { return getUserByFederatedIdentityCacheKey(realmId, socialLink.getIdentityProvider(), socialLink.getUserId()); }
public static FederatedIdentityRepresentation exportSocialLink(FederatedIdentityModel socialLink) { FederatedIdentityRepresentation socialLinkRep = new FederatedIdentityRepresentation(); socialLinkRep.setIdentityProvider(socialLink.getIdentityProvider()); socialLinkRep.setUserId(socialLink.getUserId()); socialLinkRep.setUserName(socialLink.getUserName()); return socialLinkRep; }
@Override public void updateFederatedIdentity(RealmModel realm, String userId, FederatedIdentityModel federatedIdentityModel) { FederatedUser userEntity = getUserById(userId); if (userEntity == null) return; FederatedIdentityEntity federatedIdentityEntity = findFederatedIdentityLink(userEntity, federatedIdentityModel.getIdentityProvider()); if (federatedIdentityEntity == null) return; //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 public Set<FederatedIdentityModel> getFederatedIdentities(String userId, RealmModel realm) { TypedQuery<BrokerLinkEntity> query = em.createNamedQuery("findBrokerLinkByUser", BrokerLinkEntity.class) .setParameter("userId", userId); List<BrokerLinkEntity> results = query.getResultList(); Set<FederatedIdentityModel> set = new HashSet<>(); for (BrokerLinkEntity entity : results) { FederatedIdentityModel model = new FederatedIdentityModel(entity.getIdentityProvider(), entity.getBrokerUserId(), entity.getBrokerUserName(), entity.getToken()); set.add(model); } return set; }
@Override public FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm) { logger.tracev("getFederatedIdentity: {0} {1}", user.getUsername(), socialProvider); String cacheKey = getFederatedIdentityLinksCacheKey(user.getId()); if (realmInvalidations.contains(realm.getId()) || invalidations.contains(user.getId()) || invalidations.contains(cacheKey)) { return getDelegate().getFederatedIdentity(user, socialProvider, realm); } Set<FederatedIdentityModel> federatedIdentities = getFederatedIdentities(user, realm); for (FederatedIdentityModel socialLink : federatedIdentities) { if (socialLink.getIdentityProvider().equals(socialProvider)) { return socialLink; } } return null; }
@Override public void addFederatedIdentity(RealmModel realm, String userId, FederatedIdentityModel socialLink) { FederatedUser userEntity = findOrCreate(realm, userId); FederatedIdentityEntity federatedIdentityEntity = new FederatedIdentityEntity(); federatedIdentityEntity.setIdentityProvider(socialLink.getIdentityProvider()); federatedIdentityEntity.setUserId(socialLink.getUserId()); federatedIdentityEntity.setUserName(socialLink.getUserName().toLowerCase()); federatedIdentityEntity.setToken(socialLink.getToken()); getMongoStore().pushItemToList(userEntity, "federatedIdentities", federatedIdentityEntity, true, invocationContext); }
public static UserFullInvalidationEvent create(String userId, String username, String email, String realmId, boolean identityFederationEnabled, Collection<FederatedIdentityModel> federatedIdentities) { UserFullInvalidationEvent event = new UserFullInvalidationEvent(); event.userId = userId; event.username = username; event.email = email; event.realmId = realmId; event.identityFederationEnabled = identityFederationEnabled; if (identityFederationEnabled) { event.federatedIdentities = new HashMap<>(); for (FederatedIdentityModel socialLink : federatedIdentities) { event.federatedIdentities.put(socialLink.getIdentityProvider(), socialLink.getUserId()); } } return event; }
@Override public void updateFederatedIdentity(RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel) { UserAdapter mongoUser = getUserById(federatedUser.getId(), realm); 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 public Set<FederatedIdentityModel> getFederatedIdentities(UserModel user, RealmModel realm) { TypedQuery<FederatedIdentityEntity> query = em.createNamedQuery("findFederatedIdentityByUser", FederatedIdentityEntity.class); UserEntity userEntity = em.getReference(UserEntity.class, user.getId()); query.setParameter("user", userEntity); List<FederatedIdentityEntity> results = query.getResultList(); Set<FederatedIdentityModel> set = new HashSet<FederatedIdentityModel>(); for (FederatedIdentityEntity entity : results) { set.add(new FederatedIdentityModel(entity.getIdentityProvider(), entity.getUserId(), entity.getUserName(), entity.getToken())); } return set; }
@Override public void addFederatedIdentity(RealmModel realm, UserModel user, FederatedIdentityModel identity) { FederatedIdentityEntity entity = new FederatedIdentityEntity(); entity.setRealmId(realm.getId()); entity.setIdentityProvider(identity.getIdentityProvider()); entity.setUserId(identity.getUserId()); entity.setUserName(identity.getUserName().toLowerCase()); entity.setToken(identity.getToken()); UserEntity userEntity = em.getReference(UserEntity.class, user.getId()); entity.setUser(userEntity); em.persist(entity); em.flush(); }
@Override public String getUserByFederatedIdentity(FederatedIdentityModel link, RealmModel realm) { TypedQuery<String> query = em.createNamedQuery("findUserByBrokerLinkAndRealm", String.class) .setParameter("realmId", realm.getId()) .setParameter("identityProvider", link.getIdentityProvider()) .setParameter("brokerUserId", link.getUserId()); List<String> results = query.getResultList(); if (results.isEmpty()) { return null; } else if (results.size() > 1) { throw new IllegalStateException("More results found for identityProvider=" + link.getIdentityProvider() + ", userId=" + link.getUserId() + ", results=" + results); } else { return results.get(0); } }