Ré-implémentation de setSecurityProfile en utilisant l'API de l'acl_users de zope.
authorBenoît Pin <benoit.pin@gmail.com>
Tue, 4 Jun 2013 22:48:15 +0000 (00:48 +0200)
committerBenoît Pin <benoit.pin@gmail.com>
Tue, 4 Jun 2013 22:48:15 +0000 (00:48 +0200)
MemberDataTool.py
MembershipTool.py

index 4a432eb..85fc4b2 100755 (executable)
@@ -40,6 +40,7 @@ from Products.CMFCore.interfaces import IRegistrationTool
 #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
 
@@ -117,10 +118,23 @@ class MemberAdapter(BaseMemberAdapter, SimpleItem, DynamicType, CMFCatalogAware)
                registration = getUtility(IRegistrationTool)
                failMessage = registration.testPasswordValidity(password)
                if failMessage is not None :
-                       raise ValueError(failMessage)
+                       raise BadRequest(failMessage)
 
                self.setSecurityProfile(password=password, domains=domains)
 
+       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.setPassword(password)
+               if roles is not None:
+                       u.setRoles(roles)
+               if domains is not None:
+                       u.setDomains(domains)
+
        security.declarePrivate('manage_beforeDelete')
        def manage_beforeDelete(self) :
                """ uncatalog object """
@@ -177,20 +191,21 @@ class MemberData (BaseData, DynamicType, CMFCatalogAware):
 #              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
+#      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) :
index d60ed39..0d7624e 100755 (executable)
@@ -77,26 +77,26 @@ class MembershipTool( BaseTool ):
        memberareaPortalType = 'Folder'
        
 
-       security.declareProtected(SetOwnPassword, 'setPassword')
-       def setPassword(self, password, domains=None):
-               '''Allows the authenticated member to set his/her own password.
-               '''
-               user_folder = self.__getPUS()
-               if user_folder.meta_type == 'Group User Folder' :
-                       registration = getToolByName(self, 'portal_registration', None)
-                       if not self.isAnonymousUser():
-                               member = self.getAuthenticatedMember()
-                               if registration:
-                                       failMessage = registration.testPasswordValidity(password)
-                                       if failMessage is not None:
-                                               raise 'Bad Request', failMessage
-                               member.setSecurityProfile(password=password, domains=domains)
-                               member.changePassword(password)
-                       else:
-                               raise 'Bad Request', 'Not logged in.'
-                       
-               else :
-                       BaseTool.setPassword(self, password, domains=None)
+#      security.declareProtected(SetOwnPassword, 'setPassword')
+#      def setPassword(self, password, domains=None):
+#              '''Allows the authenticated member to set his/her own password.
+#              '''
+#              user_folder = self.__getPUS()
+#              if user_folder.meta_type == 'Group User Folder' :
+#                      registration = getToolByName(self, 'portal_registration', None)
+#                      if not self.isAnonymousUser():
+#                              member = self.getAuthenticatedMember()
+#                              if registration:
+#                                      failMessage = registration.testPasswordValidity(password)
+#                                      if failMessage is not None:
+#                                              raise 'Bad Request', failMessage
+#                              member.setSecurityProfile(password=password, domains=domains)
+#                              member.changePassword(password)
+#                      else:
+#                              raise 'Bad Request', 'Not logged in.'
+#                      
+#              else :
+#                      BaseTool.setPassword(self, password, domains=None)