Changeset 847

Show
Ignore:
Timestamp:
06/11/06 18:59:37 (2 years ago)
Author:
eblot
Message:

LdapPlugin:

Fix up issues introduced with full support for Unicode in Trac.
PermissionStore? may show some troubles.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ldapplugin/0.10/ldapplugin/model.py

    r492 r847  
    9595                    u = self.env.config.get('ldap', 'group_user') 
    9696                    p = self.env.config.get('ldap', 'group_passwd') 
    97                     self._ldap.set_credentials(u, p) 
     97                    self._ldap.set_credentials(u.encode('ascii'),  
     98                                               p.encode('ascii')) 
    9899 
    99100            # retrieves the user groups from LDAP 
     
    144145        self._ldap = None 
    145146        self._permattr = self.env.config.get('ldap', 'permattr', 'tracperm') 
     147        self._permattr = self._permattr.encode('ascii') 
    146148        # regular expression 
    147149        self._re = re.compile('^(.+?)=(.+?),(.+)$') 
     
    209211            self._openldap() 
    210212        perms = [] 
    211         dns = self._ldap.get_dn(self.env.config.get('ldap', 'permfilter', 
    212                                                     'objectclass=*')) 
    213         basedn = self.env.config.get('ldap','basedn','') 
     213        filter = self.env.config.get('ldap', 'permfilter', 'objectclass=*') 
     214        basedn = self.env.config.get('ldap','basedn','').encode('ascii') 
     215        grpattr = self.env.config.get('ldap', 'groupattr', 'cn').encode('ascii') 
     216        uidattr = self.env.config.get('ldap', 'uidattr', 'uid').encode('ascii') 
     217        dns = self._ldap.get_dn(filter.encode('ascii')) 
    214218        for dn in dns: 
    215219            m = self._re.search(dn) 
    216220            user = None 
    217221            if m: 
    218                 if m.group(3).lower() == basedn.lower(): 
    219                     if m.group(1).lower() == \ 
    220                       self.env.config.get('ldap', 'groupattr', 'cn')
     222                subtree = m.group(3).lower() 
     223                if subtree == self._ldap.group_basedn.lower(): 
     224                    if m.group(1).lower() == grpattr
    221225                        user = "@%s" % m.group(2) 
    222226                        dn = "%s=%s" % (m.group(1),m.group(2)) 
    223                     elif m.group(1).lower() == \ 
    224                       self.env.config.get('ldap', 'uidattr', 'uid'): 
     227                    else: 
     228                        continue 
     229                if subtree == self._ldap.user_basedn.lower(): 
     230                    if m.group(1).lower() == uidattr: 
    225231                        user = m.group(2) 
    226232                        dn = "%s=%s" % (m.group(1),m.group(2)) 
     
    245251            permlist = self._get_permissions(uid) 
    246252            if action not in permlist: 
    247                 xaction = self._build_action(action)         
     253                xaction = self._build_action(action) 
    248254                self._ldap.add_attribute(uid, self._permattr, xaction) 
    249255        except ldap.LDAPError, e: 
     
    281287            u = self.env.config.get('ldap', 'store_user') 
    282288            p = self.env.config.get('ldap', 'store_passwd') 
    283             self._ldap.set_credentials(u, p) 
     289            self._ldap.set_credentials(u.encode('ascii'),  
     290                                       p.encode('ascii')) 
    284291 
    285292    def _create_uid(self, username): 
     
    287294        if username.startswith('@'): 
    288295            prefix = self.env.config.get('ldap', 'groupattr', 'cn') 
    289             return '%s=%s' % (prefix, username[1:]) 
     296            return '%s=%s' % (prefix.encode('ascii'), username[1:]) 
    290297        else: 
    291298            prefix = self.env.config.get('ldap', 'uidattr', 'uid') 
    292             return '%s=%s' % (prefix, username) 
     299            return '%s=%s' % (prefix.encode('ascii'), username) 
    293300 
    294301    def _get_permissions(self, uid):