Outils pour utilisateurs

Outils du site


symfony5:securite_entite_user

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/04 08:44]
marclebrun [Création de l'entité]
— (Version actuelle)
Ligne 1: Ligne 1:
-====== L'​entité User ====== 
- 
-===== Création de l'​entité ===== 
- 
-<code bash> 
-php bin/console make:entity User 
-</​code>​ 
- 
-Fichiers créés : 
- 
-| src/​Entity/​**User**.php | 
-| src/​Repository/​**UserRepository**.php | 
- 
-Ajout des propriétés : 
- 
-^ 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 ''​symfony console make:​entity''​ sur l'​entité **User** et 
-ajouter les champs supplémentaires. 
- 
-==== Note sur le champ ROLES ==== 
- 
-j'ai utilisé le type ''​simple_array''​ plutôt que le type ''​json''​ 
-car sur mon serveur **MariaDB** le type de champ ''​json''​ n'​était 
-pas encore supporté, alors qu'en **MySQL** il existe depuis longtemps... 
- 
-Le champ dans la DB est du type **longtext** et son contenu doit être 
-constitué de chaînes séparées par des virgules, par exemple ''​ROLE_USER,​ROLE_ADMIN''​. 
- 
-==== Implémenter UserInterface ==== 
- 
-Éditer la classe **App\Entity\User** pour qu'​elle implémente l'​interface **UserInterface** : 
- 
-<code php src/​Entity/​User.php>​ 
-// ... 
- 
-use Symfony\Component\Security\Core\User\UserInterface;​ 
- 
-class User implements UserInterface 
-{ 
- 
-    // ... 
-    ​ 
-    // Ajouter ou modifier les fonctions requises : 
-    //​********************************************* 
-    ​ 
-    public function getUsername():​ ?string 
-    { 
-        return $this->​username;​ 
-    } 
-    ​ 
-    public function eraseCredentials() { 
-    ​ 
-    } 
-  
-    public function getSalt() { 
-    ​ 
-    } 
-  
-    public function getRoles() { 
-        $roles = $this->​roles;​ 
-        // guarantee every user at least has ROLE_USER 
-        $roles[] = '​ROLE_USER';​ 
- 
-        return array_unique($roles); ​       ​ 
-    } 
-    ​ 
-} 
-</​code>​ 
- 
-===== Créer la table dans la DB ===== 
- 
-Créer une migration : 
- 
-<code bash> 
-php bin/console make:​migration 
-</​code>​ 
- 
-Appliquer la migration : 
- 
-<code bash> 
-php bin/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>​ 
  
symfony5/securite_entite_user.1617525845.txt.gz · Dernière modification: 2021/04/04 08:44 (modification externe)