diff --git a/product/ERP5Security/ERP5UserManager.py b/product/ERP5Security/ERP5UserManager.py
index bb8f9077e40ac4e1df844841b4e251d7ec5ee6fa..649d933861edd00032617b513a042e868b208967 100644
--- a/product/ERP5Security/ERP5UserManager.py
+++ b/product/ERP5Security/ERP5UserManager.py
@@ -192,6 +192,10 @@ class ERP5UserManager(BasePlugin):
         def _getUserByLogin(login, exact_match):
           # because we aren't logged in, we have to create our own
           # SecurityManager to be able to access the Catalog
+          if isinstance(login, list):
+            login = tuple(login)
+          elif not isinstance(login, tuple):
+            login = (str(login),)
           sm = getSecurityManager()
           if sm.getUser().getId() != SUPER_USER:
             newSecurityManager(self, self.getUser(SUPER_USER))
diff --git a/product/ERP5Security/tests/testERP5Security.py b/product/ERP5Security/tests/testERP5Security.py
index 0ab6ff23d4fb983964d08c36a46fa5cafa6dcbba..5b20d50b908bd70fe703e64dcd88343ab1af2427 100644
--- a/product/ERP5Security/tests/testERP5Security.py
+++ b/product/ERP5Security/tests/testERP5Security.py
@@ -405,6 +405,40 @@ class TestLocalRoleManagement(ERP5TypeTestCase):
             getSecurityManager().getUser().getRolesInContext(module))
     self.failIf('Assignor' in
             getSecurityManager().getUser().getRolesInContext(obj))
+
+  def testGetUserByLogin(self):
+    """Test getUserByLogin method
+    """
+    self.loginAsUser(self.username)
+
+    # getUserByLogin accept login as a string
+    self.portal.portal_caches.clearAllCache()
+    get_transaction().commit()
+    person_list = self.portal.acl_users.erp5_users.getUserByLogin(self.username)
+    self.assertEquals(1, len(person_list))
+    self.assertEquals(self.username, person_list[0].getReference())
+
+    # getUserByLogin accept login as a list
+    self.portal.portal_caches.clearAllCache()
+    get_transaction().commit()
+    person_list = self.portal.acl_users.erp5_users.getUserByLogin([self.username])
+    self.assertEquals(1, len(person_list))
+    self.assertEquals(self.username, person_list[0].getReference())
+
+    # getUserByLogin accept login as a tuple
+    self.portal.portal_caches.clearAllCache()
+    get_transaction().commit()
+    person_list = self.portal.acl_users.erp5_users.getUserByLogin((self.username,))
+    self.assertEquals(1, len(person_list))
+    self.assertEquals(self.username, person_list[0].getReference())
+
+    # PreferenceTool pass a user as parameter
+    user = getSecurityManager().getUser()
+    self.portal.portal_caches.clearAllCache()
+    get_transaction().commit()
+    person_list = self.portal.acl_users.erp5_users.getUserByLogin(user)
+    self.assertEquals(1, len(person_list))
+    self.assertEquals(self.username, person_list[0].getReference())
     
 def test_suite():
   suite = unittest.TestSuite()