from Products.CMFCore.MemberDataTool import MemberData as BaseData
from Products.CMFCore.MemberDataTool import MemberAdapter as BaseMemberAdapter
from zope.component import adapts
+from zope.component import getUtility
from zope.interface import implements
from Products.CMFCore.interfaces import IMember
+from Products.CMFCore.interfaces import IRegistrationTool
# from Products.CMFCore.MemberDataTool import CleanupTemp
-from Products.CMFCore.utils import getToolByName
+#from Products.CMFCore.utils import getToolByName
from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
from Products.CMFCore.DynamicType import DynamicType
+from Products.CMFCore.exceptions import BadRequest
from utils import formatFullName
from permissions import SetMemberProperties, SetMemberPassword
def setMemberProperties(self, mapping):
super(MemberAdapter, self).setMemberProperties(mapping)
self.reindexObject()
-
-
-InitializeClass(MemberAdapter)
-
-
-class MemberData (BaseData, DynamicType, CMFCatalogAware):
-
-## __implements__ = IMemberData
-
- portal_type = 'Member Data'
-
- security = ClassSecurityInfo()
security.declareProtected(SetMemberPassword, 'setMemberPassword')
def setMemberPassword(self, password, domains=None) :
""" set member password """
- registration = getToolByName(self, 'portal_registration', None)
- if registration:
- failMessage = registration.testPasswordValidity(password)
- if failMessage is not None:
- raise 'Bad Request', failMessage
-
- user_folder = self.acl_users
+ registration = getUtility(IRegistrationTool)
+ failMessage = registration.testPasswordValidity(password)
+ if failMessage is not None :
+ raise BadRequest(failMessage)
+
self.setSecurityProfile(password=password, domains=domains)
- if user_folder.meta_type == 'Group User Folder' :
- self.changePassword(password)
-
-
- #XXX restore the previous implementation for GRUF 2 I'll remove that later...
+
security.declarePrivate('setSecurityProfile')
def setSecurityProfile(self, password=None, roles=None, domains=None):
"""Set the user's basic security profile"""
# This is really hackish. The Zope User API needs methods
# for performing these functions.
if password is not None:
- u.__ = password
+ u.setPassword(password)
if roles is not None:
- u.roles = roles
+ u.setRoles(roles)
if domains is not None:
- u.domains = domains
+ u.setDomains(domains)
+
+ security.declarePrivate('manage_beforeDelete')
+ def manage_beforeDelete(self) :
+ """ uncatalog object """
+ self.unindexObject()
+
+ def _setPortalTypeName(self, pt) :
+ """ Static Dynamic Type ;-) """
+ pass
+
+ # user object interface
+ # overloads to make methods not publishable
+
+ def getUserName(self):
+ return super(MemberAdapter, self).getUserName()
+
+ def getId(self):
+ return super(MemberAdapter, self).getId()
+
+ def getRoles(self):
+ return self._user.aq_inner.getRoles()
+ # return super(MemberAdapter, self).getRoles()
+
+ def getRolesInContext(self, object):
+ return super(MemberAdapter, self).getRolesInContext(object)
+
+ def getDomains(self):
+ return super(MemberAdapter, self).getDomains()
+
+ def has_role(self, roles, object=None):
+ return super(MemberAdapter, self).has_role(roles, object=None)
+
+InitializeClass(MemberAdapter)
+
+
+class MemberData (BaseData, DynamicType, CMFCatalogAware):
+
+## __implements__ = IMemberData
+
+ portal_type = 'Member Data'
+
+ security = ClassSecurityInfo()
+# migré
+# security.declareProtected(SetMemberPassword, 'setMemberPassword')
+# def setMemberPassword(self, password, domains=None) :
+# """ set member password """
+#
+# registration = getToolByName(self, 'portal_registration', None)
+# if registration:
+# failMessage = registration.testPasswordValidity(password)
+# if failMessage is not None:
+# raise 'Bad Request', failMessage
+#
+# user_folder = self.acl_users
+# self.setSecurityProfile(password=password, domains=domains)
+# if user_folder.meta_type == 'Group User Folder' :
+# self.changePassword(password)
+
+
+#migré
+ #XXX restore the previous implementation for GRUF 2 I'll remove that later...
+# security.declarePrivate('setSecurityProfile')
+# def setSecurityProfile(self, password=None, roles=None, domains=None):
+# """Set the user's basic security profile"""
+# u = self.getUser()
+# # This is really hackish. The Zope User API needs methods
+# # for performing these functions.
+# if password is not None:
+# u.__ = password
+# if roles is not None:
+# u.roles = roles
+# if domains is not None:
+# u.domains = domains
# migré
# def getMemberFullName(self, nameBefore=1) :
# BaseData.setMemberProperties(self, mapping)
# self.reindexObject()
- security.declarePrivate('manage_beforeDelete')
- def manage_beforeDelete(self) :
- """ uncatalog object """
- self.unindexObject()
-
- def _setPortalTypeName(self, pt) :
- """ Static Dynamic Type ;-) """
- pass
-
- # user object interface
- # overloads to make methods not publishable
-
- def getUserName(self):
- return BaseData.getUserName(self)
-
- def getId(self):
- return BaseData.getId(self)
-
- def getRoles(self):
- return BaseData.getRoles(self)
-
- def getRolesInContext(self, object):
- return BaseData.getRolesInContext(self, object)
+# migré
+# security.declarePrivate('manage_beforeDelete')
+# def manage_beforeDelete(self) :
+# """ uncatalog object """
+# self.unindexObject()
- def getDomains(self):
- return BaseData.getDomains(self)
+# migré
+# def _setPortalTypeName(self, pt) :
+# """ Static Dynamic Type ;-) """
+# pass
- def has_role(self, roles, object=None):
- return BaseData.has_role(self, roles, object=None)
+# migré
+# # user object interface
+# # overloads to make methods not publishable
+#
+# def getUserName(self):
+# return BaseData.getUserName(self)
+#
+# def getId(self):
+# return BaseData.getId(self)
+#
+# def getRoles(self):
+# return BaseData.getRoles(self)
+#
+# def getRolesInContext(self, object):
+# return BaseData.getRolesInContext(self, object)
+#
+# def getDomains(self):
+# return BaseData.getDomains(self)
+#
+# def has_role(self, roles, object=None):
+# return BaseData.has_role(self, roles, object=None)