Na parte de realizar o login idependente de eu digitar ou não um email válido, sempre me retorna email inválido, e no log do servidor sempre me retorna o seguinte erro:
PHP Warning: Undefined array key "email" in C:\Users\Thiago\Desktop\Area de Trabalho para Pastas\alura cursos\Gerenciador de Cursos\src\Controller\RealizarLogin.php on line 31
PHP Warning: Undefined array key "senha" in C:\Users\Thiago\Desktop\Area de Trabalho para Pastas\alura cursos\Gerenciador de Cursos\src\Controller\RealizarLogin.php on line 35
Enfim estou usando o tal do getQueryParams() para substitur $POST['email'] e $POST['senha'] tentei de todas as formas que eu imaginei porém não saio do mesmo lugar
<?php
namespace Alura\Cursos\Controller;
use Alura\Cursos\Entity\Usuario;
use Alura\Cursos\Helper\FlashMessageTrait;
use Alura\Cursos\Infra\EntityManagerCreator;
use Doctrine\ORM\EntityManagerInterface;
use Nyholm\Psr7\Response;
use Psr\Http\Message\{ResponseInterface, ServerRequestInterface};
use Psr\Http\Server\RequestHandlerInterface;
class RealizarLogin implements RequestHandlerInterface
{
use FlashMessageTrait;
private EntityManagerInterface $entityManager;
private $repository;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
$this->repository = $this->entityManager->getRepository(Usuario::class);
}
public function handle(ServerRequestInterface $request): ResponseInterface
{
$data = $request->getQueryParams();
$email = filter_var(
$data['email'],
FILTER_VALIDATE_EMAIL
);
$senha = $data['senha'];
if($email === false || is_null($email)){
$this->defineMensagem('danger', 'O e-mail digitado não é válido');
return new Response(302, ['Location'=> '/login']);
}
$user = $this->repository->findOneBy(
['email'=>$email]
);
if(is_null($user) || $user->senhaEstaCorreta($senha) === false){
$this->defineMensagem('danger', 'E-mail ou senha digitado não é válido');
return new Response(302, ['Location'=> '/login']);
}
$_SESSION['logado'] = true;
return new Response(200, ['Location'=>'/listar-cursos']);
}
}