Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
Backend : - POST /api/me/regenerate-api-token : nouveau controller, ROLE_USER (exclut CLIENT) - User.apiToken exposé via groupe me:read sur GET /api/me Frontend : - Section 'Token API MCP' sur /profile (masquée pour les CLIENT du portail) - Boutons Copier + Régénérer avec modal de confirmation - Service api-token + DTO mis à jour + clés i18n fr
37 lines
1007 B
PHP
37 lines
1007 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controller;
|
|
|
|
use App\Entity\User;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\Routing\Attribute\Route;
|
|
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
|
|
|
use function bin2hex;
|
|
use function random_bytes;
|
|
|
|
class RegenerateApiTokenController extends AbstractController
|
|
{
|
|
public function __construct(
|
|
private readonly EntityManagerInterface $entityManager,
|
|
) {}
|
|
|
|
#[Route('/api/me/regenerate-api-token', name: 'me_regenerate_api_token', methods: ['POST'], priority: 1)]
|
|
#[IsGranted('ROLE_USER')]
|
|
public function __invoke(): JsonResponse
|
|
{
|
|
/** @var User $user */
|
|
$user = $this->getUser();
|
|
|
|
$token = bin2hex(random_bytes(32));
|
|
$user->setApiToken($token);
|
|
$this->entityManager->flush();
|
|
|
|
return new JsonResponse(['apiToken' => $token]);
|
|
}
|
|
}
|