[Erp5-report] r35741 fabien - in /experimental/bt5/erp5_credential: DocumentTemplateItem/ W...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri May 28 17:33:04 CEST 2010


Author: fabien
Date: Fri May 28 17:32:57 2010
New Revision: 35741

URL: http://svn.erp5.org?rev=35741&view=rev
Log:
improve the way login avaibility is checked

Modified:
    experimental/bt5/erp5_credential/DocumentTemplateItem/CredentialRequest.py
    experimental/bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/scripts/CredentialRequest_checkLoginAvailability.xml
    experimental/bt5/erp5_credential/bt/revision

Modified: experimental/bt5/erp5_credential/DocumentTemplateItem/CredentialRequest.py
URL: http://svn.erp5.org/experimental/bt5/erp5_credential/DocumentTemplateItem/CredentialRequest.py?rev=35741&r1=35740&r2=35741&view=diff
==============================================================================
--- experimental/bt5/erp5_credential/DocumentTemplateItem/CredentialRequest.py [utf8] (original)
+++ experimental/bt5/erp5_credential/DocumentTemplateItem/CredentialRequest.py [utf8] Fri May 28 17:32:57 2010
@@ -30,6 +30,13 @@
 from Products.ERP5Type import Permissions, PropertySheet
 from Products.ERP5.Document.Ticket import Ticket
 from Products.ERP5.mixin.encrypted_password import EncryptedPasswordMixin
+from Products.CMFCore.utils import getToolByName 
+try:
+  from Products import PluggableAuthService
+  from Products.ERP5Security.ERP5UserManager import ERP5UserManager
+except ImportError:
+  PluggableAuthService = None
+
 
 class CredentialRequest(Ticket, EncryptedPasswordMixin):
     """
@@ -53,3 +60,23 @@
       # every body can change a password of a credential request as annonymous
       # should be able to do it
       pass
+
+    def isLoginAvailable(self, login):
+      """
+      Check for login avaibility, return False if the login is already used,
+      True instead
+      """
+      if login:
+        acl_users = getToolByName(self, 'acl_users')
+      if PluggableAuthService is not None and isinstance(acl_users,
+          PluggableAuthService.PluggableAuthService.PluggableAuthService):
+        plugin_list = acl_users.plugins.listPlugins(
+            PluggableAuthService.interfaces.plugins.IUserEnumerationPlugin)
+        for plugin_name, plugin_value in plugin_list:
+          if isinstance(plugin_value, ERP5UserManager):
+            user_list = acl_users.searchUsers(id=login,
+                exact_match=True)
+            if len(user_list) > 0:
+              return False
+            break
+      return True

Modified: experimental/bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/scripts/CredentialRequest_checkLoginAvailability.xml
URL: http://svn.erp5.org/experimental/bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/scripts/CredentialRequest_checkLoginAvailability.xml?rev=35741&r1=35740&r2=35741&view=diff
==============================================================================
--- experimental/bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/scripts/CredentialRequest_checkLoginAvailability.xml [utf8] (original)
+++ experimental/bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/scripts/CredentialRequest_checkLoginAvailability.xml [utf8] Fri May 28 17:32:57 2010
@@ -59,8 +59,8 @@
 subscription_request_object = state_change[\'object\']\n
 \n
 user_id = subscription_request_object.getUserId()\n
-person_module = portal.getDefaultModule(\'Person\')\n
-if len(person_module.searchFolder(reference=user_id)):\n
+\n
+if not subscription_request_object.isLoginAvailable(user_id):\n
   raise ValidationFailed, translateString(\'The login "${user_id}"\'\\\n
       \'is not available, please change it.\', mapping={\'user_id\':user_id})\n
 </string> </value>
@@ -109,8 +109,6 @@
                             <string>_getitem_</string>
                             <string>subscription_request_object</string>
                             <string>user_id</string>
-                            <string>person_module</string>
-                            <string>len</string>
                           </tuple>
                         </value>
                     </item>

Modified: experimental/bt5/erp5_credential/bt/revision
URL: http://svn.erp5.org/experimental/bt5/erp5_credential/bt/revision?rev=35741&r1=35740&r2=35741&view=diff
==============================================================================
--- experimental/bt5/erp5_credential/bt/revision [utf8] (original)
+++ experimental/bt5/erp5_credential/bt/revision [utf8] Fri May 28 17:32:57 2010
@@ -1,1 +1,1 @@
-18
+19




More information about the Erp5-report mailing list