@Override public List<UserModel> getRoleMembers(RealmModel realm, RoleModel role, int firstResult, int maxResults) { return getDelegate().getRoleMembers(realm, role, firstResult, maxResults); }
@Override public List<UserModel> getUsers(RealmModel realm, boolean includeServiceAccounts) { return getDelegate().getUsers(realm, includeServiceAccounts); }
@Override public boolean revokeConsentForClient(RealmModel realm, String userId, String clientInternalId) { invalidateConsent(userId); return getDelegate().revokeConsentForClient(realm, userId, clientInternalId); }
@Override public void addConsent(RealmModel realm, String userId, UserConsentModel consent) { invalidateConsent(userId); getDelegate().addConsent(realm, userId, consent); }
@Override public boolean removeUser(RealmModel realm, UserModel user) { fullyInvalidateUser(realm, user); return getDelegate().removeUser(realm, user); }
private UserModel getUserModel() { return userProviderCache.getDelegate().getUserById(cached.getId(), realm); } }
@Override public UserModel addUser(RealmModel realm, String username) { UserModel user = getDelegate().addUser(realm, username); // just in case the transaction is rolled back you need to invalidate the user and all cache queries for that user fullyInvalidateUser(realm, user); managedUsers.put(user.getId(), user); return user; }
@Override public void preRemove(RealmModel realm, ComponentModel component) { if (!component.getProviderType().equals(UserStorageProvider.class.getName()) && !component.getProviderType().equals(ClientStorageProvider.class.getName())) return; addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm getDelegate().preRemove(realm, component); }
@Override public UserModel addUser(RealmModel realm, String id, String username, boolean addDefaultRoles, boolean addDefaultRequiredActions) { UserModel user = getDelegate().addUser(realm, id, username, addDefaultRoles, addDefaultRoles); // just in case the transaction is rolled back you need to invalidate the user and all cache queries for that user fullyInvalidateUser(realm, user); managedUsers.put(user.getId(), user); return user; }
@Override public void addFederatedIdentity(RealmModel realm, UserModel user, FederatedIdentityModel socialLink) { invalidateFederationLink(user.getId()); getDelegate().addFederatedIdentity(realm, user, socialLink); }
@Override public void preRemove(RealmModel realm) { addRealmInvalidation(realm.getId()); getDelegate().preRemove(realm); }
@Override public void preRemove(RealmModel realm, RoleModel role) { addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm getDelegate().preRemove(realm, role); } @Override
@Override public void preRemove(RealmModel realm, GroupModel group) { addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm getDelegate().preRemove(realm, group); }
@Override public void grantToAllUsers(RealmModel realm, RoleModel role) { addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm getDelegate().grantToAllUsers(realm, role); }
@Override public int getNotBeforeOfUser(RealmModel realm, UserModel user) { if (isRegisteredForInvalidation(realm, user.getId())) { return getDelegate().getNotBeforeOfUser(realm, user); } UserModel foundUser = getUserById(user.getId(), realm); if (foundUser instanceof UserAdapter) { return ((UserAdapter) foundUser).cached.getNotBefore(); } else { return getDelegate().getNotBeforeOfUser(realm, user); } }
@Override public UserModel getServiceAccount(ClientModel client) { // Just an attempt to find the user from cache by default serviceAccount username UserModel user = findServiceAccount(client); if (user != null && user.getServiceAccountClientLink() != null && user.getServiceAccountClientLink().equals(client.getId())) { return user; } return getDelegate().getServiceAccount(client); }
@Override public void unlinkUsers(RealmModel realm, String storageProviderId) { getDelegate().unlinkUsers(realm, storageProviderId); clear(); addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm }
@Override public void evict(RealmModel realm, UserModel user) { if (!transactionActive) throw new IllegalStateException("Cannot call evict() without a transaction"); getDelegate(); // invalidations need delegate set if (user instanceof CachedUserModel) { ((CachedUserModel)user).invalidate(); } else { cache.userUpdatedInvalidations(user.getId(), user.getUsername(), user.getEmail(), realm.getId(), invalidations); invalidationEvents.add(UserUpdatedEvent.create(user.getId(), user.getUsername(), user.getEmail(), realm.getId())); } }
@Override public void setNotBeforeForUser(RealmModel realm, UserModel user, int notBefore) { if (!isRegisteredForInvalidation(realm, user.getId())) { UserModel foundUser = getUserById(user.getId(), realm); if (foundUser instanceof UserAdapter) { ((UserAdapter) foundUser).invalidate(); } } getDelegate().setNotBeforeForUser(realm, user, notBefore); }
@Override public boolean removeFederatedIdentity(RealmModel realm, UserModel user, String socialProvider) { // Needs to invalidate both directions FederatedIdentityModel socialLink = getFederatedIdentity(user, socialProvider, realm); UserFederationLinkRemovedEvent event = UserFederationLinkRemovedEvent.create(user.getId(), realm.getId(), socialLink); cache.federatedIdentityLinkRemovedInvalidation(user.getId(), realm.getId(), event.getIdentityProviderId(), event.getSocialUserId(), invalidations); invalidationEvents.add(event); return getDelegate().removeFederatedIdentity(realm, user, socialProvider); }