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

OO-2077: delete the user properties and change the default for institutional number

parent dde0ee76
No related branches found
No related tags found
No related merge requests found
......@@ -297,8 +297,6 @@ public class UserDeletionManager extends BasicManager {
logInfo("UserDataDeletable-Loop element=" + element);
element.deleteUserData(identity, newName);
}
logInfo("deleteUserProperties user=" + identity.getUser());
UserManager.getInstance().deleteUserProperties(identity.getUser());
// Delete all authentications for certain identity
List<Authentication> authentications = securityManager.getAuthentications(identity);
for (Iterator<Authentication> iter = authentications.iterator(); iter.hasNext();) {
......@@ -344,8 +342,12 @@ public class UserDeletionManager extends BasicManager {
}
}
logInfo("deleteUserProperties user=" + identity.getUser());
UserManager.getInstance().deleteUserProperties(identity.getUser(), keepUserEmailAfterDeletion);
DBFactory.getInstance().commit();
identity = securityManager.loadIdentityByKey(identity.getKey());
//keep email only -> change login-name
if (!keepUserLoginAfterDeletion){
if (!keepUserEmailAfterDeletion) {
identity = securityManager.saveIdentityName(identity, newName, null);
}
......
......@@ -198,7 +198,7 @@ public abstract class UserManager extends BasicManager {
* Delete all user-properties which are deletable.
* @param user
*/
public abstract void deleteUserProperties(User user);
public abstract User deleteUserProperties(User user, boolean keepUserEmail);
public List<UserPropertyHandler> getUserPropertyHandlersFor(String usageIdentifyer, boolean isAdministrativeUser) {
return userPropertiesConfig.getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
......
......@@ -420,7 +420,7 @@ public class UserManagerImpl extends UserManager {
* @param user
*/
@Override
public void deleteUserProperties(User user) {
public User deleteUserProperties(User user, boolean keepUserEmail) {
// prevent stale objects, reload first
user = loadUserByKey(user.getKey());
// loop over user fields and remove them form the database if they are
......@@ -428,13 +428,15 @@ public class UserManagerImpl extends UserManager {
List<UserPropertyHandler> propertyHandlers = userPropertiesConfig.getAllUserPropertyHandlers();
for (UserPropertyHandler propertyHandler : propertyHandlers) {
String fieldName = propertyHandler.getName();
if (propertyHandler.isDeletable()) {
if (propertyHandler.isDeletable()
&& !(keepUserEmail && UserConstants.EMAIL.equals(propertyHandler.getName()))) {
user.setProperty(fieldName, null);
}
}
// persist changes
updateUser(user);
User updatedUser = updateUser(user);
if(isLogDebugEnabled()) logDebug("Delete all user-attributtes for user=" + user);
return updatedUser;
}
@Override
......
......@@ -151,7 +151,7 @@
<bean id="userPropertyInstitutionalUserIdentifier" class="org.olat.user.propertyhandlers.Generic127CharTextPropertyHandler">
<property name="name" value="institutionalUserIdentifier" />
<property name="group" value="institute" />
<property name="deletable" value="false" />
<property name="deletable" value="true" />
</bean>
<bean id="userPropertyInstitutionalEmail" class="org.olat.user.propertyhandlers.EmailProperty">
......
......@@ -31,15 +31,19 @@ import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Test;
import org.olat.basesecurity.BaseSecurity;
import org.olat.basesecurity.BaseSecurityModule;
import org.olat.core.commons.persistence.DB;
import org.olat.core.commons.persistence.DBFactory;
import org.olat.core.id.Identity;
import org.olat.core.id.User;
import org.olat.core.id.UserConstants;
import org.olat.group.BusinessGroup;
import org.olat.group.BusinessGroupService;
import org.olat.portfolio.manager.EPFrontendManager;
......@@ -50,6 +54,7 @@ import org.olat.portfolio.model.structel.PortfolioStructure;
import org.olat.portfolio.model.structel.PortfolioStructureMap;
import org.olat.test.JunitTestHelper;
import org.olat.test.OlatTestCase;
import org.olat.user.UserManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
......@@ -62,6 +67,8 @@ public class UserDeletionManagerTest extends OlatTestCase {
@Autowired
private DB dbInstance;
@Autowired
private UserManager userManager;
@Autowired
private BaseSecurity securityManager;
@Autowired
private EPFrontendManager epFrontendManager;
......@@ -74,8 +81,14 @@ public class UserDeletionManagerTest extends OlatTestCase {
@Test
public void testDeleteIdentity() {
Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("anIdentityToDelete");
dbInstance.commit();
String username = "id-to-del-" + UUID.randomUUID();
User user = userManager.createUser("first" + username, "last" + username, username + "@frentix.com");
user.setProperty(UserConstants.COUNTRY, "");
user.setProperty(UserConstants.CITY, "Basel");
user.setProperty(UserConstants.INSTITUTIONALNAME, "Del-23");
user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "Del-24");
Identity identity = securityManager.createAndPersistIdentityAndUser(username, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret");
dbInstance.commitAndCloseSession();
// add some stuff
//a default map
......@@ -116,6 +129,10 @@ public class UserDeletionManagerTest extends OlatTestCase {
//check membership of group
boolean isMember = businessGroupService.isIdentityInBusinessGroup(deletedIdentity, group);
Assert.assertFalse(isMember);
User deletedUser = deletedIdentity.getUser();
Assert.assertEquals("", deletedUser.getProperty(UserConstants.INSTITUTIONALNAME, null));
Assert.assertEquals("", deletedUser.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null));
}
@Test
......
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