public UserController::resetPass(Request$request, $uid, $timestamp, $hash)
Redirects to the user password reset form.
In order to never disclose a reset link via a referrer header this controller must always return a redirect response.
Parameters
\Symfony\Component\HttpFoundation\Request $request: The request.
int $uid: User ID of the user requesting reset.
int $timestamp: The current timestamp.
string $hash: Login link hash.
Return value
\Symfony\Component\HttpFoundation\RedirectResponse The redirect response.
File
- core/modules/user/src/Controller/UserController.php, line 100
Class
- UserController
- Controller routines for user routes.
Namespace
Drupal\user\Controller
Code
public function resetPass(Request $request, $uid, $timestamp, $hash) { $account = $this->currentUser(); // When processing the one-time login link, we have to make sure that a user // isn't already logged in. if ($account->isAuthenticated()) { // The current user is already logged in. if ($account->id() == $uid) { user_logout(); // We need to begin the redirect process again because logging out will // destroy the session. return $this->redirect( 'user.reset', [ 'uid' => $uid, 'timestamp' => $timestamp, 'hash' => $hash, ] ); } // A different user is already logged in on the computer. else { /** @var \Drupal\user\UserInterface $reset_link_user */ if ($reset_link_user = $this->userStorage->load($uid)) { drupal_set_message($this->t('Another user (%other_user) is already logged into the site on this computer, but you tried to use a one-time link for user %resetting_user. Please <a href=":logout">log out</a> and try using the link again.', array('%other_user' => $account->getUsername(), '%resetting_user' => $reset_link_user->getUsername(), ':logout' => $this->url('user.logout'))), 'warning'); } else { // Invalid one-time link specifies an unknown user. drupal_set_message($this->t('The one-time login link you clicked is invalid.'), 'error'); } return $this->redirect('<front>'); } } $session = $request->getSession(); $session->set('pass_reset_hash', $hash); $session->set('pass_reset_timeout', $timestamp); return $this->redirect( 'user.reset.form', ['uid' => $uid] ); }
Please login to continue.