Olá,
Seguindo os passos da aula, ainda não estou conseguindo fazer o login. Mesmo digitando a senha correta, o código não passa dessa parte:
$usuario = $this->repositorioDeUsuarios
->findOneBy(['email'=>$email]);
if (is_null($usuario) || !$usuario->senhaEstaCorreta($senha)) {
echo "E-mail ou senha inválidos";
return;
}
Quando retiro essa parte, o sistema faz o redirecionamento para a página /listar-cursos normalmente.
Para verificar, mudei a senha do usuário de id 1 para '123456', para ficar mais simples de verificar. Quando dou o SELECT no banco de dados, retorna a tabela id =1 email = 'email@email.com.br' senha = '123456'. Mas ao inserir estes dados, o sistema retorna como e-mail ou senha inválidos.
A classe RealizarLogin está da seguinte forma:
<?php
namespace Alura\Cursos\Controller;
use Alura\Cursos\Entity\Usuario;
use Alura\Cursos\Infra\EntityManagerCreator;
use Doctrine\Common\Persistence\ObjectRepository;
class RealizarLogin implements InterfaceControladorRequisicao
{
/**
* @var ObjectRepository
*/
private $repositorioDeUsuarios;
public function __construct()
{
$entityManager = (new EntityManagerCreator())->getEntityManager();
$this->repositorioDeUsuarios = $entityManager->getRepository(Usuario::class);
}
public function processaRequisicao(): void
{
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if(is_null($email || $email === false)){
echo "O e-mail digitado não é um e-mail válido.";
exit();
}
$senha = filter_input(INPUT_POST,
'senha',
FILTER_SANITIZE_STRING);
/**
* @var Usuario $usuario
*/
$usuario = $this->repositorioDeUsuarios
->findOneBy(['email'=>$email]);
if (is_null($usuario) || !$usuario->senhaEstaCorreta($senha)) {
echo "E-mail ou senha inválidos";
return;
}
header('Location: /listar-cursos');
}
}