Outils pour utilisateurs

Outils du site


symfony5:securite_entite_user

Création de l'entité User

Création de l'entité

symfony console make:user
  • The name of the security user class: User
  • Do you want to store user data in the database: Yes
  • Enter a property name that will be the unique “display” name for the user: email
  • Does this app need to hash/check user password? yes

Fichiers créés :

Création src/Entity/User.php
Création src/Repository/UserRepository.php
Mise à jour config/packages/security.yaml

Propriétés de l'entité :

Nom Type
id integer
email string
roles json
password string

Ensuite pour ajouter d'autres champs à l'entité, il suffit de refaire la commande

symfony console make:entity

Sélectionner l'entité User, et ajouter les champs supplémentaires.

Créer la table dans la DB

Créer une migration :

symfony console make:migration

Appliquer la migration :

symfony console doctrine:migrations:migrate

Fixtures

symfony console make:fixtures
Class name UserFixtures
src/DataFixtures/UserFixtures.php
<?php
 
namespace App\DataFixtures;
 
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
 
class UserFixtures extends Fixture
{
  private $encoder;
 
  public function __construct(
    UserPasswordEncoderInterface $encoder
  ) {
    $this->encoder = $encoder;
  }
 
  public function load(ObjectManager $manager)
  {
    $user = new User();
    $user->setEmail('bubule@email.com');
    $user->setPassword($this->encoder->encodePassword($user, 'x'));
    $user->setRoles(['ROLE_USER', 'ROLE_ADMIN']);
 
    $manager->persist($user);
    $manager->flush();
  }
}

Appliquer les fixtures :

symfony console doctrine:fixtures:load
symfony5/securite_entite_user.txt · Dernière modification: 2021/04/10 06:12 (modification externe)