Pour l'authentifier via le CAS, j'utilise le bundle suivant: prayno casauth bundle (https://github.com/PRayno/CasAuthBundle). L'authentification fonctionne bien et je peux récupérer mes droits dans la base de données via doctrine sans souci dans un contrôleur de mon application.
Mon problème est que je n'ai pas accès à doctrine dans le bundle prayno et donc, je ne parviens pas à récupérer mes rôles au moment où je me connecte. Du coup, j'ai lu qu'il fallait appeler le bundle Doctrine qui gère les entités dans le constructeur de la classe afin d'avoir accès au repository. Voici le bout de code qui gère la connexion:
Code : Tout sélectionner
class CasUserProvider implements UserProviderInterface
{
/**
* Provides the authenticated user a ROLE_USER
* @param $username
* @return CasUser
* @throws UsernameNotFoundException
*/
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function loadUserByUsername($username)
{
if ($username) {
$password = '...';
$salt = "";
$this->em->getRepository(FscDroitsBundle::class)->findRights($username);
$roles = array('ROLE_USER');
foreach ($entities as $data) {
array_push($roles, $data->getBundle());
};
return new CasUser($username, $password, $salt, $roles);
}Le souci que j'ai est que je ne vois pas où et comment je dois passer l'argument à ma fonction.Too few arguments to function CasUserProvider::__construct(),
0 passed in and exactly 1 expected.