You've already forked php-auth
generated from siteworxpro/Php-Template
All checks were successful
🧪✨ Tests Workflow / 🧪 ✨ Database Migrations (push) Successful in -21s
🧪✨ Tests Workflow / 🛡️ 🔒 License Check (push) Successful in -22s
🧪✨ Tests Workflow / 🛡️ 🔒 Library Audit (push) Successful in -12s
🧪✨ Tests Workflow / 📝 ✨ Code Lint (push) Successful in -20s
🧪✨ Tests Workflow / 🐙 🔍 Code Sniffer (push) Successful in -14s
🧪✨ Tests Workflow / 🧪 ✅ Unit Tests (push) Successful in -36s
59 lines
1.8 KiB
PHP
59 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Siteworxpro\App\Controllers;
|
|
|
|
use Defuse\Crypto\Exception\BadFormatException;
|
|
use Defuse\Crypto\Exception\EnvironmentIsBrokenException;
|
|
use League\OAuth2\Server\Exception\OAuthServerException;
|
|
use Nyholm\Psr7\Response;
|
|
use Nyholm\Psr7\ServerRequest;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Siteworxpro\App\Events\AccessToken\Issued;
|
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
|
use Siteworxpro\App\Http\Responses\GenericResponse;
|
|
use Siteworxpro\App\OAuth\Entities\Client;
|
|
use Siteworxpro\App\Services\Facades\Dispatcher;
|
|
use Siteworxpro\HttpStatus\CodesEnum;
|
|
|
|
final class AccessTokenController extends Controller
|
|
{
|
|
/**
|
|
* @param ServerRequest $request
|
|
* @return ResponseInterface
|
|
* @throws BadFormatException
|
|
* @throws EnvironmentIsBrokenException
|
|
* @throws \JsonException
|
|
*/
|
|
public function post(ServerRequest $request): ResponseInterface
|
|
{
|
|
try {
|
|
$client = Client::byClientId($request->getParsedBody()['client_id'] ?? '');
|
|
if ($client === null) {
|
|
return JsonResponseFactory::createJsonResponse(
|
|
new GenericResponse('Invalid client'),
|
|
CodesEnum::BAD_REQUEST,
|
|
);
|
|
}
|
|
|
|
/** @var Response $response */
|
|
$response = $client
|
|
->getAuthorizationServer()
|
|
->respondToAccessTokenRequest(
|
|
$request,
|
|
JsonResponseFactory::createJsonResponse([])
|
|
);
|
|
|
|
Dispatcher::push(new Issued($client, $response));
|
|
|
|
return $response;
|
|
} catch (OAuthServerException $e) {
|
|
return JsonResponseFactory::createJsonResponse(
|
|
$e->getPayload(),
|
|
CodesEnum::fromCode($e->getHttpStatusCode()),
|
|
);
|
|
}
|
|
}
|
|
}
|