<?php

namespace Lc\SovBundle\Controller\Security;

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 SecurityAdminController extends AbstractController
{
    /**
     * @Route("/login", name="sov_login")
     */
    public function login(AuthenticationUtils $authenticationUtils, Request $request): Response
    {
        if ($this->getUser()) {
            return $this->redirectToRoute('app_admin_dashboard');
        }

        // get the login error if there is one
        $error = $authenticationUtils->getLastAuthenticationError();
        // last username entered by the user
        $lastUsername = $authenticationUtils->getLastUsername();

        return $this->render('@EasyAdmin/page/login.html.twig', [
            // parameters usually defined in Symfony login forms
                'error' => $error,
                'last_username' => $lastUsername,

            // OPTIONAL parameters to customize the login form:

            // the translation_domain to use (define this option only if you are
            // rendering the login template in a regular Symfony controller; when
            // rendering it from an EasyAdmin Dashboard this is automatically set to
            // the same domain as the rest of the Dashboard)
                'translation_domain' => 'admin',

            // the title visible above the login form (define this option only if you are
            // rendering the login template in a regular Symfony controller; when rendering
            // it from an EasyAdmin Dashboard this is automatically set as the Dashboard title)
                'page_title' => '<img class="logo-admin" src="assets/img/' . $this->getParameter('app.admin.logo') . '" >',

            // the string used to generate the CSRF token. If you don't define
            // this parameter, the login form won't include a CSRF token
                'csrf_token_intention' => 'authenticate',

            // the URL users are redirected to after the login (default: '/admin')
                'target_path' => $this->generateUrl('app_admin_dashboard'),

            // the label displayed for the username form field (the |trans filter is applied to it)
                'username_label' => 'Email',

            // the label displayed for the password form field (the |trans filter is applied to it)
                'password_label' => 'Mot de passe',

            // the label displayed for the Sign In form button (the |trans filter is applied to it)
                'sign_in_label' => 'Connexion',

            // the 'name' HTML attribute of the <input> used for the username field (default: '_username')
                'username_parameter' => 'email',

            // the 'name' HTML attribute of the <input> used for the password field (default: '_password')
                'password_parameter' => 'password',
        ]);
    }

    /**
     * @Route("/logout", name="sov_logout")
     */
    public function logout()
    {
        throw new \LogicException(
                'This method can be blank - it will be intercepted by the logout key on your firewall.'
        );
    }
}
