mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-11136, External invitation links now support non-ASCII characters in usernames.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32392 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -39,7 +39,6 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.action.executer.MailActionExecuter;
|
import org.alfresco.repo.action.executer.MailActionExecuter;
|
||||||
import org.alfresco.repo.admin.SysAdminParams;
|
|
||||||
import org.alfresco.repo.i18n.MessageService;
|
import org.alfresco.repo.i18n.MessageService;
|
||||||
import org.alfresco.repo.model.Repository;
|
import org.alfresco.repo.model.Repository;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
@@ -92,7 +91,7 @@ public class InviteSender
|
|||||||
private final Repository repository;
|
private final Repository repository;
|
||||||
private final MessageService messageService;
|
private final MessageService messageService;
|
||||||
private final FileFolderService fileFolderService;
|
private final FileFolderService fileFolderService;
|
||||||
private final SysAdminParams sysAdminParams;
|
// private final SysAdminParams sysAdminParams;
|
||||||
private final RepoAdminService repoAdminService;
|
private final RepoAdminService repoAdminService;
|
||||||
private final NamespaceService namespaceService;
|
private final NamespaceService namespaceService;
|
||||||
|
|
||||||
@@ -104,7 +103,7 @@ public class InviteSender
|
|||||||
this.searchService = services.getSearchService();
|
this.searchService = services.getSearchService();
|
||||||
this.siteService = services.getSiteService();
|
this.siteService = services.getSiteService();
|
||||||
this.fileFolderService = services.getFileFolderService();
|
this.fileFolderService = services.getFileFolderService();
|
||||||
this.sysAdminParams = services.getSysAdminParams();
|
// this.sysAdminParams = services.getSysAdminParams();
|
||||||
this.repoAdminService = services.getRepoAdminService();
|
this.repoAdminService = services.getRepoAdminService();
|
||||||
this.namespaceService = services.getNamespaceService();
|
this.namespaceService = services.getNamespaceService();
|
||||||
this.repository = repository;
|
this.repository = repository;
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.repo.security.authentication;
|
package org.alfresco.repo.security.authentication;
|
||||||
|
|
||||||
|
import java.text.Normalizer;
|
||||||
|
|
||||||
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,8 +81,8 @@ public class NameBasedUserNameGenerator implements UserNameGenerator
|
|||||||
|
|
||||||
userName = pattern
|
userName = pattern
|
||||||
.replace("%i%", initial)
|
.replace("%i%", initial)
|
||||||
.replace("%firstName%", firstName.toLowerCase())
|
.replace("%firstName%", cleanseName(firstName))
|
||||||
.replace("%lastName%", lastName.toLowerCase())
|
.replace("%lastName%", cleanseName(lastName))
|
||||||
.replace("%emailAddress%", emailAddress.toLowerCase());
|
.replace("%emailAddress%", emailAddress.toLowerCase());
|
||||||
|
|
||||||
if(seed > 0)
|
if(seed > 0)
|
||||||
@@ -98,4 +100,13 @@ public class NameBasedUserNameGenerator implements UserNameGenerator
|
|||||||
|
|
||||||
return userName;
|
return userName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String cleanseName(String name)
|
||||||
|
{
|
||||||
|
// Replace whitespace with _
|
||||||
|
String result= name.trim().toLowerCase().replaceAll("\\s+", "_");
|
||||||
|
|
||||||
|
// Remove accents from characters and strips out non-alphanumeric chars.
|
||||||
|
return Normalizer.normalize(result, Normalizer.Form.NFD).replaceAll("[^a-zA-z0-9_]+", "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -44,7 +44,7 @@ public class NameBasedUserNameGeneratorTest extends TestCase
|
|||||||
// should generate buffy_summers@sunnydale.com
|
// should generate buffy_summers@sunnydale.com
|
||||||
generator.setNamePattern("%emailAddress%");
|
generator.setNamePattern("%emailAddress%");
|
||||||
userName = generator.generateUserName(firstName, lastName, emailAddress, 0);
|
userName = generator.generateUserName(firstName, lastName, emailAddress, 0);
|
||||||
assertEquals("", (emailAddress).toLowerCase(), userName);
|
assertEquals(emailAddress.toLowerCase(), userName);
|
||||||
|
|
||||||
// should generate buffy_s123
|
// should generate buffy_s123
|
||||||
userName = generator.generateUserName(firstName, lastName, emailAddress, 1);
|
userName = generator.generateUserName(firstName, lastName, emailAddress, 1);
|
||||||
@@ -62,4 +62,28 @@ public class NameBasedUserNameGeneratorTest extends TestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGenerateWhitespaceNames() throws Exception
|
||||||
|
{
|
||||||
|
NameBasedUserNameGenerator generator = new NameBasedUserNameGenerator();
|
||||||
|
generator.setUserNameLength(10);
|
||||||
|
generator.setNamePattern("%firstName%_%lastName%");
|
||||||
|
String lastName = "bar";
|
||||||
|
assertEquals("f_oo_bar", generator.generateUserName(" f oo ", lastName, "", 0));
|
||||||
|
assertEquals("f_o_o_bar", generator.generateUserName("f o o", lastName, "", 0));
|
||||||
|
assertEquals("f_o_o_bar", generator.generateUserName("f\to\t o", lastName, "", 0));
|
||||||
|
assertEquals("f_o_o_bar", generator.generateUserName("f\no \no", lastName, "", 0));
|
||||||
|
assertEquals("f_o_o_bar", generator.generateUserName("f\ro\r\no", lastName, "", 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAccentedCharsInNames() throws Exception
|
||||||
|
{
|
||||||
|
NameBasedUserNameGenerator generator = new NameBasedUserNameGenerator();
|
||||||
|
generator.setUserNameLength(10);
|
||||||
|
generator.setNamePattern("%firstName%_%lastName%");
|
||||||
|
String firstName = "Çüéâäà çêëèï";
|
||||||
|
String lastName = "îìÄÅÉæÆô öòû";
|
||||||
|
|
||||||
|
String username = generator.generateUserName(firstName, lastName, "", 0);
|
||||||
|
assertEquals("cueaaa_ceeei_iiaaeo_oou", username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user