public getUserDetails ( $userName ) : array | null | ||
$userName | ||
return | array | null |
public function getUserDetails($userName)
{
$ldapConnection = $this->getConnection();
$this->bindSystemUser($ldapConnection);
// 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']);
if ($users['count'] === 0) {
return null;
}
$user = $users[0];
return ['uid' => isset($user['uid']) ? $user['uid'][0] : $user['dn'], 'name' => $user['cn'][0], 'dn' => $user['dn'], 'email' => isset($user['mail']) ? $user['mail'][0] : null];
}
/** * Retrieve a user by the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByCredentials(array $credentials) { // Get user via LDAP $userDetails = $this->ldapService->getUserDetails($credentials['username']); if ($userDetails === null) { return null; } // Search current user base by looking up a uid $model = $this->createModel(); $currentUser = $model->newQuery()->where('external_auth_id', $userDetails['uid'])->first(); if ($currentUser !== null) { return $currentUser; } $model->name = $userDetails['name']; $model->external_auth_id = $userDetails['uid']; $model->email = $userDetails['email']; $model->email_confirmed = false; return $model; }