feat: mise en page de la page login et page accueil

This commit is contained in:
2026-03-23 18:43:32 +01:00
parent 1b5fd98527
commit ba84b49134
17 changed files with 421 additions and 836 deletions

View File

View File

@@ -13,4 +13,4 @@ class HomeController extends AbstractController
{
return $this->render('home/home.html.twig');
}
}
}

View File

@@ -33,20 +33,34 @@ class UserController extends AbstractController
* @throws TransportExceptionInterface
*/
#[Route('/user/{email}', name: 'app_user', methods: ['GET'])]
public function index(string $email, KazApiService $apiClient): Response
// #[Route('/user/{email}', name: 'app_user', methods: ['GET'])]
// public function index(string $email, KazApiService $apiClient): Response
// {
// $exist = $apiClient->getUserData($email);
//
// return $this->render('user/index.html.twig', [
// 'exist' => $exist,
// ]);
// }
#[Route('/mon-profil', name: 'app_user', methods: ['GET'])]
public function index(KazApiService $apiClient): Response
{
$exist = $apiClient->getUserData($email);
// Récupération de l'utilisateur actuellement connecté
$user = $this->getUser();
// Utilisation de son email pour interroger l'API
$userData = $apiClient->getUserData($user->getUserIdentifier());
return $this->render('user/index.html.twig', [
'exist' => $exist,
'userData' => $userData,
]);
}
#[Route('/user/mot-de-passe', name: 'app_user_edit_password', methods: ['GET', 'POST'])]
#[Route('/mot-de-passe', name: 'app_user_edit_password', methods: ['GET', 'POST'])]
public function editPassword(Request $request, UserPasswordHasherInterface $hasher, EntityManagerInterface $entityManager): Response
{
# Récupération de l'adhérent actuellement connecté
# Récupération de l'utilisateur actuellement connecté
$user = $this->getUser();
# Création du formulaire
@@ -73,7 +87,7 @@ class UserController extends AbstractController
# Sauvegarde en BDD
$entityManager->flush();
# Message de succès pour l'adhérent
# Message de succès pour l'utilisateur
$this->addFlash('success', 'Votre mot de passe a bien été mis à jour !');
return $this->redirectToRoute('app_user_edit_password');
@@ -83,4 +97,4 @@ class UserController extends AbstractController
'form' => $form->createView(),
]);
}
}
}

View File

@@ -32,7 +32,7 @@ class AppFixtures extends Fixture
# Attribution d'un email aléatoire et unique
$user->setEmail($faker->unique()->safeEmail());
# Définition des droits d'accès de l'utilisateur
$user->setRoles(['ROLE_USER']);
$user->setRoles(['ROLE_USER', 'ROLE_ORGANISATION']);
# Hachage sécurisé du mot de passe "password"
$user->setPassword($this->hasher->hashPassword($user, 'password'));
# Définition d'un NOM et Prénom
@@ -52,7 +52,7 @@ class AppFixtures extends Fixture
// Création d'un compte de test fixe
$admin = new User();
$admin->setEmail('admin@kaz.bzh');
$admin->setRoles(['ROLE_USER', 'ROLE_ADMIN']);
$admin->setRoles(['ROLE_USER', 'ROLE_ADMIN', 'ROLE_ORGANISATION']);
$admin->setPassword($this->hasher->hashPassword($admin, 'password'));
$admin->setFirstName('Admin');
$admin->setLastName('KAZ');

View File

@@ -1,60 +0,0 @@
<?php
namespace App\Security;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials;
use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
use Symfony\Component\Security\Http\SecurityRequestAttributes;
use Symfony\Component\Security\Http\Util\TargetPathTrait;
class AppCustomAuthenticator extends AbstractLoginFormAuthenticator
{
use TargetPathTrait;
public const LOGIN_ROUTE = 'app_login';
public function __construct(private UrlGeneratorInterface $urlGenerator)
{
}
public function authenticate(Request $request): Passport
{
$email = $request->getPayload()->getString('email');
$request->getSession()->set(SecurityRequestAttributes::LAST_USERNAME, $email);
return new Passport(
new UserBadge($email),
new PasswordCredentials($request->getPayload()->getString('password')),
[
new CsrfTokenBadge('authenticate', $request->getPayload()->getString('_csrf_token')),
new RememberMeBadge(),
]
);
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response
{
if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) {
return new RedirectResponse($targetPath);
}
// For example:
// return new RedirectResponse($this->urlGenerator->generate('some_route'));
throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
}
protected function getLoginUrl(Request $request): string
{
return $this->urlGenerator->generate(self::LOGIN_ROUTE);
}
}