diff --git a/config/packages/security.yaml b/config/packages/security.yaml
index 730a51d59c5f378a09e2851542bc18acce65cccc..15d722412a1ff3476459f29ad783a369960bd233 100644
--- a/config/packages/security.yaml
+++ b/config/packages/security.yaml
@@ -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:
diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php
index 46f72b7833b2f63c6981725a44e6c4017a8d6d27..96c886026eb60f8b33d73c21731544c9b58c09a7 100644
--- a/src/Controller/RegistrationController.php
+++ b/src/Controller/RegistrationController.php
@@ -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
diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php
index a53eb97ea42b9538832991f6359a3350cc2125dc..772f73c412427311a421429b28807b66155908ce 100644
--- a/src/Controller/UserController.php
+++ b/src/Controller/UserController.php
@@ -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(),
+        ]);
+    }
 }
diff --git a/src/Form/UserType.php b/src/Form/UserType.php
new file mode 100644
index 0000000000000000000000000000000000000000..fbb140a00611683f6c38f08660de55994ced4d1d
--- /dev/null
+++ b/src/Form/UserType.php
@@ -0,0 +1,40 @@
+<?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
diff --git a/templates/user/profile.html.twig b/templates/user/profile.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..ce689c9401f4aac428f341c6e9117f4e782e1dd8
--- /dev/null
+++ b/templates/user/profile.html.twig
@@ -0,0 +1,23 @@
+{% 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