Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
symfony5:securite_entite_user [2021/04/05 15:39] marclebrun [Création de l'entité] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Création de l'entité User ====== | ||
- | |||
- | ===== Création de l'entité ===== | ||
- | |||
- | <code bash> | ||
- | symfony console make:user | ||
- | </code> | ||
- | |||
- | * 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 ^ Longueur ^ Nullable ^ | ||
- | | email | string | 255 | Non | | ||
- | | username | string | 255 | Non | | ||
- | | roles | simple_array | | Non | | ||
- | | password | string | 255 | Non | | ||
- | |||
- | Ensuite pour ajouter d'autres champs à l'entité, il suffit de refaire la | ||
- | commande | ||
- | <code bash>symfony console make:entity</code> | ||
- | sur l'entité **User** et ajouter les champs supplémentaires. | ||
- | |||
- | ===== Créer la table dans la DB ===== | ||
- | |||
- | Créer une migration : | ||
- | |||
- | <code bash> | ||
- | symfony console make:migration | ||
- | </code> | ||
- | |||
- | Appliquer la migration : | ||
- | |||
- | <code bash> | ||
- | symfony console doctrine:migrations:migrate | ||
- | </code> | ||
- | |||
- | ===== Fixture ===== | ||
- | |||
- | **AVANT D'APPLIQUER CETTE FIXTURE, IL FAUT D'ABORD AVOIR CONFIGURÉ | ||
- | L'ENCODAGE DES MOTS DE PASSE !!!** | ||
- | |||
- | <code php 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(); | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | Pour rappel, appliquer les fixtures se fait par cette commande : | ||
- | |||
- | <code bash> | ||
- | php bin/console doctrine:fixtures:load | ||
- | </code> | ||