Skip to content

Commit

Permalink
Create Sber class, SocialConnect#3.1.6-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
vitr-nindeco committed Jul 22, 2020
1 parent 1108471 commit dea7f25
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 121 deletions.
2 changes: 1 addition & 1 deletion src/Auth/CollectionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ class CollectionFactory implements FactoryInterface
OAuth2\Provider\Yahoo::NAME => OAuth2\Provider\Yahoo::class,
OAuth2\Provider\WordPress::NAME => OAuth2\Provider\WordPress::class,
OAuth2\Provider\Meetup::NAME => OAuth2\Provider\Meetup::class,
OAuth2\Provider\Sberbank::NAME => OAuth2\Provider\Sberbank::class,
// OpenID
OpenID\Provider\Steam::NAME => OpenID\Provider\Steam::class,
// OpenIDConnect
OpenIDConnect\Provider\Apple::NAME => OpenIDConnect\Provider\Apple::class,
OpenIDConnect\Provider\Google::NAME => OpenIDConnect\Provider\Google::class,
OpenIDConnect\Provider\PixelPin::NAME => OpenIDConnect\Provider\PixelPin::class,
OpenIDConnect\Provider\Sberbank::NAME => OpenIDConnect\Provider\Sberbank::class,
];

/**
Expand Down
97 changes: 97 additions & 0 deletions src/OAuth2/Provider/Sberbank.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?php

declare(strict_types=1);

namespace SocialConnect\OAuth2\Provider;

use SocialConnect\Common\ArrayHydrator;
use SocialConnect\Provider\AccessTokenInterface;
use SocialConnect\Common\Entity\User;

class Sberbank extends \SocialConnect\OAuth2\AbstractProvider {
const NAME = 'sber';

/**
* {@inheritdoc}
*/
protected $requestHttpMethod = 'GET';

/**
* Vk returns email inside AccessToken
*
* @var string|null
*/
protected $email;

public function getBaseUri()
{
return '';
}

public function getAuthorizeUri()
{
return '';
}

public function getRequestTokenUri()
{
return '';
}

public function getName()
{
return self::NAME;
}

/**
* {@inheritDoc}
*/
public function prepareRequest(string $method, string $uri, array &$headers, array &$query, AccessTokenInterface $accessToken = null): void
{
if ($accessToken) {
$query['access_token'] = $accessToken->getToken();
}
}

/**
* {@inheritdoc}
*/
public function getIdentity(AccessTokenInterface $accessToken)
{
$query = [
'v' => '5.100'
];

$fields = $this->getArrayOption('identity.fields', []);
if ($fields) {
$query['fields'] = implode(',', $fields);
}

$response = $this->request('GET', 'method/users.get', $query, $accessToken);

$hydrator = new ArrayHydrator([
'id' => 'id',
'first_name' => 'firstname',
'last_name' => 'lastname',
'email' => 'email',
'bdate' => static function ($value, User $user) {
$user->setBirthday(
new \DateTime($value)
);
},
'sex' => static function ($value, User $user) {
$user->setSex($value === 1 ? User::SEX_FEMALE : User::SEX_MALE);
},
'screen_name' => 'username',
'photo_max_orig' => 'pictureURL',
]);

/** @var User $user */
$user = $hydrator->hydrate(new User(), $response['response'][0]);

$user->email = $this->email;
$user->emailVerified = true;

return $user;
}
}
120 changes: 0 additions & 120 deletions src/OpenIDConnect/Provider/Sberbank.php

This file was deleted.

0 comments on commit dea7f25

Please sign in to comment.