mirror of
https://github.com/operasoftware/ssh-key-authority.git
synced 2025-12-17 02:14:14 -06:00
Also add group_filter attribute for separating groups from other entities
This commit is contained in:
@@ -94,6 +94,9 @@ dn_user = "ou=users,dc=example,dc=com"
|
||||
dn_group = "ou=groups,dc=example,dc=com"
|
||||
; (Optional) filter for matching user objects
|
||||
;user_filter = "(objectClass=inetOrgPerson)"
|
||||
; (Optional) filter for matching group objects
|
||||
;group_filter = "(objectClass=posixGroup)"
|
||||
|
||||
; Set to 1 if the LDAP library should process referrals. In most cases this
|
||||
; is not needed, and for AD servers it can cause errors when querying the
|
||||
; whole tree.
|
||||
|
||||
@@ -313,6 +313,11 @@ class User extends Entity {
|
||||
} else {
|
||||
$user_filter = '';
|
||||
}
|
||||
if(isset($config['ldap']['group_filter'])) {
|
||||
$group_filter = $config['ldap']['group_filter'];
|
||||
} else {
|
||||
$group_filter = '';
|
||||
}
|
||||
$ldapusers = $this->ldap->search($config['ldap']['dn_user'], '(&('.LDAP::escape($config['ldap']['user_id']).'='.LDAP::escape($this->uid).')'.$user_filter.')', array_keys(array_flip($attributes)));
|
||||
if($ldapuser = reset($ldapusers)) {
|
||||
$this->auth_realm = 'LDAP';
|
||||
@@ -330,7 +335,7 @@ class User extends Entity {
|
||||
$this->active = 1;
|
||||
}
|
||||
$group_member = $ldapuser[strtolower($config['ldap']['group_member_value'])];
|
||||
$ldapgroups = $this->ldap->search($config['ldap']['dn_group'], LDAP::escape($config['ldap']['group_member']).'='.LDAP::escape($group_member), array('cn'));
|
||||
$ldapgroups = $this->ldap->search($config['ldap']['dn_group'], '(&('.LDAP::escape($config['ldap']['group_member']).'='.LDAP::escape($group_member).')'.$group_filter.')', array('cn'));
|
||||
$memberships = array();
|
||||
foreach($ldapgroups as $ldapgroup) {
|
||||
$memberships[$ldapgroup['cn']] = true;
|
||||
|
||||
Reference in New Issue
Block a user