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

OO-809: better case handling by import of users in group (patch 2 of S. Clemenz)

parent f268712e
No related branches found
No related tags found
No related merge requests found
...@@ -44,7 +44,6 @@ import org.olat.core.gui.control.generic.wizard.StepsRunContext; ...@@ -44,7 +44,6 @@ import org.olat.core.gui.control.generic.wizard.StepsRunContext;
import org.olat.core.gui.translator.Translator; import org.olat.core.gui.translator.Translator;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.UserConstants; import org.olat.core.id.UserConstants;
import org.olat.core.util.mail.MailHelper;
import org.olat.user.UserManager; import org.olat.user.UserManager;
import org.olat.user.propertyhandlers.UserPropertyHandler; import org.olat.user.propertyhandlers.UserPropertyHandler;
...@@ -93,7 +92,7 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr ...@@ -93,7 +92,7 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr
warnLayout.setRootForm(mainForm); warnLayout.setRootForm(mainForm);
formLayout.add(warnLayout); formLayout.add(warnLayout);
StringBuffer sb = new StringBuffer(); StringBuilder sb = new StringBuilder();
for(String notfound:notfounds) { for(String notfound:notfounds) {
if(sb.length() > 0) sb.append(", "); if(sb.length() > 0) sb.append(", ");
sb.append(notfound); sb.append(notfound);
...@@ -160,45 +159,43 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr ...@@ -160,45 +159,43 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr
} }
} }
//search by names //search by institutionalUserIdentifier, case sensitive
List<Identity> identities = securityManager.findIdentitiesByName(identList); List<Identity> institutIdentities = securityManager.findIdentitiesByNumber(identList);
for(Identity identity:identities) { for(Identity identity:institutIdentities) {
identList.remove(identity.getName()); String userIdent = identity.getUser().getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null);
if(userIdent != null) {
identList.remove(userIdent);
}
if (!PersistenceHelper.containsPersistable(oks, identity) if (!PersistenceHelper.containsPersistable(oks, identity)
&& !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) { && !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) {
oks.add(identity); oks.add(identity);
} }
} }
// make a lowercase copy of identList for processing username and email
//search by email List<String> identListLowercase = new ArrayList<String>(identList.size());
List<String> emails = new ArrayList<String>(); for (String ident:identList) {
for(String ident:identList) { identListLowercase.add(ident.toLowerCase());
if(MailHelper.isValidEmailAddress(ident)) { }
emails.add(ident); //search by names, must be lower case
List<Identity> identities = securityManager.findIdentitiesByName(identListLowercase);
for(Identity identity:identities) {
identListLowercase.remove(identity.getName());
if (!PersistenceHelper.containsPersistable(oks, identity)
&& !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) {
oks.add(identity);
} }
} }
List<Identity> mailIdentities = userManager.findIdentitiesByEmail(emails);
//search by email, case insensitive
List<Identity> mailIdentities = userManager.findIdentitiesByEmail(identListLowercase);
for(Identity identity:mailIdentities) { for(Identity identity:mailIdentities) {
String email = identity.getUser().getProperty(UserConstants.EMAIL, null); String email = identity.getUser().getProperty(UserConstants.EMAIL, null);
if(email != null) { if(email != null) {
identList.remove(email); identListLowercase.remove(email.toLowerCase());
} }
String institutEmail = identity.getUser().getProperty(UserConstants.INSTITUTIONALEMAIL, null); String institutEmail = identity.getUser().getProperty(UserConstants.INSTITUTIONALEMAIL, null);
if(institutEmail != null) { if(institutEmail != null) {
identList.remove(institutEmail); identListLowercase.remove(institutEmail.toLowerCase());
}
if (!PersistenceHelper.containsPersistable(oks, identity)
&& !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) {
oks.add(identity);
}
}
//search by institutionalUserIdentifier
List<Identity> institutIdentities = securityManager.findIdentitiesByNumber(identList);
for(Identity identity:institutIdentities) {
String userIdent = identity.getUser().getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null);
if(userIdent != null) {
identList.remove(userIdent);
} }
if (!PersistenceHelper.containsPersistable(oks, identity) if (!PersistenceHelper.containsPersistable(oks, identity)
&& !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) { && !securityManager.isIdentityInSecurityGroup(identity, anonymousSecGroup)) {
...@@ -206,7 +203,7 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr ...@@ -206,7 +203,7 @@ public class ImportMemberOverviewIdentitiesController extends StepFormBasicContr
} }
} }
notfounds.addAll(identList); notfounds.addAll(identListLowercase);
} }
public boolean validate() { public boolean validate() {
......
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