Changeset 174

Show
Ignore:
Timestamp:
12/08/05 18:04:07 (3 years ago)
Author:
eblot
Message:

LdapPlugin:

Apply patch from <wichert@wiggy.net> with minor changes. Thanks !

Files:

Legend:

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

    r135 r174  
    3434                       'store_bind', 'store_user', 'store_passwd' ] 
    3535 
    36 LDAP_DIRECTORY_PARAMS = [ 'host','port','basedn', 
     36LDAP_DIRECTORY_PARAMS = [ 'host','port', 
     37                          'basedn', 'user_basedn', 'group_basedn', 
    3738                          'groupname','groupmember', 
    3839                          'groupattr','uidattr' ] 
     
    6263 
    6364    def get_permission_groups(self, username): 
    64         self.env.log.debug('get_permission_group ' + username) 
    65  
    6665        groups = ['anonymous'] 
    6766        if username and username != 'anonymous': 
     
    109108                    # the less recently uses entries 
    110109                    cache_keys = self._cache.keys() 
    111                     cache_keys.sort(lambda x,y: cmp(self._cache[x][0], self._cache[y][0])) 
     110                    cache_keys.sort(lambda x,y: cmp(self._cache[x][0],  
     111                                                    self._cache[y][0])) 
    112112                    # discards the 5% oldest 
    113113                    old_keys = cache_keys[:(5*self._cache_size)/100] 
     
    297297        self.port = 389 
    298298        self.basedn = '' 
     299        self.user_basedn = None 
     300        self.group_basedn = None 
    299301        self.groupname = 'groupofnames' 
    300302        self.groupmember = 'member' 
     
    303305        for key in ldap.keys(): 
    304306            self.__setattr__(key, ldap[key]) 
     307        if not self.user_basedn: 
     308            self.user_basedn = self.basedn 
     309        if not self.group_basedn: 
     310            self.group_basedn = self.basedn 
    305311        self._uid = None 
    306312        self._password = None 
    307313 
    308314    def basedn(self): 
    309         return self.basedn;     
     315        return self.basedn 
     316 
     317    def user_basedn(self): 
     318        return self.user_basedn 
     319 
     320    def group_basedn(self): 
     321        return self.group_basedn 
    310322 
    311323    def set_credentials(self, uid, password): 
     
    329341                if ( self._uid.find('=') == -1 ): 
    330342                    self._uid = '%s=%s' % (self.uidattr, self._uid) 
    331                 self._ds.simple_bind_s(self._uid + ',' + self.basedn, self._password) 
     343                self._ds.simple_bind_s(self._uid + ',' + self.basedn,  
     344                                       self._password) 
    332345            else: 
    333346                self._ds.simple_bind_s() 
     
    341354            if not self.__dict__.has_key('_ds') or not self.__dict__['_ds']: 
    342355                self._open() 
    343             sr = self._ds.search_s(self.basedn, ldap.SCOPE_SUBTREE, filter, attributes) 
     356            sr = self._ds.search_s(self.basedn, ldap.SCOPE_SUBTREE,  
     357                                   filter, attributes) 
    344358            return sr 
    345359 
     
    352366            if not self.__dict__.has_key('_ds') or not self.__dict__['_ds']: 
    353367                self._open() 
    354             cr = self._ds.compare_s(dn + "," + self.basedn, attribute, value) 
     368            cr = self._ds.compare_s(dn, attribute, value) 
    355369            return cr 
    356370         
     
    376390     
    377391    def is_in_group(self, uid, group): 
    378         dn = self.groupattr + "=" + group 
    379         value = self.uidattr + "=" + uid + "," + self.basedn 
     392        dn = '%s=%s,%s' % (self.groupattr, group, self.group_basedn) 
     393        value = '%s=%s,%s' % (self.uidattr, uid, self.user_basedn) 
    380394        for attempt in range(2): 
    381395            cr = self._compare(dn, self.groupmember, value)