|
|
<?php |
|
|
|
|
|
namespace Kanboard\Api\Procedure; |
|
|
|
|
|
use LogicException; |
|
|
use Kanboard\Core\Security\Role; |
|
|
use Kanboard\Core\Ldap\Client as LdapClient; |
|
|
use Kanboard\Core\Ldap\ClientException as LdapException; |
|
|
use Kanboard\Core\Ldap\User as LdapUser; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserProcedure extends BaseProcedure |
|
|
{ |
|
|
public function getUser($user_id) |
|
|
{ |
|
|
return $this->userModel->getById($user_id); |
|
|
} |
|
|
|
|
|
public function getUserByName($username) |
|
|
{ |
|
|
return $this->userModel->getByUsername($username); |
|
|
} |
|
|
|
|
|
public function getAllUsers() |
|
|
{ |
|
|
return $this->userModel->getAll(); |
|
|
} |
|
|
|
|
|
public function removeUser($user_id) |
|
|
{ |
|
|
return $this->userModel->remove($user_id); |
|
|
} |
|
|
|
|
|
public function disableUser($user_id) |
|
|
{ |
|
|
return $this->userModel->disable($user_id); |
|
|
} |
|
|
|
|
|
public function enableUser($user_id) |
|
|
{ |
|
|
return $this->userModel->enable($user_id); |
|
|
} |
|
|
|
|
|
public function isActiveUser($user_id) |
|
|
{ |
|
|
return $this->userModel->isActive($user_id); |
|
|
} |
|
|
|
|
|
public function createUser($username, $password, $name = '', $email = '', $role = Role::APP_USER) |
|
|
{ |
|
|
$values = array( |
|
|
'username' => $username, |
|
|
'password' => $password, |
|
|
'confirmation' => $password, |
|
|
'name' => $name, |
|
|
'email' => $email, |
|
|
'role' => $role, |
|
|
); |
|
|
|
|
|
list($valid, ) = $this->userValidator->validateCreation($values); |
|
|
return $valid ? $this->userModel->create($values) : false; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function createLdapUser($username) |
|
|
{ |
|
|
if (LDAP_BIND_TYPE === 'user') { |
|
|
$this->logger->error('LDAP authentication "user" is not supported by this API call'); |
|
|
return false; |
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
$ldap = LdapClient::connect(); |
|
|
$ldap->setLogger($this->logger); |
|
|
$user = LdapUser::getUser($ldap, $username); |
|
|
|
|
|
if ($user === null) { |
|
|
$this->logger->info('User not found in LDAP server'); |
|
|
return false; |
|
|
} |
|
|
|
|
|
if ($user->getUsername() === '') { |
|
|
throw new LogicException('Username not found in LDAP profile, check the parameter LDAP_USER_ATTRIBUTE_USERNAME'); |
|
|
} |
|
|
|
|
|
$values = array( |
|
|
'username' => $user->getUsername(), |
|
|
'name' => $user->getName(), |
|
|
'email' => $user->getEmail(), |
|
|
'role' => $user->getRole() ?: Role::APP_USER, |
|
|
'is_ldap_user' => 1, |
|
|
); |
|
|
|
|
|
return $this->userModel->create($values); |
|
|
|
|
|
} catch (LdapException $e) { |
|
|
$this->logger->error($e->getMessage()); |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
public function updateUser($id, $username = null, $name = null, $email = null, $role = null) |
|
|
{ |
|
|
$values = $this->filterValues(array( |
|
|
'id' => $id, |
|
|
'username' => $username, |
|
|
'name' => $name, |
|
|
'email' => $email, |
|
|
'role' => $role, |
|
|
)); |
|
|
|
|
|
list($valid, ) = $this->userValidator->validateApiModification($values); |
|
|
return $valid && $this->userModel->update($values); |
|
|
} |
|
|
} |
|
|
|