X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/9fa2baa127ef53fca03011ce2295e9306c40a306..ad865412e1d18480a242f20b48043f27a20f0a94:/MemberDataTool.py

diff --git a/MemberDataTool.py b/MemberDataTool.py
index 4eea631..c83ff49 100755
--- a/MemberDataTool.py
+++ b/MemberDataTool.py
@@ -32,12 +32,15 @@ from Products.CMFCore.MemberDataTool import MemberDataTool as BaseTool
 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
 
@@ -107,36 +110,18 @@ class MemberAdapter(BaseMemberAdapter, SimpleItem, DynamicType, CMFCatalogAware)
 	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"""
@@ -144,11 +129,84 @@ class MemberData (BaseData, DynamicType, CMFCatalogAware):
 		# 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) :
@@ -171,35 +229,38 @@ class MemberData (BaseData, DynamicType, CMFCatalogAware):
 #		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)