autowp/external-login-service

View on GitHub
src/Google.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php
 
declare(strict_types=1);
 
namespace Autowp\ExternalLoginService;
 
use Google_Client;
use Laminas\Uri\Http;
use Laminas\Uri\UriFactory;
 
use function preg_split;
 
class Google extends AbstractService
{
/** @var string */
`syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST)`
private string $idToken;
 
public function getState(): string
{
return '';
}
 
public function getLoginUrl(): string
{
return '';
}
 
public function getFriendsUrl(): string
{
return '';
}
 
Avoid unused parameters such as '$params'.
public function callback(array $params): array
{
return [];
}
 
public function setIDToken(string $idToken): self
{
$this->idToken = $idToken;
 
return $this;
}
 
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
Method `getData` has 29 lines of code (exceeds 25 allowed). Consider refactoring.
Function `getData` has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
public function getData(array $options): Result
{
$clientIDs = preg_split("/[[:space:]]+/isu", $this->options['clientId']);
 
foreach ($clientIDs as $clientID) {
if (! $clientID) {
continue;
}
 
$client = new Google_Client([
'client_id' => $clientID,
]);
 
$payload = $client->verifyIdToken($this->idToken);
if ($payload) {
break;
}
}
 
if (! $payload) {
throw new ExternalLoginServiceException("idToken verification failed");
}
 
$photoUrl = $payload['picture'];
if ($photoUrl) {
$photoUrl = $this->setSizeParam($photoUrl, 640);
}
 
return new Result([
'externalId' => $payload['sub'],
'name' => $payload['name'],
'profileUrl' => '',
'photoUrl' => $photoUrl,
'location' => '',
'language' => $payload['locale'],
'email' => $payload['email'],
]);
}
 
public function getFriends(): array
{
return [];
}
 
private function setSizeParam(string $url, int $size): string
{
Avoid using static access to class '\Laminas\Uri\UriFactory' in method 'setSizeParam'.
$uri = UriFactory::factory($url);
 
if ($uri instanceof Http) {
$params = $uri->getQueryAsArray();
$params['sz'] = $size;
$uri->setQuery($params);
 
$url = $uri->toString();
}
 
return $url;
}
}