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
code:php:symfony2:parametre [12/11/2015 18:04]
elisabeth [Répertoire des sessions]
code:php:symfony2:parametre [21/04/2016 16:26]
elisabeth
Ligne 52: Ligne 52:
  
 Et ensuite dans le controller on récupère le bon "​entityManager"​ dans le controller comme suit: Et ensuite dans le controller on récupère le bon "​entityManager"​ dans le controller comme suit:
-<code php>+<sxh php; first-line:​80;​ title: UnController.php>
     $em1 = $this->​get('​doctrine'​)->​getEntityManager('​em1'​);​     $em1 = $this->​get('​doctrine'​)->​getEntityManager('​em1'​);​
-</code>+</sxh>
 =====  parameters.yml ===== =====  parameters.yml =====
 <note warning>​Le fichier ''​%%app/​config/​parameters.yml%%''​ contient la valeur des paramètres définis dans ''​%%app/​config/​parameters.yml.dist%%''​. Lors d'un composer install ou update, le fichier ''​%%parameters.yml%%''​ est regénéré en faisant le diff entre la liste de paramètres dans les 2 fichiers. \\ <note warning>​Le fichier ''​%%app/​config/​parameters.yml%%''​ contient la valeur des paramètres définis dans ''​%%app/​config/​parameters.yml.dist%%''​. Lors d'un composer install ou update, le fichier ''​%%parameters.yml%%''​ est regénéré en faisant le diff entre la liste de paramètres dans les 2 fichiers. \\
Ligne 87: Ligne 87:
  
 Pour y accéder dans un controller : Pour y accéder dans un controller :
-<code php>+<sxh php; first-line:​75;​ title: UneController.php>
      ​$options = $this->​container->​getParameter('​options'​);​      ​$options = $this->​container->​getParameter('​options'​);​
      //ou plus court      //ou plus court
      ​$options = $this->​getParameter('​options'​);​      ​$options = $this->​getParameter('​options'​);​
-</code>+</sxh>
 ===== security.yml ===== ===== security.yml =====
 ==== le fichier de configuration ==== ==== le fichier de configuration ====
Ligne 148: Ligne 148:
             iterations: ​      1             iterations: ​      1
 </​code>​ </​code>​
-Bien entendu, suppose qu'on a une entité Utilisateur,​ avec username ​et password ​et des roles.\\ +<note warning>Bien entendu, suppose qu'on a  
-Et qu'on a une action login (accessible à tous dont la route n'est pas restricted/​login mais bien login). ​(Logout et logincheck ​ne sont pas nécessaires).\\ +    * une entité Utilisateur,​ avec usernamepasswordroles... 
-Et quelque part, une méthode pour créer ces utilisateurs.\\+    ​* ​une action ​''​%%login%%'' ​(accessible à tous dont l'​url ​n'est pas du genre restricted/​login mais bien login). ​ 
 +    * une action ''​%%logincheck%%'',​ en fait il faut juste une "​route"​ dans le fichier routing.yml 
 +    * ''​%%logout%%''​ n'​est ​pas nécesssaire
 +    * et quelque part, une méthode pour créer ces utilisateurs. 
 +</​note>​
 ==== L'​entité nécessaire ==== ==== L'​entité nécessaire ====
  
 L'​entité Utilisateur,​ on a forcément les propriétés username, password, salt, roles : L'​entité Utilisateur,​ on a forcément les propriétés username, password, salt, roles :
-<code php>+<sxh php; first-line:​0;​ title: Entity Utilisateur>
 namespace Machin\TrucBundle\Entity;​ namespace Machin\TrucBundle\Entity;​
  
Ligne 203: Ligne 207:
     }     }
 } }
-</code>+</sxh>
 Voir aussi [[http://​symfony.com/​doc/​current/​cookbook/​security/​entity_provider.html]] Voir aussi [[http://​symfony.com/​doc/​current/​cookbook/​security/​entity_provider.html]]
-==== login et accès au User ==== +==== Login et accès au User ==== 
-<code php> +=== Formulaire de login ===
- +
  
 +<sxh php; first-line:​0;​ title: DefaultController.php>​
 namespace Machin\TrucBundle\Controller;​ namespace Machin\TrucBundle\Controller;​
  
Ligne 236: Ligne 239:
         ));         ));
     }     }
-</code>+</sxh> 
 +=== Création d'un utilisateur === 
 +On a intérêt à créer un premier utilisateur(SUPERADMIN) avant de restreindre les droits d'​accès. 
 +<sxh php; first-line:​0;>​  
 +namespace Machin\AdminBundle\Controller;​ 
 + 
 +use Symfony\Bundle\FrameworkBundle\Controller\Controller;​ 
 + 
 +class GestionController extends Controller 
 +
 +    public function AdduserAction(Request $request) 
 +    { 
 +        //Création d'un utilisateur 
 +        $utilisateur = new Operateur();​ 
 + //Creation du formulaire ​ (suppose qu'on a créé une class UtilisateurType 
 + $form = $this->​get('​form.factory'​)->​create(new UtilisateurType(),​ $utilisateur);​ 
 +         
 +        // On fait le lien Requête <-> Formulaire (C'est ce qui est très bizarre!!) 
 +        // À partir de maintenant, l'​objet $utilisateur contient les valeurs entrées dans le formulaire. 
 +        $form->​handleRequest($request);​ 
 +        if ($form->​isValid()) { 
 +              // On l'​enregistre notre objet $utilisateur dans la base de données 
 +              $factory = $this->​get('​security.encoder_factory'​);​ 
 +              $salt =  md5(uniqid(null,​ true)); 
 +       $utilisateur->​setSalt($salt);​ 
 +       $encoder = $factory->​getEncoder($utilisateur);​ 
 +       $password = $utilisateur->​getPassword();​ 
 +       $password = $encoder->​encodePassword($password,​ $salt); 
 +       $utilisateur->​setPassword($password);​ 
 +              $em->​persist($utilisateur);​ 
 +              $em->​flush();​ 
 +              //on redirige 
 +              return $this->​redirect($this->​generateUrl('​machin_admin_utilisateur'​));​ 
 +        } 
 +        //sinon on affiche le formulaire 
 +        return $this->​render('​MachinAdminBundle:​Gestion:​adduser.html.twig'​);​ 
 +    } 
 +
 +</​sxh>​ 
 +=== Accès au user ===
  
 +<sxh php; first-line:​125;​ title: Récupération de l'​utilisateur dans controller>​
 +    // Dans un controller
 +    // Pour récupérer les données de l'​utilisateur authentifié
 +    $user = $this->​get('​security.context'​)->​getToken()->​getUser();​
 +    //ou en plus court
 +    $user = $this->​getUser();​
 +</​sxh>​
 +<sxh html; first-line:​82;​ title: Récupération de l'​utilisateur dans template twig>
 +    # dans une template ​
 +    {{ app.security.getToken().getUser().getUsername() }}
 +    # en plus court
 +    {{ app.user.username}}
 +</​sxh>​
 [[code:​php:​symfony2:​update|Suite - Librairie et Mises à jour]] [[code:​php:​symfony2:​update|Suite - Librairie et Mises à jour]]