/** * Create or Update a User for authentication for use with ldap. * * @param array $credentials * * @return \Cartalyst\Sentry\Users\Eloquent\User */ public function createOrUpdateLdapUser(array $credentials) { $loginAttribute = $this->config->setPrefix('cartalyst.sentry')->get('users.login_attribute'); $username = $credentials[$loginAttribute]; $password = $credentials['password']; // If a user is found, update their password to match active-directory $user = $this->model->where('username', $username)->first(); if ($user) { $this->sentry->updatePasswordById($user->id, $password); } else { // If a user is not found in the database, create their web account $ldapUser = $this->ldap->user($username); $fullName = explode(',', $ldapUser->name); $lastName = array_key_exists(0, $fullName) ? $fullName[0] : null; $firstName = array_key_exists(1, $fullName) ? $fullName[1] : null; $data = ['email' => $ldapUser->email ? $ldapUser->email : $username, 'username' => $username, 'password' => $password, 'last_name' => (string) $lastName, 'first_name' => (string) $firstName, 'activated' => 1]; // Default all group $roles = ['all']; if (in_array($ldapUser->group, config('maintenance.groups.ldap.administrators'))) { $roles[] = 'administrators'; } else { if (in_array($ldapUser->group, config('maintenance.groups.ldap.workers'))) { $roles[] = 'workers'; } else { $roles[] = 'client'; } } $user = $this->sentry->createUser($data, $roles); } return $user; }