Author: rob
Date: 2007-07-31 21:12:29 -0400 (Tue, 31 Jul 2007)
New Revision: 7920
Modified:
opencore/trunk/Products/OpenPlans/Extensions/Install.py
opencore/trunk/opencore/content/member.py
opencore/trunk/opencore/nui/setup.py
Log:
* override verifyCredentials on the member object to support case insensitive
authentication
Modified: opencore/trunk/Products/OpenPlans/Extensions/Install.py
===================================================================
--- opencore/trunk/Products/OpenPlans/Extensions/Install.py 2007-07-31
23:54:55 UTC (rev 7919)
+++ opencore/trunk/Products/OpenPlans/Extensions/Install.py 2007-08-01
01:12:29 UTC (rev 7920)
@@ -17,6 +17,7 @@
from Products.Archetypes.public import listTypes
from Products.Archetypes.config import REFERENCE_CATALOG
from Products.Archetypes.Extensions.utils import installTypes#, install_subskin
+from Products.membrane.config import TOOLNAME as MBTOOLNAME
from Products.remember.Extensions.workflow import addWorkflowScripts
from Products.remember.utils import getAdderUtility
from Products.CMFPlacefulWorkflow.PlacefulWorkflowTool import \
@@ -371,7 +372,7 @@
if mtype not in allowed:
allowed += (mtype,)
mdc_fti.allowed_content_types = allowed
- mbtool = getToolByName(portal, 'membrane_tool')
+ mbtool = getToolByName(portal, MBTOOLNAME)
mbtool.registerMembraneType(mtype)
print >> out, '-> specifying %s as default member type' % mtype
@@ -389,6 +390,10 @@
print >> out, '-> allow users to choose their own password'
portal.manage_changeProperties(validate_email=0)
+def setCaseInsensitiveLogins(portal, out):
+ mbtool = getToolByName(portal, MBTOOLNAME)
+ mbtool.case_sensitive_auth = False
+
def setTeamType(portal, out):
tmtool = getToolByName(portal, 'portal_teams')
teamtype = OpenTeam.portal_type
@@ -692,6 +697,7 @@
securityTweaks(portal, out)
uiTweaks(portal, out)
setMemberType(portal, out)
+ setCaseInsensitiveLogins(portal, out)
setTeamType(portal, out)
addProjectsFolder(portal, out)
setProjectFolderPermissions(portal, out)
Modified: opencore/trunk/opencore/content/member.py
===================================================================
--- opencore/trunk/opencore/content/member.py 2007-07-31 23:54:55 UTC (rev
7919)
+++ opencore/trunk/opencore/content/member.py 2007-08-01 01:12:29 UTC (rev
7920)
@@ -1,20 +1,25 @@
+import re
+from types import TupleType, ListType, UnicodeType
+
from AccessControl import ClassSecurityInfo
+from zope.component import getAdapter
+
from Products.CMFCore.utils import getToolByName
from Products.CMFCore.CMFCorePermissions import *
-
import Products.Archetypes.public as atapi
from Products.Archetypes.ExtensibleMetadata import ExtensibleMetadata
from Products.Archetypes.ArchetypeTool import base_factory_type_information as
bfti
-
-from types import TupleType, ListType, UnicodeType
from Products.Archetypes.Field import STRING_TYPES
+from Products.Archetypes.public import Schema, StringField, StringWidget
from Products.validation.validators.BaseValidators import EMAIL_RE
+from Products.membrane.config import TOOLNAME as MBTOOLNAME
from Products.remember.content.member_schema \
import id_schema, contact_schema, plone_schema, \
security_schema, login_info_schema
from Products.remember.content.member import FolderishMember
+from Products.remember.interfaces import IHashPW
from Products.remember.config import ALLOWED_MEMBER_ID_PATTERN
from Products.TeamSpace.security import TeamSecurity
@@ -22,10 +27,6 @@
from Products.OpenPlans.config import PROJECTNAME
from Products.OpenPlans.config import PROHIBITED_MEMBER_PREFIXES
-from Products.Archetypes.public import Schema, StringField, StringWidget
-import re
-
-
member_schema = id_schema + contact_schema + plone_schema + \
security_schema + login_info_schema
content_schema = member_schema.copy() # copy before editing
@@ -183,7 +184,8 @@
security.declareProtected(ManagePortal, 'getUserConfirmationCode')
def getUserConfirmationCode(self):
"""
- Return the user's unique confirmation code to complete registration
manually
+ Return the user's unique confirmation code to complete
+ registration manually
"""
return self.UID()
@@ -337,5 +339,29 @@
return FolderishMember.__bobo_traverse__(self, REQUEST, name)
+ def verifyCredentials(self, credentials):
+ """
+ We override the base member's verifyCredentials method to be
+ able to support case insensitive login.
+ """
+ mbtool = getToolByName(self, MBTOOLNAME)
+ login = credentials.get('login')
+ if not mbtool.case_sensitive_auth:
+ login = login.lower()
+ password = credentials.get('password')
+ try:
+ hash_type, hashed = self.getPassword().split(':', 1)
+ except ValueError:
+ raise ValueError('Error parsing hash type. '
+ 'Please run migration')
+ hasher = getAdapter(self, IHashPW, hash_type)
+ username = self.getUserName()
+ if not mbtool.case_sensitive_auth:
+ username = username.lower()
+ if login == username and hasher.validate(hashed, password):
+ return True
+ else:
+ return False
+
atapi.registerType(OpenMember, package=PROJECTNAME)
Modified: opencore/trunk/opencore/nui/setup.py
===================================================================
--- opencore/trunk/opencore/nui/setup.py 2007-07-31 23:54:55 UTC (rev
7919)
+++ opencore/trunk/opencore/nui/setup.py 2007-08-01 01:12:29 UTC (rev
7920)
@@ -19,6 +19,7 @@
from Products.OpenPlans.Extensions.Install import createMemIndexes, \
installColumns, createValidationMember, \
install_local_transient_message_utility, install_email_invites_utility
+from Products.OpenPlans.Extensions.Install import setCaseInsensitiveLogins
from Products.OpenPlans.Extensions.utils import reinstallSubskins
from Products.OpenPlans import config as op_config
from indexing import createIndexes
@@ -206,6 +207,7 @@
nui_functions['Migrate memberships to new workflow'] =
migrate_mship_workflow_states
nui_functions['Update team active states'] = update_team_active_states
nui_functions['Add made_active_date attribute to memberships'] =
migrate_mships_made_active_date
+nui_functions['Set case insensitive logins'] =
convertFunc(setCaseInsensitiveLogins)
def run_nui_setup(portal):
pm = portal.portal_migration
--
Archive:
http://www.openplans.org/projects/opencore/lists/openplans-svn/archive/2007/07/1185930751829
To unsubscribe send an email with subject unsubscribe to [EMAIL PROTECTED]
Please contact [EMAIL PROTECTED] for questions.