php - symfony redirect user after authentication -
i have 2 bundles userbundle , xxxbundle. want after authenticating user in user bundle redirect xxxbundle. but, depending on roles (role_admin , role_user), redirect him 2 different routes (route1, route2).
i added controller userbundle
class securitycontroller extends controller { public function loginaction() { if ($this->get('security.context')->isgranted('role_admin')) { return $this->redirect($this->generateurl('route1')); } if ($this->get('security.context')->isgranted('role_user')) { return $this->redirect($this->generateurl('route2')); } $request = $this->getrequest(); $session = $request->getsession(); // on vérifie s'il y des erreurs d'une précédent soumission du formulaire if ($request->attributes->has(securitycontext::authentication_error)) { $error = $request->attributes->get(securitycontext::authentication_error); } else { $error = $session->get(securitycontext::authentication_error); $session->remove(securitycontext::authentication_error); } return $this->render('userbundle:security:login.html.twig', array( // valeur du précédent nom d'utilisateur rentré par l'internaute 'last_username' => $session->get(securitycontext::last_username), 'error' => $error, )); }
but, not give appropriate result: correct username , password, user redirected welcome symfony page. have explanation that?
i found in symfony documentation can control redirect login form using hiddden field follow:
{# src/acme/securitybundle/resources/views/security/login.html.twig #} {% if error %} <div>{{ error.message }}</div> {% endif %} <form action="{{ path('login_check') }}" method="post"> <label for="username">username:</label> <input type="text" id="username" name="_username" value="{{ last_username }}" /> <label for="password">password:</label> <input type="password" id="password" name="_password" /> <input type="hidden" name="_target_path" value="account" /> <input type="submit" name="login" /> </form>
question : how parametrise route responsible user , admin.
use _target_path
input field , direct authenticated user route controller you. inside controller check role of user , forward controller based upon that.
Comments
Post a Comment