<?php
namespace App\Controller;
use App\Entity\Configuration;
use Symfony\Contracts\Translation\TranslatorInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class SecurityController extends AbstractController
{
protected $em;
private $authenticationUtils;
private $translator;
public function __construct(EntityManagerInterface $em, AuthenticationUtils $authenticationUtils, TranslatorInterface $translator)
{
$this->em = $em;
$this->authenticationUtils = $authenticationUtils;
$this->translator = $translator;
}
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
// Mensaje de depuración
// dump('Estoy en el controlador de login');
return $this->render(
'login/login.html.twig',
[
'last_username' => $this->authenticationUtils->getLastUsername(),
'error' => $this->authenticationUtils->getLastAuthenticationError(),
]
);
}
/**
* @Route("/kickout", name="kickout")
*/
public function KickoutAction(Request $request)
{
$this->get('security.token_storage')->setToken(null);
$session = $request->getSession();
$session->invalidate(); //here we can now clear the session.
return $this->render('kickout/kickout.html.twig');
}
/**
* @Route("/login_check", name="security_login_check")
*/
public function loginCheckAction()
{
// Este método se encarga de procesar la autenticación basada en formularios.
// Symfony maneja la autenticación automáticamente, por lo que no es necesario agregar lógica adicional aquí.
// Si necesitas realizar alguna acción adicional después de la autenticación, puedes hacerlo aquí.
// Por ejemplo, redirigir al usuario a una página específica después de iniciar sesión.
return $this->redirect('/');
}
/**
* @Route("/logout", name="logout")
*/
public function logoutAction()
{
// This action is handled by the security system, so it does not require any custom logic.
}
public function getLicencias()
{
$repository = $this->em->getRepository(Configuration::class);
$configuration = $repository->findOneById(1);
return $configuration->getLicenses();
}
}