]> BookStack Code Mirror - bookstack/commitdiff
Made LDAP email attribute configurable via .env
authorDan Brown <redacted>
Sun, 26 Feb 2017 14:51:49 +0000 (14:51 +0000)
committerDan Brown <redacted>
Sun, 26 Feb 2017 14:51:49 +0000 (14:51 +0000)
Closes #306

app/Services/LdapService.php
config/services.php

index f8a4b88bb4b985c5fb75d5af875d3efb765864bd..71dc9c0e1a57b731048445bcdd78fed57e98c6a2 100644 (file)
@@ -41,7 +41,8 @@ class LdapService
         // Find user
         $userFilter = $this->buildFilter($this->config['user_filter'], ['user' => $userName]);
         $baseDn = $this->config['base_dn'];
-        $users = $this->ldap->searchAndGetEntries($ldapConnection, $baseDn, $userFilter, ['cn', 'uid', 'dn', 'mail']);
+        $emailAttr = $this->config['email_attribute'];
+        $users = $this->ldap->searchAndGetEntries($ldapConnection, $baseDn, $userFilter, ['cn', 'uid', 'dn', $emailAttr]);
         if ($users['count'] === 0) return null;
 
         $user = $users[0];
@@ -49,7 +50,7 @@ class LdapService
             'uid'   => (isset($user['uid'])) ? $user['uid'][0] : $user['dn'],
             'name'  => $user['cn'][0],
             'dn'    => $user['dn'],
-            'email' => (isset($user['mail'])) ? $user['mail'][0] : null
+            'email' => (isset($user[$emailAttr])) ? (is_array($user[$emailAttr]) ? $user[$emailAttr][0] : $user[$emailAttr]) : null
         ];
     }
 
index fe58cbb9ae0cd9b80d26a85d5c783c47261a74c1..99022e5f2bed0b0b7a415a9d6929ef9f1c45bf3a 100644 (file)
@@ -78,7 +78,8 @@ return [
         'pass' => env('LDAP_PASS', false),
         'base_dn' => env('LDAP_BASE_DN', false),
         'user_filter' => env('LDAP_USER_FILTER', '(&(uid=${user}))'),
-        'version' => env('LDAP_VERSION', false)
+        'version' => env('LDAP_VERSION', false),
+        'email_attribute' => env('LDAP_EMAIL_ATTRIBUTE', 'mail'),
     ]
 
 ];