Commit 829cd9f6 authored by Vincent Pelletier's avatar Vincent Pelletier

ERP5Security.ERP5UserFactory: Extend ERP5User API.

Add methods to retrieve the user and login documents using PAS API.
parent 407ba1fa
...@@ -49,6 +49,8 @@ class ERP5User(PropertiedUser): ...@@ -49,6 +49,8 @@ class ERP5User(PropertiedUser):
""" User class that checks the object allows acquisition of local roles the """ User class that checks the object allows acquisition of local roles the
ERP5Type way. ERP5Type way.
""" """
_user_value = None
_login_value = None
def getRolesInContext( self, object ): def getRolesInContext( self, object ):
""" Return the list of roles assigned to the user. """ Return the list of roles assigned to the user.
...@@ -195,6 +197,62 @@ class ERP5User(PropertiedUser): ...@@ -195,6 +197,62 @@ class ERP5User(PropertiedUser):
return None return None
def getUserValue(self):
""" -> user document
Return the document (ex: Person) corresponding to current user.
"""
result = self._user_value
if result is not None:
return result
user_list = [x for x in self.aq_parent.searchUsers(
exact_match=True,
id=self.getId(),
) if 'path' in x]
if user_list:
user, = user_list
self._user_value = self.getPortalObject().restrictedTraverse(
user['path'],
)
return self._user_value
def getLoginValue(self):
""" -> login document
Return the document (ex: ERP5 Login) corresponding to current user's login.
"""
result = self._login_value
if result is not None:
return result
user_list = [x for x in self.aq_parent.searchUsers(
exact_match=True,
login=self.getUserName(),
) if 'login_list' in x]
if user_list:
user, = user_list
login, = user['login_list']
self._login_value = self.getPortalObject().restrictedTraverse(
login['path'],
)
return self._login_value
def getLoginValueList(self, portal_type=None, limit=None):
""" -> list of login documents
Return the list of login documents belonging to current user.
"""
user_list = [x for x in self.aq_parent.searchUsers(
exact_match=True,
id=self.getId(),
login_portal_type=portal_type,
max_results=limit,
) if 'login_list' in x]
if user_list:
user, = user_list
restrictedTraverse = self.getPortalObject().restrictedTraverse
return [restrictedTraverse(x['path']) for x in user['login_list']]
return []
InitializeClass(ERP5User) InitializeClass(ERP5User)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment