src/Controller/SecurityController.php line 16

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ApiToken;
  4. use App\Entity\User;
  5. use App\Repository\UserRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\Security\Http\Attribute\CurrentUser;
  10. class SecurityController extends AbstractController
  11. {
  12.     #[Route('/login'name'app_login'methods: ['POST']  )]
  13.     public function login(#[CurrentUserUser $user null,
  14.                           UserRepository $userRepository): Response
  15.     {
  16.         if(!$user){
  17.             return $this->json(  [
  18.                 'error' => 'Nesprávné přihlašovací údaje.'
  19.                 ], 401
  20.             );
  21.         }
  22.         if(count($user->getTokens()) === 0) {
  23.             $apiToken = new ApiToken();
  24.             $apiToken->setOwnedBy($user);
  25.             $user->addToken($apiToken);
  26.             $userRepository->save($usertrue);
  27.         }
  28.         return $this->json([
  29.                    'user'  => $user->getUserIdentifier(),
  30.                    'token' =>  $user->getTokens()->last()->getToken(),
  31.         ]);
  32.     }
  33.     #[Route('/prihlasit'name'app_login_page'methods: ['GET']  )]
  34.     public function loginPage(): Response
  35.     {
  36.         return $this->render('security/loginPage.html.twig');
  37.     }
  38.     #[Route('/logout'name'app_logout')]
  39.     public function logout(): void
  40.     {
  41.         throw new \Exception('Don\'t forget to activate logout in security.yaml');
  42.     }
  43. }