KEYCLOAK-2431 Ensure users removed through UserManager to properly invoke callbacks. Make UserSessionPersister implementations more resistent when user was not properly removed
This commit is contained in:
1 parent
1edbf96cae
commit
db76655717
8 files changed
+90
-22
No files matched your search
@@ -104,7 +104,7 @@ public class ClientManager {
|
||||
|
||||
UserModel serviceAccountUser = realmManager.getSession().users().getUserByServiceAccountClient(client);
|
||||
if (serviceAccountUser != null) {
|
||||
realmManager.getSession().users().removeUser(realm, serviceAccountUser);
|
||||
new UserManager(realmManager.getSession()).removeUser(realm, serviceAccountUser);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
package org.keycloak.services.managers;
|
||||
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.UserSessionProvider;
|
||||
import org.keycloak.models.session.UserSessionPersisterProvider;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
*/
|
||||
public class UserManager {
|
||||
|
||||
private KeycloakSession session;
|
||||
|
||||
public UserManager(KeycloakSession session) {
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
public boolean removeUser(RealmModel realm, UserModel user) {
|
||||
UserSessionProvider sessions = session.sessions();
|
||||
if (sessions != null) {
|
||||
sessions.onUserRemoved(realm, user);
|
||||
}
|
||||
|
||||
UserSessionPersisterProvider sessionsPersister = session.getProvider(UserSessionPersisterProvider.class);
|
||||
if (sessionsPersister != null) {
|
||||
sessionsPersister.onUserRemoved(realm, user);
|
||||
}
|
||||
|
||||
if (session.users().removeUser(realm, user)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user