Merge branch 'main' into Johan

This commit is contained in:
jleroy2023
2024-11-19 14:38:01 +01:00
7 changed files with 83 additions and 7 deletions

View File

@@ -12,6 +12,7 @@ use Symfony\Component\Uid\Uuid;
#[ORM\Entity(repositoryClass: ParticipantRepository::class)]
#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])]
#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_PSEUDO', fields: ['pseudo'])]
class Participant implements UserInterface, PasswordAuthenticatedUserInterface
{
#[ORM\Id]
@@ -26,6 +27,9 @@ class Participant implements UserInterface, PasswordAuthenticatedUserInterface
#[ORM\Column(length: 255)]
private ?string $prenom = null;
#[ORM\Column(length: 255, nullable: false)]
private ?string $pseudo = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $telephone = null;
@@ -76,6 +80,17 @@ class Participant implements UserInterface, PasswordAuthenticatedUserInterface
return $this;
}
public function getPseudo(): ?string
{
return $this->pseudo;
}
public function setPseudo(string $pseudo): self
{
$this->pseudo = $pseudo;
return $this;
}
public function getPrenom(): ?string
{
return $this->prenom;

View File

@@ -39,6 +39,14 @@ class RegistrationFormType extends AbstractType
'placeholder' => 'Prénom',
],
])
->add('pseudo', TextType::class, [
'label' => 'Pseudo',
'label_attr' => ['class' => 'text-gray-700 font-bold'],
'attr' => [
'class' => 'w-full mb-4 px-4 py-2 border-2 border-gray-300 rounded-lg focus:outline-none focus:border-blue-500',
'placeholder' => 'Pseudo',
],
])
->add('nom', TextType::class, [
'label' => 'Nom',
'label_attr' => ['class' => 'text-gray-700 font-bold'],

View File

@@ -0,0 +1,45 @@
<?php
namespace App\Security;
use App\Entity\Participant;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
//use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
class UserProvider implements UserProviderInterface
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function loadUserByIdentifier(string $username): UserInterface
{
// Cherche par email ou pseudo
$user = $this->entityManager->getRepository(Participant::class)
->findOneBy(['email' => $username]) // Cherche par email
?? $this->entityManager->getRepository(Participant::class)
->findOneBy(['pseudo' => $username]); // Ou par pseudo
if (!$user) {
throw new UsernameNotFoundException('Utilisateur non trouvé');
}
return $user;
}
public function refreshUser(UserInterface $user): UserInterface
{
// Permet de rafraîchir les données d'un utilisateur (pas toujours nécessaire)
return $user;
}
public function supportsClass(string $class): bool
{
return Participant::class === $class;
}
}