Skip to content
Snippets Groups Projects
Commit 8c7cda62 authored by user's avatar user
Browse files

User V5

parent 10425a9a
Branches
No related tags found
No related merge requests found
......@@ -25,8 +25,8 @@ security:
secret: '%kernel.secret%'
access_control:
- { path: ^/admin, allow_if: "user and user.isAdmin == true" }
- { path: ^/*, allow_if: "user and user.isLocked != true" }
- { path: ^/admin, allow_if: "user and user.isAdmin() == true" }
- { path: ^/*, allow_if: "user and user.isLocked() != true" }
when@test:
security:
......
......@@ -22,7 +22,7 @@ class RegistrationController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) {
// Hacher le mot de passe
$hashedPassword = $passwordHasher->hashPassword($user, $form->get('plainPassword')->getData());
$hashedPassword = $passwordHasher->hashPassword($user, plainPassword: $form->get('plainPassword')->getData());
$user->setPassword($hashedPassword);
// Sauvegarder l'utilisateur
......
......@@ -8,6 +8,7 @@ use Symfony\Component\Routing\Attribute\Route;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\HttpFoundation\Request;
final class UserController extends AbstractController
{
......@@ -64,4 +65,39 @@ final class UserController extends AbstractController
$this->addFlash('success', 'Wishlist supprimée avec succès.');
return $this->redirectToRoute('user_dashboard');
}
#[Route('/user/profile', name: 'user_profile')]
public function profile(Request $request, EntityManagerInterface $entityManager): Response
{
// Récupérer l'utilisateur connecté
$token = $this->container->get('security.token_storage')->getToken();
if ($token) {
$user = $token->getUser();
dump($user);
} else {
dump('Aucun token trouvé');
}
if (!$user instanceof User) {
throw $this->createAccessDeniedException('Vous devez être connecté pour accéder à cette page.');
}
// Créer le formulaire pour modifier les informations de l'utilisateur
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Sauvegarder les modifications
$entityManager->persist($user);
$entityManager->flush();
$this->addFlash('success', 'Votre profil a été mis à jour avec succès.');
return $this->redirectToRoute('user_profile');
}
return $this->render('user/profile.html.twig', [
'form' => $form->createView(),
]);
}
}
<?php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('firstName', TextType::class, [
'label' => 'Prénom',
])
->add('lastName', TextType::class, [
'label' => 'Nom',
])
->add('email', EmailType::class, [
'label' => 'Email',
])
->add('image', TextType::class, [
'label' => 'URL de l\'image de profil',
'required' => false,
]);
// Note : Ne pas inclure le champ "password" ici pour des raisons de sécurité.
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}
\ No newline at end of file
{% extends 'base.html.twig' %}
{% block title %}Mon Profil{% endblock %}
{% block body %}
<div class="container mt-5">
<h1>Mon Profil</h1>
{{ form_start(form) }}
{{ form_row(form.firstName) }}
{{ form_row(form.lastName) }}
{{ form_row(form.email) }}
{{ form_row(form.image) }}
<button type="submit" class="btn btn-primary">Mettre à jour</button>
{{ form_end(form) }}
{% for message in app.flashes('success') %}
<div class="alert alert-success mt-3">
{{ message }}
</div>
{% endfor %}
</div>
{% endblock %}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment