KEYCLOAK-429 Remove role from composite roles when deleted
This commit is contained in:
parent
573c88564b
commit
3d02fd5d0e
5 changed files with 10 additions and 10 deletions
|
@ -125,6 +125,7 @@ public class ApplicationAdapter extends ClientAdapter implements ApplicationMode
|
|||
applicationEntity.getRoles().remove(role);
|
||||
applicationEntity.getDefaultRoles().remove(role);
|
||||
|
||||
em.createNativeQuery("delete from CompositeRole where role = :role").setParameter("role", role).executeUpdate();
|
||||
em.createQuery("delete from " + ScopeMappingEntity.class.getSimpleName() + " where role = :role").setParameter("role", role).executeUpdate();
|
||||
em.createQuery("delete from " + UserRoleMappingEntity.class.getSimpleName() + " where role = :role").setParameter("role", role).executeUpdate();
|
||||
role.setApplication(null);
|
||||
|
|
|
@ -974,6 +974,7 @@ public class RealmAdapter implements RealmModel {
|
|||
realm.getRoles().remove(role);
|
||||
realm.getDefaultRoles().remove(role);
|
||||
|
||||
em.createNativeQuery("delete from CompositeRole where role = :role").setParameter("role", roleEntity).executeUpdate();
|
||||
em.createQuery("delete from " + UserRoleMappingEntity.class.getSimpleName() + " where role = :role").setParameter("role", roleEntity).executeUpdate();
|
||||
em.createQuery("delete from " + ScopeMappingEntity.class.getSimpleName() + " where role = :role").setParameter("role", roleEntity).executeUpdate();
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ import javax.persistence.GeneratedValue;
|
|||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToMany;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
@ -27,7 +29,7 @@ public abstract class RoleEntity {
|
|||
private String name;
|
||||
private String description;
|
||||
@ManyToMany(fetch = FetchType.LAZY, cascade = {})
|
||||
//@JoinTable(name = "COMPOSITE_ROLE")
|
||||
@JoinTable(name = "CompositeRole", joinColumns = @JoinColumn(name = "composite"), inverseJoinColumns = @JoinColumn(name = "role"))
|
||||
private Collection<RoleEntity> compositeRoles = new ArrayList<RoleEntity>();
|
||||
|
||||
|
||||
|
|
|
@ -212,6 +212,10 @@ public class AdapterTest extends AbstractModelTest {
|
|||
realmModel.addScopeMapping(client, appRole);
|
||||
|
||||
RoleModel realmRole = realmModel.addRole("test");
|
||||
RoleModel realmRole2 = realmModel.addRole("test2");
|
||||
realmRole.addCompositeRole(realmRole2);
|
||||
realmRole.addCompositeRole(appRole);
|
||||
|
||||
realmModel.addScopeMapping(app, realmRole);
|
||||
|
||||
Assert.assertTrue(identitySession.removeRealm(realmModel.getId()));
|
||||
|
|
|
@ -105,15 +105,7 @@ public class RealmManager {
|
|||
public boolean removeRealm(RealmModel realm) {
|
||||
boolean removed = identitySession.removeRealm(realm.getId());
|
||||
|
||||
RealmModel adminRealm = getKeycloakAdminstrationRealm();
|
||||
RoleModel adminRole = adminRealm.getRole(AdminRoles.ADMIN);
|
||||
|
||||
ApplicationModel realmAdminApp = realm.getAdminApp();
|
||||
for (RoleModel r : realmAdminApp.getRoles()) {
|
||||
adminRole.removeCompositeRole(r);
|
||||
}
|
||||
|
||||
adminRealm.removeApplication(realmAdminApp.getId());
|
||||
getKeycloakAdminstrationRealm().removeApplication(realm.getAdminApp().getId());
|
||||
|
||||
return removed;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue