|
<?php |
|
|
|
namespace Kanboard\Core\User; |
|
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserSync extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function synchronize(UserProviderInterface $user) |
|
{ |
|
$profile = $this->userModel->getByExternalId($user->getExternalIdColumn(), $user->getExternalId()); |
|
$properties = UserProperty::getProperties($user); |
|
|
|
if (! empty($profile)) { |
|
$profile = $this->updateUser($profile, $properties); |
|
} elseif ($user->isUserCreationAllowed()) { |
|
$profile = $this->createUser($user, $properties); |
|
} |
|
|
|
return $profile; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private function updateUser(array $profile, array $properties) |
|
{ |
|
$values = UserProperty::filterProperties($profile, $properties); |
|
|
|
if (! empty($values)) { |
|
$values['id'] = $profile['id']; |
|
$result = $this->userModel->update($values); |
|
return $result ? array_merge($profile, $properties) : $profile; |
|
} |
|
|
|
return $profile; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private function createUser(UserProviderInterface $user, array $properties) |
|
{ |
|
$userId = $this->userModel->create($properties); |
|
|
|
if ($userId === false) { |
|
$this->logger->error('Unable to create user profile: '.$user->getExternalId()); |
|
return array(); |
|
} |
|
|
|
return $this->userModel->getById($userId); |
|
} |
|
} |
|
|