<?php
namespace App\Controller\Nordinfo;
use App\Entity\Footer;
use App\Entity\MenuLibelle;
use App\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
/**
* @method User getUser()
*/
#[Route(host: "nordinfo.spontaneit.fr")]
//#[Route(host: "info.lenord.fr")]
class AccountController extends AbstractController
{
protected mixed $params = [];
public function __construct(
private EntityManagerInterface $em,
private TranslatorInterface $translator
) {
$this->params['is_pdf'] = 0;
$this->getMenusTop();
$this->getMenusProfile();
$this->params['footer'] = $this->em->getRepository(Footer::class)->find(1);
}
public function login(Request $request, AuthenticationUtils $auth_util): Response
{
$this->params['locale'] = $this->translator->getLocale();
$user = $this->getUser();
if ($user !== null) {
if ($user->getRole() == 'lecteur') {
return $this->redirectToRoute('index');
}
return $this->redirectToRoute('admin');
}
$exception = $auth_util->getLastAuthenticationError();
$this->params['error'] = $exception ? $exception->getMessage() : NULL;
$this->params['lang'] = $this->translator->getLocale();
$this->params['show_screen_loader'] = 1;
return $this->render('Nordinfo/Main/login.html.twig', $this->params);
}
private function getMenusTop(): void
{
$this->params['menusTop'] = $this->em->getRepository(MenuLibelle::class)->findBy(['ordre' => 0]);
}
private function getMenusProfile(): void
{
$this->params['menusprofile'] = $this->em->getRepository(MenuLibelle::class)
->getMenuProfile();
}
#[Route(path: '/compte-cree/{token}', name: 'user_activate')]
public function activateUser(?string $token): Response
{
$user = $this->em->getRepository(User::class)->findOneBy(['token_activation' => $token]);
if ($user == null) {
$this->params['message'] = 'Compte déjà activé ou inexistant';
return $this->render('Nordinfo/Main/endformerror.html.twig', $this->params);
}
$user->setTokenActivation(null)
->setActive(true);
$this->em->persist($user);
$this->em->flush();
$this->params['message'] = "Grâce à mon compte, <b>mes préférences</b> (lieux de vie, centres d'intérêt) et <b>mes paramètres personnels</b> seront conservés quel que soit le terminal de consultation (smartphone, tablette, ordinateur), de même pour mes contenus mis en favoris. Vous pouvez également <a href='/proposer-un-evenement'>proposer un événement</a> dans l’agenda.";
if ($user->getRole() == "vip") {
$this->params['message'] = "Grâce à mon compte, mes préférences (mes lieux de vie, mes centres d’intérêt) et mes paramètres personnels (affichage, favoris) seront conservés quel que soit mon terminal de consultation (smartphone, tablette, ordinateur). Je peux également <a href='/proposer-un-evenement'>proposer un événement</a> dans l’agenda.
Mon profil premium me permet d'accéder à des contenus exclusifs ou en avant-première.
Ces contenus sont indiqués par un cadenas vert dans L'info, Vidéos et dans Mes actus.";
}
return $this->render('Nordinfo/Main/endregister.html.twig', $this->params);
}
#[Route(path: '/modifier-mot-de-passe', name: 'modifier_password')]
public function password_edit(): Response
{
if ($this->getUser() == null) {
return $this->redirect('info');
}
return $this->render('Nordinfo/Main/password_edit.html.twig', $this->params);
}
#[Route(path: '/modifier-nom', name: 'modifier_nom')]
public function name_edit(): Response
{
if ($this->getUser() == null) {
return $this->redirect('info');
}
return $this->render('Nordinfo/Main/name_edit.html.twig', $this->params);
}
#[Route(path: '/password_reset/{token}', name: 'password_reset')]
public function password_reset(?string $token): Response
{
$test = $this->em->getRepository(User::class)->findOneBy(['token_reset' => $token]);
if ($test != false && $token != '') {
$this->params['email'] = $test->getEmail();
$this->params['token'] = $token;
return $this->render('Nordinfo/Main/password_reset.html.twig', $this->params);
}
return $this->redirectToRoute('admin');
}
#[Route(path: '/oubli-mot-de-passe', name: 'password_forgot')]
public function password_forgot(): Response
{
return $this->render('Nordinfo/Main/password_forgot.html.twig', $this->params);
}
#[Route(path: '/oubli-mot-de-passe-success/{email}', name: 'password_forgot_success')]
public function password_forgot_success(?string $email): Response
{
$this->params['show_menu'] = 0;
$this->params['message'] = "Un courriel vient d'être envoyé à " . $email;
$this->params['subtitle'] = 'Nous envoyons ce courriel pour vérifier que vous êtes bien le titulaire de l\'adresse correspondante. <br/>Cliquez sur le lien qu\'il contient pour et laissez-vous guider pour définir un nouveau mot de passe.';
return $this->render('Nordinfo/Main/endpassword.html.twig', $this->params);
}
#[Route(path: '/account_remove_success', name: 'account_remove_success')]
public function removeAccountSuccess(): void
{
}
#[Route(path: '/reinitialisation_reussie', name: 'password_reset_success')]
public function password_reset_success(): Response
{
$this->params['show_menu'] = 0;
$this->params['show_connect_button'] = 1;
$this->params['message'] = 'Mon mot de passe a bien été modifié';
$this->params['subtitle'] = '';
return $this->render('Nordinfo/Main/endpassword.html.twig', $this->params);
}
#[Route(path: '/supprimer-mon-compte', name: 'account_remove')]
public function removeAccount(): Response
{
// if ($this->getUser() == null) {
// return $this->redirect('info');
// }
return $this->render('Nordinfo/Main/remove_account.html.twig', $this->params);
}
}