| <?php |
|
|
| namespace Kanboard\Core\User; |
|
|
| use Kanboard\Core\Base; |
| use Kanboard\Event\UserProfileSyncEvent; |
|
|
| |
| |
| |
| |
| |
| |
| class UserProfile extends Base |
| { |
| const EVENT_USER_PROFILE_AFTER_SYNC = 'user_profile.after.sync'; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function assign($userId, UserProviderInterface $user) |
| { |
| $profile = $this->userModel->getById($userId); |
|
|
| $values = UserProperty::filterProperties($profile, UserProperty::getProperties($user)); |
| $values['id'] = $userId; |
|
|
| if ($this->userModel->update($values)) { |
| $profile = array_merge($profile, $values); |
| $this->userSession->initialize($profile); |
| return true; |
| } |
|
|
| return false; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function initialize(UserProviderInterface $user) |
| { |
| if ($user->getInternalId()) { |
| $profile = $this->userModel->getById($user->getInternalId()); |
| } elseif ($user->getExternalIdColumn() && $user->getExternalId()) { |
| $profile = $this->userSync->synchronize($user); |
| if (LDAP_GROUP_SYNC) { |
| $this->groupSync->synchronize($profile['id'], $user->getExternalGroupIds()); |
| } |
| } |
|
|
| if (! empty($profile) && $profile['is_active'] == 1) { |
| $this->userSession->initialize($profile); |
| $this->dispatcher->dispatch(new UserProfileSyncEvent($profile, $user), self::EVENT_USER_PROFILE_AFTER_SYNC); |
| return true; |
| } |
|
|
| return false; |
| } |
| } |
|
|