Redirection des routes après connexion

Par bldlr, il y a 6 ans


Bonjour,

J'ai créé une fonction roles qui vient s'éxécuter après celle de la connexion car dans ma security.yaml j'emploie default_target_path.

form_login: login_path: connexion check_path: check default_target_path: roles

une fois dans ma fonction roles :

/** * @Route("/roles", name="roles") * */ public function roles(UserRepository $repo) : Response { $user = $this->getUser(); $person = $repo->findOneBy(['id' => ($user->getId())]); if ($user) { $role = $person->getRoles(); if ($role == 'ROLE_ADMIN') { return $this->redirectToRoute('membres'); } else { return $this->redirectToRoute('accueil'); } } }

Il m'est retourné cette erreur (dans l'URL, je suis bien sur /roles)
Return value of App\Controller\UserController::roles() must be an instance of Symfony\Component\HttpFoundation\Response, none returned

Je ne comprends pas, me manque t-il un return ?

Merci par avance pour votre temps ;)

2 réponses

hidestars, il y a 6 ans
if ($user)

Si ton user est null il n'y à en effet pas de return ;)
Donc fais un dump sur ton user mais je pense qu'il est null

bldlr, il y a 6 ans

J'ai trouvé, il fallait écrire

/** * @Route("/roles", name="roles") * */ public function roles() { if ($this->isGranted('ROLE_ADMIN')) { return $this->redirectToRoute('dashboard'); } else{ return $this->redirectToRoute('accueil'); }