Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exercício do 'Desafio'

Boa noite

Realizei a refatoração do código da classe 'RealizarLogin' e quando fui deu erro. Alguém poderia me ajudar?

Mensagem que apareceu no terminal:

[Sat Feb  8 21:10:21 2020] [::1]:52546 [500]: /realizar-login - syntax error, unexpected 'ObjectRepository' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in F:\a
rquivos\cursos\alura\mvc\projeto\src\Controller\RealizarLogin.php on line 17

Código fonte da classe 'RealizarLogin':

<?php

namespace Alura\Cursos\Controller;

use Alura\Cursos\Entity\Usuario;
use Alura\Cursos\Helper\FlashMessageTrait;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ObjectRepository;
use Nyholm\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class RealizarLogin implements RequestHandlerInterface
{

    private ObjectRepository $repositorioDeUsuarios;

    /**
     * @var EntityManagerInterface
     */
    private EntityManagerInterface $entityManager;

    use FlashMessageTrait;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
        $this->repositorioDeUsuarios = $this->entityManager->getRepository(Usuario::class);
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $email = filter_var($request->getParsedBody()['email'], FILTER_VALIDATE_EMAIL);

        if (is_null($email) || $email === false) {
            $this->definirMensagem("danger", "E-mail digitado não é um e-mail válido");
            return new Response(300, ['Location' => '/login']);
        }

        $senha = $request->getParsedBody()['senha'];

        /** @var Usuario $usuario */
        $usuario = $this->repositorioDeUsuarios->findOneBy(['email' => $email]);

        if (is_null($usuario) || !$usuario->senhaEstaCorreta($senha)) {
            $this->definirMensagem("danger", "E-mail ou senha inválidos");
            return new Response(300, ['Location' => '/login']);
        }

        $_SESSION['logado'] = true;

        return new Response(300, [
            'Location' => '/listar-cursos',
        ]);
    }
}
2 respostas
solução!

Oi Leornardo,

Seu erro parece estar em:

private ObjectRepository $repositorioDeUsuarios;

Retire o "ObjectRepository", você tentou usar uma espécie de typed propertie (:

Bons estudos.

Bom dia

O erro era exatamente isso, obrigado!