Skip to content
Snippets Groups Projects
Commit 8a07b911 authored by Zahdi's avatar Zahdi
Browse files
parents cbd92ddc 0e952eb8
No related branches found
No related tags found
No related merge requests found
...@@ -27,7 +27,7 @@ MESSENGER_TRANSPORT_DSN=sync:// ...@@ -27,7 +27,7 @@ MESSENGER_TRANSPORT_DSN=sync://
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
DATABASE_URL="mysql://root:root@db_docker_symfony:3306/wishlist?serverVersion=8.0" DATABASE_URL="mysql://root:hamma@localhost:3306/wishlist?serverVersion=8.0"
###< doctrine/doctrine-bundle ### ###< doctrine/doctrine-bundle ###
APP_SECRET=3d9f431b0fd768e0cb2e8b139c66e9fd67ecbd49762f6a345d459e2f115f61b4 APP_SECRET=3d9f431b0fd768e0cb2e8b139c66e9fd67ecbd49762f6a345d459e2f115f61b4
......
...@@ -22,7 +22,7 @@ class RegistrationController extends AbstractController ...@@ -22,7 +22,7 @@ class RegistrationController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
// Hacher le mot de passe // Hacher le mot de passe
$hashedPassword = $passwordHasher->hashPassword($user, $form->get('password')->getData()); $hashedPassword = $passwordHasher->hashPassword($user, plainPassword: $form->get('plainPassword')->getData());
$user->setPassword($hashedPassword); $user->setPassword($hashedPassword);
// Sauvegarder l'utilisateur // Sauvegarder l'utilisateur
......
...@@ -8,6 +8,9 @@ use Symfony\Component\Routing\Attribute\Route; ...@@ -8,6 +8,9 @@ use Symfony\Component\Routing\Attribute\Route;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\HttpFoundation\Request;
use App\Form\UserType;
final class UserController extends AbstractController final class UserController extends AbstractController
{ {
...@@ -64,4 +67,40 @@ final class UserController extends AbstractController ...@@ -64,4 +67,40 @@ final class UserController extends AbstractController
$this->addFlash('success', 'Wishlist supprimée avec succès.'); $this->addFlash('success', 'Wishlist supprimée avec succès.');
return $this->redirectToRoute('user_dashboard'); 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==null)
{
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