Dan Brown

Made LDAP email attribute configurable via .env

Closes #306
...@@ -41,7 +41,8 @@ class LdapService ...@@ -41,7 +41,8 @@ class LdapService
41 // Find user 41 // Find user
42 $userFilter = $this->buildFilter($this->config['user_filter'], ['user' => $userName]); 42 $userFilter = $this->buildFilter($this->config['user_filter'], ['user' => $userName]);
43 $baseDn = $this->config['base_dn']; 43 $baseDn = $this->config['base_dn'];
44 - $users = $this->ldap->searchAndGetEntries($ldapConnection, $baseDn, $userFilter, ['cn', 'uid', 'dn', 'mail']); 44 + $emailAttr = $this->config['email_attribute'];
45 + $users = $this->ldap->searchAndGetEntries($ldapConnection, $baseDn, $userFilter, ['cn', 'uid', 'dn', $emailAttr]);
45 if ($users['count'] === 0) return null; 46 if ($users['count'] === 0) return null;
46 47
47 $user = $users[0]; 48 $user = $users[0];
...@@ -49,7 +50,7 @@ class LdapService ...@@ -49,7 +50,7 @@ class LdapService
49 'uid' => (isset($user['uid'])) ? $user['uid'][0] : $user['dn'], 50 'uid' => (isset($user['uid'])) ? $user['uid'][0] : $user['dn'],
50 'name' => $user['cn'][0], 51 'name' => $user['cn'][0],
51 'dn' => $user['dn'], 52 'dn' => $user['dn'],
52 - 'email' => (isset($user['mail'])) ? $user['mail'][0] : null 53 + 'email' => (isset($user[$emailAttr])) ? (is_array($user[$emailAttr]) ? $user[$emailAttr][0] : $user[$emailAttr]) : null
53 ]; 54 ];
54 } 55 }
55 56
......
...@@ -78,7 +78,8 @@ return [ ...@@ -78,7 +78,8 @@ return [
78 'pass' => env('LDAP_PASS', false), 78 'pass' => env('LDAP_PASS', false),
79 'base_dn' => env('LDAP_BASE_DN', false), 79 'base_dn' => env('LDAP_BASE_DN', false),
80 'user_filter' => env('LDAP_USER_FILTER', '(&(uid=${user}))'), 80 'user_filter' => env('LDAP_USER_FILTER', '(&(uid=${user}))'),
81 - 'version' => env('LDAP_VERSION', false) 81 + 'version' => env('LDAP_VERSION', false),
82 + 'email_attribute' => env('LDAP_EMAIL_ATTRIBUTE', 'mail'),
82 ] 83 ]
83 84
84 ]; 85 ];
......