src/Controller/v1/Role/FindOneRoleController.php
<?php
declare(strict_types = 1);
/**
* /src/Controller/v1/Role/FindOneRoleController.php
*
* @author TLe, Tarmo Leppänen <tarmo.leppanen@pinja.com>
*/
namespace App\Controller\v1\Role;
use App\Enum\Role;
use App\Resource\RoleResource;
use App\Rest\Controller;
use App\Rest\Traits\Methods;
use OpenApi\Attributes as OA;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\AsController;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Requirement\EnumRequirement;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Throwable;
/**
* @package App\Controller\v1\Role
* @author TLe, Tarmo Leppänen <tarmo.leppanen@pinja.com>
*/
#[AsController]
#[OA\Tag(name: 'Role Management')]
class FindOneRoleController extends Controller
{
use Methods\FindOneMethod;
public function __construct(
RoleResource $resource,
) {
parent::__construct($resource);
}
/**
* @throws Throwable
*/
#[Route(
path: '/v1/role/{role}',
requirements: [
'role' => new EnumRequirement(Role::class),
],
methods: [Request::METHOD_GET],
)]
#[IsGranted(Role::ADMIN->value)]
public function __invoke(Request $request, string $role): Response
{
return $this->findOneMethod($request, $role);
}
}