src/Security/AppAuth.php line 22
<?phpnamespace App\Security;use App\Repository\UsuarioRepository;use AXS\Components\Utils\JWT;use DateInterval;use DateTime;use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Exception\AuthenticationException;use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials;use Symfony\Component\Security\Http\Authenticator\Passport\Passport;use Symfony\Contracts\Translation\TranslatorInterface;class AppAuth extends AbstractLoginFormAuthenticator {public function __construct(private UrlGeneratorInterface $urlGenerator,private UsuarioRepository $urepo,private TranslatorInterface $trans,private ParameterBagInterface $parameters){}protected function getLoginUrl(Request $request): string {return $this->urlGenerator->generate("cPanel_login");}public function authenticate(Request $request): Passport {$badge = new UserBadge($request->get("_username"), function(string $userIdentifier){return $this->urepo->findOneBy(["username" => $userIdentifier]);});return new Passport($badge, new PasswordCredentials($request->get("_password")), [new CsrfTokenBadge("inicio_sesión", $request->get("_csrf_token"))]);}public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response {$token = new JWT($this->parameters->get("api_secret"));$expDate = new DateTime();$expDate->add(new DateInterval("P3D"));$token->setExp($expDate);$token->setNbf(new DateTime());$token->setIss("webLogin");$request->getSession()->set("apiToken", $token->getToken());return new JsonResponse(["success" => true, "action" => "redirect", "url" => $this->urlGenerator->generate("cPanel_index")]);}public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response {return new JsonResponse(["success" => false, "errno" => $exception->getCode(), "error" => $this->trans->trans($exception->getMessage(), domain: "messages", locale: "es")], Response::HTTP_BAD_REQUEST);}}