CVS: Products/PluggableAuthService - PluggableAuthService.py:1.30

Zachery Bir <[email protected]>
Newsgroups gmane.comp.web.zope.public-cvs
Message-ID <[email protected]>
Update of /cvs-repository/Products/PluggableAuthService
In directory cvs.zope.org:/tmp/cvs-serv14876

Modified Files:
	PluggableAuthService.py 
Log Message:
merging zbir_fixing_ids_branch to the head


=== Products/PluggableAuthService/PluggableAuthService.py 1.29 => 1.30 ===
--- Products/PluggableAuthService/PluggableAuthService.py:1.29	Mon Jan 31 15:01:25 2005
+++ Products/PluggableAuthService/PluggableAuthService.py	Fri May 27 14:55:44 2005
@@ -84,9 +84,6 @@
                                  , ValueError
                                  )
 
-security.declarePublic( 'MANGLE_DELIMITER' )
-MANGLE_DELIMITER = '__'
-
 MultiPlugins = []
 def registerMultiPlugin(meta_type):
     """ Register a 'multi-plugin' in order to expose it to the Add List
@@ -202,26 +199,7 @@
         user_id = None
         login = None
 
-        try:
-            plugin_id, principal_id = self._unmangleId( id )
-        except ValueError:
-            user_id = self._verifyUser( plugins, user_id=id )
-        else:
-            plugin = getattr( self, plugin_id, None )
-
-            if plugin is not None:
-                try:
-                    user_info = plugin.enumerateUsers( id=principal_id
-                                                     , exact_match=True )
-                    assert( len( user_info ) in [ 0, 1 ] )
-                except _SWALLOWABLE_PLUGIN_EXCEPTIONS:
-                    LOG('PluggableAuthService', BLATHER,
-                        'UserEnumerationPlugin %s error' % plugin_id,
-                        error=sys.exc_info())
-                else:
-                    if user_info:
-                        user_id = id
-                        login = user_info[0].get( 'login' )
+        user_id = self._verifyUser( plugins, user_id=id )
 
         if not user_id:
             return default
@@ -286,36 +264,9 @@
     def searchUsers(self, **kw):
         """ Search for users
         """
-        exact_match = kw.get( 'exact_match', False )
         search_id = kw.get( 'id', None )
         search_name = kw.get( 'name', None )
 
-        if exact_match and search_id:
-            plugin_id, principal_id = self._unmangleId( search_id )
-            plugin = getattr( self, plugin_id, None )
-            if plugin is not None:
-                try:
-                    user_info = plugin.enumerateUsers( id=principal_id
-                                                     , exact_match=True )
-                    assert( len( user_info ) in [ 0, 1 ] )
-                    if user_info:
-                        user_info = user_info[ 0 ]
-                        info = {}
-                        info.update( user_info )
-                        info[ 'userid' ] = principal_id
-                        info[ 'id' ] = self._computeMangledId( user_info )
-                        info[ 'principal_type' ] = 'user'
-                        if not info.has_key('title'):
-                            info[ 'title' ] = info[ 'login' ]
-                        return ( info, )
-                    else:
-                        return ()
-                except _SWALLOWABLE_PLUGIN_EXCEPTIONS:
-                    LOG('PluggableAuthService', BLATHER,
-                        'UserEnumerationPlugin %s error' % plugin_id,
-                        error=sys.exc_info())
-                    return ()
-
         result = []
         max_results = kw.get('max_results', '')
         sort_by = kw.get('sort_by', '')
@@ -341,7 +292,6 @@
                     info = {}
                     info.update( user_info )
                     info[ 'userid' ] = info[ 'id' ]
-                    info[ 'id' ] = self._computeMangledId( info )
                     info[ 'principal_type' ] = 'user'
                     if not info.has_key('title'):
                         info[ 'title' ] = info[ 'login' ]
@@ -370,36 +320,9 @@
     def searchGroups(self, **kw):
         """ Search for groups
         """
-        exact_match = kw.get( 'exact_match', False )
         search_id = kw.get( 'id', None )
         search_name = kw.get( 'name', None )
 
-        if exact_match and search_id:
-            plugin_id, principal_id = self._unmangleId( search_id )
-            plugin = getattr( self, plugin_id, None )
-            if plugin is not None:
-                try:
-                    group_info = plugin.enumerateGroups( id=principal_id
-                                                       , exact_match=True )
-                    assert( len( group_info ) in [ 0, 1 ] )
-                    if group_info:
-                        group_info = group_info[ 0 ]
-                        info = {}
-                        info.update( group_info )
-                        info[ 'groupid' ] = principal_id
-                        info[ 'id' ] = self._computeMangledId( group_info )
-                        info[ 'principal_type' ] = 'group'
-                        if not info.has_key('title'):
-                            info[ 'title' ] = "(Group) %s" % principal_id
-                        return ( info, )
-                    else:
-                        return ()
-                except _SWALLOWABLE_PLUGIN_EXCEPTIONS:
-                    LOG('PluggableAuthService', BLATHER,
-                        'GroupEnumerationPlugin %s error' % plugin_id,
-                        error=sys.exc_info())
-                    return ()
-
         result = []
         max_results = kw.get('max_results', '')
         sort_by = kw.get('sort_by', '')
@@ -426,7 +349,6 @@
                     info = {}
                     info.update( group_info )
                     info[ 'groupid' ] = info[ 'id' ]
-                    info[ 'id' ] = self._computeMangledId( info )
                     info[ 'principal_type' ] = 'group'
                     if not info.has_key('title'):
                         info[ 'title' ] = "(Group) %s" % info[ 'groupid' ]
@@ -454,7 +376,6 @@
     def searchPrincipals(self, groups_first=False, **kw):
         """ Search for principals (users, groups, or both)
         """
-        exact_match = kw.get( 'exact_match', False )
         max_results = kw.get( 'max_results', '' )
 
         search_id = kw.get( 'id', None )
@@ -464,56 +385,6 @@
                 kw['title'] = search_name
             kw['login'] = search_name
 
-        if exact_match and search_id:
-            user_info = group_info = ()
-
-            plugin_id, principal_id = self._unmangleId( search_id )
-            plugin = getattr( self, plugin_id, None )
-            if plugin is not None:
-                if getattr( aq_base( plugin ), 'enumerateUsers', None ):
-                    user_info = plugin.enumerateUsers( id=principal_id
-                                                     , exact_match=True )
-                    if user_info:
-                        local_key = 'userid'
-                        principal_type = 'user'
-                        if kw.has_key('title'):
-                            title_key = 'title'
-                        else:
-                            title_key = 'login'
-                        title_pattern = "%s"
-                if getattr( aq_base( plugin ), 'enumerateGroups', None ):
-                    group_info = plugin.enumerateGroups( id=principal_id
-                                                       , exact_match=True )
-                    if group_info:
-                        local_key = 'groupid'
-                        principal_type = 'group'
-                        if kw.has_key('title'):
-                            title_key = 'title'
-                            title_pattern = "%s"
-                        else:
-                            title_key = 'groupid'
-                            title_pattern = "(Group) %s"
-                try:
-                    principal_info = filter(None, (user_info + group_info))
-                    assert( len( principal_info ) in [ 0, 1 ] )
-                    if principal_info:
-                        principal_info = principal_info[ 0 ]
-                        info = {}
-                        info.update( principal_info )
-                        info[ local_key ] = principal_id
-                        info[ 'id' ] = self._computeMangledId( principal_info )
-                        info[ 'principal_type' ] = principal_type
-                        if not info.has_key('title'):
-                            info[ 'title' ] = title_pattern % info[ title_key ]
-                        return ( info, )
-                    else:
-                        return ()
-                except _SWALLOWABLE_PLUGIN_EXCEPTIONS:
-                    LOG('PluggableAuthService', BLATHER,
-                        'UserEnumeratePlugin %s error' % plugin_id,
-                        error=sys.exc_info())
-                    return ()
-
         users = [ d.copy() for d in self.searchUsers( **kw ) ]
         groups = [ d.copy() for d in self.searchGroups( **kw ) ]
 
@@ -707,14 +578,14 @@
                     for authenticator_id, auth in authenticators:
 
                         try:
-                            uid_and_name = auth.authenticateCredentials(
+                            uid_and_info = auth.authenticateCredentials(
                                 credentials )
 
-                            if uid_and_name is None:
+                            if uid_and_info is None:
                                 continue
 
-                            user_id, name = uid_and_name
-                            
+                            user_id, info = uid_and_info
+
                         except _SWALLOWABLE_PLUGIN_EXCEPTIONS:
                             LOG('PluggableAuthService', BLATHER,
                                 'AuthenticationPlugin %s error' %
@@ -722,9 +593,7 @@
                             continue
 
                         if user_id is not None:
-                            mangled_id = self._mangleId(authenticator_id,
-                                                        user_id)
-                            user_ids.append( (mangled_id, name) )
+                            user_ids.append( (user_id, info) )
 
                 result.extend( user_ids )
 
@@ -737,25 +606,6 @@
 
         return result
 
-    security.declarePrivate( '_unmangleId' )
-    def _unmangleId( self, mangled_id ):
-
-        return mangled_id.split( MANGLE_DELIMITER, 1 )
-
-    security.declarePrivate( '_mangleId' )
-    def _mangleId( self, namespace, id ):
-
-        return MANGLE_DELIMITER.join( ( namespace, id ) )
-
-    security.declarePrivate( '_computeMangledId' )
-    def _computeMangledId( self, info_dict ):
-
-        """ Synthesize an from info_dict.
-
-        o Mangle plugin and original id together.
-        """
-        return self._mangleId( info_dict[ 'pluginid' ], info_dict[ 'id' ] )
-
     security.declarePrivate( '_tryEmergencyUserAuthentication' )
     def _tryEmergencyUserAuthentication( self, credentials ):
 
@@ -794,17 +644,8 @@
                 continue
             groups = groupmaker.getGroupsForPrincipal( principal, request )
             for group in groups:
-                try:
-                    # We may be getting a mangled groupid already
-                    group_plugin, group_id = self._unmangleId( group )
-                except ValueError:
-                    # group id hasn't been mangled yet
-                    mangled_group = self._mangleId( groupmaker_id, group )
-                else:
-                    # group has already been mangled
-                    mangled_group = group
-                principal._addGroups( [ mangled_group ] )
-                all_groups[ mangled_group ] = 1
+                principal._addGroups( [ group ] )
+                all_groups[ group ] = 1
 
         return all_groups.keys()
 
@@ -879,8 +720,6 @@
 
                 roles = rolemaker.getRolesForPrincipal( user, request )
 
-                # Role names *can't* be mangled;  other parts of the
-                # client applications know about them!
                 if roles:
                     user._addRoles( roles )
 
@@ -928,7 +767,7 @@
                     info = enumerator.enumerateUsers( **criteria )
 
                     if info:
-                        id = self._computeMangledId( info[0] )
+                        id = info[0]['id']
                         # Put the computed value into the cache
                         self.ZCacheable_set( id
                                            , view_name=view_name

_______________________________________________
Zope-CVS maillist  -  [email protected]
http://mail.zope.org/mailman/listinfo/zope-cvs

Zope CVS instructions: http://dev.zope.org/CVS
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.