public void federatedIdentityLinkUpdatedInvalidation(String userId, Set<String> invalidations) { invalidations.add(UserCacheSession.getFederatedIdentityLinksCacheKey(userId)); }
public void federatedIdentityLinkRemovedInvalidation(String userId, String realmId, String identityProviderId, String socialUserId, Set<String> invalidations) { invalidations.add(UserCacheSession.getFederatedIdentityLinksCacheKey(userId)); if (identityProviderId != null) { invalidations.add(UserCacheSession.getUserByFederatedIdentityCacheKey(realmId, identityProviderId, socialUserId)); } }
public void fullUserInvalidation(String userId, String username, String email, String realmId, boolean identityFederationEnabled, Map<String, String> federatedIdentities, Set<String> invalidations) { userUpdatedInvalidations(userId, username, email, realmId, invalidations); if (identityFederationEnabled) { // Invalidate all keys for lookup this user by any identityProvider link for (Map.Entry<String, String> socialLink : federatedIdentities.entrySet()) { String fedIdentityCacheKey = UserCacheSession.getUserByFederatedIdentityCacheKey(realmId, socialLink.getKey(), socialLink.getValue()); invalidations.add(fedIdentityCacheKey); } // Invalidate federationLinks of user invalidations.add(UserCacheSession.getFederatedIdentityLinksCacheKey(userId)); } // Consents invalidations.add(UserCacheSession.getConsentCacheKey(userId)); }
@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 Set<FederatedIdentityModel> getFederatedIdentities(UserModel user, RealmModel realm) { logger.tracev("getFederatedIdentities: {0}", user.getUsername()); String cacheKey = getFederatedIdentityLinksCacheKey(user.getId()); if (realmInvalidations.contains(realm.getId()) || invalidations.contains(user.getId()) || invalidations.contains(cacheKey)) { return getDelegate().getFederatedIdentities(user, realm); } CachedFederatedIdentityLinks cachedLinks = cache.get(cacheKey, CachedFederatedIdentityLinks.class); if (cachedLinks == null) { Long loaded = cache.getCurrentRevision(cacheKey); Set<FederatedIdentityModel> federatedIdentities = getDelegate().getFederatedIdentities(user, realm); cachedLinks = new CachedFederatedIdentityLinks(loaded, cacheKey, realm, federatedIdentities); cache.addRevisioned(cachedLinks, startupRevision); return federatedIdentities; } else { return new HashSet<>(cachedLinks.getFederatedIdentities()); } }