drupal 8 – Redirigir después de iniciar sesión

Pregunta:

Me gustaría redirigir a los usuarios después de que inicien sesión. ¿Es posible usar hook_user_login() para realizar la redirección? ¿Cómo agrego el parámetro para la redirección?

Respuesta:

Debe modificar el formulario de inicio de sesión y agregar un controlador de envío que se encargará de la redirección. No puede usar $form_state->setRedirectUrl() directamente en el formulario alter, ya que UserForm::submitForm() sobrescribirá.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function mymodule_form_user_login_form_alter(&$form, FormStateInterface $form_state) {
  $form['#submit'][] = 'mymodule_user_login_submit';
}

/**
 * Form submission handler for user_login_form().
 *
 * Redirects the user to the dashboard after logging in.
 */
function mymodule_user_login_submit(&$form, FormStateInterface $form_state) {
  $url = Url::fromRoute('mymodule.dashboard');

  // Check if a destination was set, probably on an exception controller.
  // @see \Drupal\user\Form\UserLoginForm::submitForm()
  $request = \Drupal::service('request_stack')->getCurrentRequest();
  if (!$request->request->has('destination')) {
    $form_state->setRedirectUrl($url);
  }
  else {
    $request->query->set('destination', $request->request->get('destination'));
  }
}

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım