From ed3276440c5dca608cb6f0198e5cc757160f74cb Mon Sep 17 00:00:00 2001 From: Christopher Gervais <chris@ergonlogic.com> Date: Wed, 27 Feb 2019 20:37:43 +0000 Subject: [PATCH] Issue #3034235 by llamech, ergonlogic: Use alias redirection target in install login links. --- platform/drupal/install_6.inc | 10 ++++++++-- platform/drupal/install_7.inc | 14 ++++++++++---- platform/drupal/install_8.inc | 9 +++++++-- provision.drush.inc | 9 +++++++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/platform/drupal/install_6.inc b/platform/drupal/install_6.inc index 2a8316f5a..e4000f854 100644 --- a/platform/drupal/install_6.inc +++ b/platform/drupal/install_6.inc @@ -366,8 +366,14 @@ function install_main() { $client_email = install_validate_client_email(drush_get_option('client_email', FALSE)); $account = install_create_admin_user($client_email); - $onetime = user_pass_reset_url($account); - // Store the one time login link in an option so the front end can direct the user to their new site. + + // If a redirect is defined, the symlink to the alias needs to exist before + // we generate the login link, below. + _provision_drupal_maintain_aliases(); + + // Store the one time login link in an option so the front end can direct the + // user to their new site. + $onetime = provision_generate_login_reset(); drush_set_option('login_link', $onetime . '/login'); drush_log(dt('Login url: !onetime', array('!onetime' => $onetime . '/login')), 'success'); diff --git a/platform/drupal/install_7.inc b/platform/drupal/install_7.inc index 73f9aac1b..9efa9264b 100644 --- a/platform/drupal/install_7.inc +++ b/platform/drupal/install_7.inc @@ -158,10 +158,16 @@ function install_main() { _provision_drupal_create_directories(); $account = user_load(1); - $onetime = user_pass_reset_url($account); - // Store the one time login link in an option so the front end can direct the user to their new site. - drush_set_option('login_link', $onetime . '/login'); - drush_log(dt('Login url: !onetime', array('!onetime' => $onetime . '/login')), 'success'); + + // If a redirect is defined, the symlink to the alias needs to exist before + // we generate the login link, below. + _provision_drupal_maintain_aliases(); + + // Store the one time login link in an option so the front end can direct the + // user to their new site. + $onetime = provision_generate_login_reset(); + drush_set_option('login_link', $onetime); + drush_log(dt('Login url: !onetime', array('!onetime' => $onetime)), 'success'); if (drush_get_option('client_email', FALSE)) { install_send_welcome_mail($url, $account, $install_locale, $client_email, $onetime); diff --git a/platform/drupal/install_8.inc b/platform/drupal/install_8.inc index 87f96e2b7..d56c5039b 100644 --- a/platform/drupal/install_8.inc +++ b/platform/drupal/install_8.inc @@ -159,8 +159,13 @@ function install_main() { $account = user_load(1); - $onetime = user_pass_reset_url($account); - // Store the one time login link in an option so the front end can direct the user to their new site. + // If a redirect is defined, the symlink to the alias needs to exist before + // we generate the login link, below. + _provision_drupal_maintain_aliases(); + + // Store the one time login link in an option so the front end can direct the + // user to their new site. + $onetime = provision_generate_login_reset(); drush_set_option('login_link', $onetime); drush_log(dt('Login url: !onetime', array('!onetime' => $onetime)), 'message'); diff --git a/provision.drush.inc b/provision.drush.inc index 81979bc84..128e31601 100644 --- a/provision.drush.inc +++ b/provision.drush.inc @@ -491,3 +491,12 @@ function provision_hosting_feature_enabled($feature) { return array_key_exists($feature, $features) && $features[$feature]; } +/** + * Generate one-time login link + */ +function provision_generate_login_reset() { + $uri = d()->redirection ?: d()->uri; + $result = drush_invoke_process(d()->name, 'user-login', array(), array('uri' => $uri, 'no-browser' => TRUE)); + + return $result['output']; +} -- GitLab