Outils pour utilisateurs

Outils du site


symfony5:securite_entite_user

Ceci est une ancienne révision du document !


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

Fixture

src/DataFixtures/UserFixtures.php
<?php
 
namespace App\DataFixtures;
 
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\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->setUserName('Bubule');
        $user->setEmail('bubule@mail.com');
        $user->setPassword($this->encoder->encodePassword($user, 'testtest'));
        $user->setRoles(['ROLE_USER', 'ROLE_ADMIN']);
 
        $manager->persist($user);
        $manager->flush();
    }
}

Pour rappel, appliquer les fixtures se fait par cette commande :

symfony console doctrine:fixtures:load
symfony5/securite_entite_user.1617647704.txt.gz · Dernière modification: 2021/04/05 18:35 par marclebrun