/** * Query to update a user profile. * * @param string $guid * @param string $provider * @param string $resourceOwnerId * @param ResourceOwnerInterface $resourceOwner * * @return \Doctrine\DBAL\Query\QueryBuilder */ public function queryUpdate($guid, $provider, $resourceOwnerId, ResourceOwnerInterface $resourceOwner) { $query = $this->getQueryBuilder()->update($this->tableNameProvider)->set('lastupdate', ':lastupdate')->set('resource_owner', ':resource_owner')->where('provider = :provider')->andWhere('resource_owner_id = :resource_owner_id')->setParameters(['provider' => $provider, 'resource_owner_id' => $resourceOwnerId, 'lastupdate' => date('Y-m-d H:i:s', time()), 'resource_owner' => json_encode($resourceOwner->toArray())]); if ($guid !== null) { $query->andWhere('resource_owner_id = :resource_owner_id')->setParameter('guid', ':guid'); } return $query; }
/** * {@inheritdoc} */ public function map(Member $member, ResourceOwnerInterface $resourceOwner) { $mapping = $this->getMapping(); $array = $resourceOwner->toArray(); foreach ($mapping as $target => $source) { if (method_exists($resourceOwner, "get{$source}")) { $method = "get{$source}"; $member->{$target} = $resourceOwner->{$method}(); } elseif (array_key_exists($source, $array)) { $member->{$target} = $array[$source]; } } return $member; }
/** * Find or create a member from the given resource owner ("user") * * @todo Implement $overwriteExisting. Could use priorities? I.e. Facebook data > Google data * @param ResourceOwnerInterface $user * @param string $providerName * @return Member * @throws TokenlessUserExistsException */ protected function memberFromResourceOwner(ResourceOwnerInterface $user, $providerName) { $member = Member::get()->filter(['Email' => $user->getEmail()])->first(); if (!$member) { $member = Member::create(); } if ($member->isInDB() && !$member->AccessTokens()->count()) { throw new TokenlessUserExistsException('A user with the email address linked to this account already exists.'); } $overwriteExisting = false; // @todo if ($overwriteExisting || !$member->isInDB()) { $member = $this->getMapper($providerName)->map($member, $user); $member->write(); } return $member; }
/** * {@inheritdoc} */ protected function getSuggestions(ResourceOwnerInterface $resourceOwner) { return ['username' => $resourceOwner->getUsername(), 'avatarUrl' => $resourceOwner->getAvatar()]; }
/** * {@inheritdoc} */ protected function getSuggestions(ResourceOwnerInterface $resourceOwner) { return ['username' => $resourceOwner->getNickname(), 'avatarUrl' => array_get($resourceOwner->toArray(), 'avatar_url')]; }
/** * {@inheritdoc} */ protected function getSuggestions(ResourceOwnerInterface $resourceOwner) { return ['username' => $resourceOwner->getFirstName()]; }
protected function getSuggestions(ResourceOwnerInterface $resourceOwner) { return ['username' => $resourceOwner->toArray()['username'], 'email' => $resourceOwner->toArray()['email']]; }
/** * Update a user profile. * * @param string $guid * @param string $provider * @param ResourceOwnerInterface $resourceOwner * * @return \Doctrine\DBAL\Driver\Statement|integer|null */ public function updateProvider($guid, $provider, ResourceOwnerInterface $resourceOwner) { $resourceOwnerId = $resourceOwner->getId(); $query = $this->getProviderQueriesWrite()->queryUpdate($guid, $provider, $resourceOwnerId, $resourceOwner); return $this->executeQuery($query); }
/** * Add an OAuth2 client data * * @param string $provider * @param ResourceOwnerInterface $resourceOwner * * @return Profile */ public static function createFromResourceOwner($provider, ResourceOwnerInterface $resourceOwner) { $classname = get_called_class(); $class = new $classname(); $class->provider = $provider; $class->uid = $resourceOwner->getId(); $class->nickname = $resourceOwner->getNickname(); $class->name = $resourceOwner->getName(); $class->firstName = $resourceOwner->getFirstName(); $class->lastName = $resourceOwner->getLastName(); $class->email = $resourceOwner->getEmail(); $class->imageUrl = $resourceOwner->getImageurl(); $class->urls = $resourceOwner->getUrl(); return $class; }