Skip to content
Snippets Groups Projects
Commit e695e173 authored by srosse's avatar srosse
Browse files

OO-1172: remove deleted users from courses and groups

parent eabdaab2
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,7 @@ import org.olat.basesecurity.BaseSecurity; ...@@ -40,6 +40,7 @@ import org.olat.basesecurity.BaseSecurity;
import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.BaseSecurityManager;
import org.olat.basesecurity.IdentityImpl; import org.olat.basesecurity.IdentityImpl;
import org.olat.basesecurity.SecurityGroup; import org.olat.basesecurity.SecurityGroup;
import org.olat.basesecurity.manager.GroupDAO;
import org.olat.commons.calendar.CalendarManagerFactory; import org.olat.commons.calendar.CalendarManagerFactory;
import org.olat.commons.lifecycle.LifeCycleManager; import org.olat.commons.lifecycle.LifeCycleManager;
import org.olat.core.CoreSpringFactory; import org.olat.core.CoreSpringFactory;
...@@ -97,6 +98,7 @@ public class UserDeletionManager extends BasicManager { ...@@ -97,6 +98,7 @@ public class UserDeletionManager extends BasicManager {
private DeletionModule deletionModule; private DeletionModule deletionModule;
private BaseSecurity securityManager; private BaseSecurity securityManager;
private MailManager mailManager; private MailManager mailManager;
private GroupDAO groupDao;
/** /**
* [used by spring] * [used by spring]
...@@ -122,6 +124,14 @@ public class UserDeletionManager extends BasicManager { ...@@ -122,6 +124,14 @@ public class UserDeletionManager extends BasicManager {
public void setMailManager(MailManager mailManager) { public void setMailManager(MailManager mailManager) {
this.mailManager = mailManager; this.mailManager = mailManager;
} }
/**
* [used by Spring]
* @param groupDao
*/
public void setGroupDao(GroupDAO groupDao) {
this.groupDao = groupDao;
}
/** /**
...@@ -304,7 +314,9 @@ public class UserDeletionManager extends BasicManager { ...@@ -304,7 +314,9 @@ public class UserDeletionManager extends BasicManager {
securityManager.removeIdentityFromSecurityGroup(identity, secGroup); securityManager.removeIdentityFromSecurityGroup(identity, secGroup);
logInfo("Removing user=" + identity + " from security group=" + secGroup.toString()); logInfo("Removing user=" + identity + " from security group=" + secGroup.toString());
} }
//remove identity from groups
groupDao.removeMemberships(identity);
// fxdiff: FXOLAT-44 delete emails still in change-workflow // fxdiff: FXOLAT-44 delete emails still in change-workflow
RegistrationManager rm = RegistrationManager.getInstance(); RegistrationManager rm = RegistrationManager.getInstance();
String key = identity.getUser().getProperty("emchangeKey", null); String key = identity.getUser().getProperty("emchangeKey", null);
......
...@@ -46,7 +46,7 @@ import org.springframework.stereotype.Service; ...@@ -46,7 +46,7 @@ import org.springframework.stereotype.Service;
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
* *
*/ */
@Service @Service("groupDao")
public class GroupDAO { public class GroupDAO {
@Autowired @Autowired
...@@ -134,6 +134,14 @@ public class GroupDAO { ...@@ -134,6 +134,14 @@ public class GroupDAO {
return memberships.size(); return memberships.size();
} }
public int removeMemberships(IdentityRef identity) {
String deleteQuery = "delete from bgroupmember as membership where membership.identity.key=:identityKey";
return dbInstance.getCurrentEntityManager()
.createQuery(deleteQuery).setParameter("identityKey", identity.getKey())
.executeUpdate();
}
public int countMembers(Group group) { public int countMembers(Group group) {
Number count = dbInstance.getCurrentEntityManager() Number count = dbInstance.getCurrentEntityManager()
.createNamedQuery("countMembersByGroup", Number.class) .createNamedQuery("countMembersByGroup", Number.class)
......
...@@ -150,8 +150,8 @@ public class GroupMembershipImpl implements GroupMembership, ModifiedInfo, Persi ...@@ -150,8 +150,8 @@ public class GroupMembershipImpl implements GroupMembership, ModifiedInfo, Persi
if (this == obj) { if (this == obj) {
return true; return true;
} }
if (obj instanceof GroupImpl) { if (obj instanceof GroupMembershipImpl) {
GroupImpl other = (GroupImpl) obj; GroupMembershipImpl other = (GroupMembershipImpl)obj;
return getKey().equals(other.getKey()); return getKey().equals(other.getKey());
} }
return false; return false;
......
...@@ -202,7 +202,7 @@ public class EditMembershipController extends FormBasicController { ...@@ -202,7 +202,7 @@ public class EditMembershipController extends FormBasicController {
private MultipleSelectionElement createSelection(boolean selected, boolean enabled) { private MultipleSelectionElement createSelection(boolean selected, boolean enabled) {
String name = "cb" + UUID.randomUUID().toString().replace("-", ""); String name = "cb" + UUID.randomUUID().toString().replace("-", "");
MultipleSelectionElement selection = new MultipleSelectionElementImpl(name, Layout.vertical); MultipleSelectionElement selection = new MultipleSelectionElementImpl(name, Layout.horizontal);
selection.setKeysAndValues(keys, values); selection.setKeysAndValues(keys, values);
flc.add(name, selection); flc.add(name, selection);
selection.select(keys[0], selected); selection.select(keys[0], selected);
......
...@@ -289,6 +289,7 @@ ...@@ -289,6 +289,7 @@
<constructor-arg index="0" ref="deletionModule" /> <constructor-arg index="0" ref="deletionModule" />
<property name="baseSecurityManager" ref="baseSecurityManager" /> <property name="baseSecurityManager" ref="baseSecurityManager" />
<property name="mailManager" ref="mailManager"/> <property name="mailManager" ref="mailManager"/>
<property name="groupDao" ref="groupDao"/>
<property name="keepUserLoginAfterDeletion" value="${keepUserLoginAfterDeletion}" /> <property name="keepUserLoginAfterDeletion" value="${keepUserLoginAfterDeletion}" />
<property name="keepUserEmailAfterDeletion" value="${keepUserEmailAfterDeletion}" /> <property name="keepUserEmailAfterDeletion" value="${keepUserEmailAfterDeletion}" />
</bean> </bean>
......
...@@ -223,7 +223,7 @@ public class GroupDAOTest extends OlatTestCase { ...@@ -223,7 +223,7 @@ public class GroupDAOTest extends OlatTestCase {
} }
@Test @Test
public void removeMemberships() { public void removeMemberships_group() {
Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-7-"); Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-7-");
Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-8-"); Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-8-");
Group group = groupDao.createGroup(); Group group = groupDao.createGroup();
...@@ -246,6 +246,42 @@ public class GroupDAOTest extends OlatTestCase { ...@@ -246,6 +246,42 @@ public class GroupDAOTest extends OlatTestCase {
Assert.assertTrue(deletedMemberships.isEmpty()); Assert.assertTrue(deletedMemberships.isEmpty());
} }
@Test
public void removeMemberships_identity() {
//
Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-9-");
Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-10-");
Group group1 = groupDao.createGroup();
GroupMembership membership1 = groupDao.addMembership(group1, id1, "pilot");
GroupMembership membership2 = groupDao.addMembership(group1, id2, "pilot");
Assert.assertNotNull(membership1);
Assert.assertNotNull(membership2);
dbInstance.commitAndCloseSession();
Group group2 = groupDao.createGroup();
GroupMembership membership3 = groupDao.addMembership(group2, id1, "passanger");
GroupMembership membership4 = groupDao.addMembership(group2, id2, "passanger");
Assert.assertNotNull(membership3);
Assert.assertNotNull(membership4);
dbInstance.commitAndCloseSession();
//check
List<GroupMembership> memberships = groupDao.getMemberships(group1, "pilot");
Assert.assertEquals(2, memberships.size());
//remove
groupDao.removeMemberships(id1);
dbInstance.commitAndCloseSession();
//check
List<GroupMembership> deletedMemberships1 = groupDao.getMemberships(group1, "pilot");
Assert.assertEquals(1, deletedMemberships1.size());
Assert.assertEquals(membership2, deletedMemberships1.get(0));
List<GroupMembership> deletedMemberships2 = groupDao.getMemberships(group2, "passanger");
Assert.assertEquals(1, deletedMemberships2.size());
Assert.assertEquals(membership4, deletedMemberships2.get(0));
}
@Test @Test
public void addGrant() { public void addGrant() {
Group group = groupDao.createGroup(); Group group = groupDao.createGroup();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment