Il y a une erreur au niveau du $this->getRequest()->getSession();
Version imprimable
Il y a une erreur au niveau du $this->getRequest()->getSession();
Ach, c'est probablement parce que le container n'est pas encore affecté au contrôleur...
(voir le code du controler
/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php
et de son parent
/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerAware.php
On peut sans doute magouiller en définissant la variable dans le setContainer plutôt que dans le __construct qui devient inutile :
J'imagine qu'il y a mieux à faire en regardant à quel moment le container est affecté mais là, j'ai pas vraiment le temps de creuser...Code:
1
2
3
4
5
6 public function setContainer(ContainerInterface $container = null) { parent::setContainer($container); $this->session = $this->getRequest()->getSession(); }
Merciiiiiiii.
C'est parfait sa fait exactement ce que je veux.
On vera plus tard l'optimisation je m'en fiche sa marche !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php namespace MeteoApplis\AccueilBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Ldap; use Symfony\Bundle\FrameworkBundle\Controller\Http; use Symfony\Component\DependencyInjection\ContainerInterface; class MetaController extends Controller { public function setContainer(ContainerInterface $container = null) { parent::setContainer($container); $ldap = new Ldap(); $ldap->authenticate($this->getRequest()->server->get('REMOTE_USER')); $user = $ldap->getFirst('cn'); $this->session = $this->getRequest()->getSession(); $this->session->set('user', $user); } }
Après, s'il s'agit d'authentifier l'utilisateur et d'avoir un utilisateur authentifié en session, la meilleure voie est de personnaliser la sécurité symfony (mais faut admettre que c'est un assez gros morceau et que cela peut devenir assez chaud).
Il y en a déjà un bon morceau d'étudié ici
http://www.developpez.net/forums/d12...tion-complete/
L'avantage est qu'ensuite, toutes les fonctionnalités de la sécurité symfony sont utilisables (if... isGranted('ROLE_ADMIN') {), utilisation du paramétrage "contrôle d'accès" dans le security.yml...