class PrlpController in Password Reset Landing Page (PRLP) 8
Controller routines for prlp routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\user\Controller\UserController
- class \Drupal\prlp\Controller\PrlpController
- class \Drupal\user\Controller\UserController
Expanded class hierarchy of PrlpController
File
- src/
Controller/ PrlpController.php, line 14
Namespace
Drupal\prlp\ControllerView source
class PrlpController extends UserController {
/**
* Override resetPassLogin() to redirect to the configured path.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request.
* @param int $uid
* User ID of the user requesting reset.
* @param int $timestamp
* The current timestamp.
* @param string $hash
* Login link hash.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* Returns parent result object.
*/
public function prlpResetPassLogin(Request $request, $uid, $timestamp, $hash) {
$response = parent::resetPassLogin($uid, $timestamp, $hash);
try {
// Deconstruct the redirect url from the response.
$parsed_url = parse_url($response
->getTargetUrl());
$response_route = Url::fromUserInput($parsed_url['path']);
// Check that the response route matches the "success" route from core and
// if it does apply the password change and update the redirect
// destination.
if ($response_route && $response_route
->getRouteName() == 'entity.user.edit_form') {
if ($request->request
->has('pass') && ($passwords = $request->request
->get('pass'))) {
// $passwords should be an array, if that's not the case nothing
// should be done to the user.
$pass = is_array($passwords) ? reset($passwords) : NULL;
if (!empty($pass)) {
/** @var \Drupal\user\UserInterface $user */
$user = $this->userStorage
->load($uid);
$user
->setPassword($pass);
$user
->save();
$this
->messenger()
->deleteByType(MessengerInterface::TYPE_STATUS);
$this
->messenger()
->addStatus($this
->t('Your new password has been saved.'));
}
}
$login_destination = $this
->config('prlp.settings')
->get('login_destination');
if (!$login_destination) {
$login_destination = '/user/%user/edit';
}
$login_destination = str_replace('%user', $uid, $login_destination);
$login_destination = str_replace('%front', $this
->config('system.site')
->get('page.front'), $login_destination);
if (substr($login_destination, 0, 1) !== '/') {
$login_destination = '/' . $login_destination;
}
return new RedirectResponse($login_destination);
}
} catch (\InvalidArgumentException $exception) {
// This exception is an edge case scenario thrown by Url::fromUserInput()
// Should fromUserInput() throw this treat it as a failed authentication
// and log the user out then clear success messages and add a failure
// message.
user_logout();
$this
->messenger()
->deleteAll();
$this
->messenger()
->addError($this
->t('You have tried to use a one-time login link that has either been used or is no longer valid. Please request a new one using the form below.'));
}
return $this
->redirect('user.pass');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PrlpController:: |
public | function | Override resetPassLogin() to redirect to the configured path. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. | |
UserController:: |
protected | property | The date formatter service. | |
UserController:: |
protected | property | The flood service. | |
UserController:: |
protected | property | A logger instance. | |
UserController:: |
protected | property | The user data service. | |
UserController:: |
protected | property | The user storage. | |
UserController:: |
public | function | Confirms cancelling a user account via an email link. | |
UserController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
UserController:: |
public | function | Returns the user password reset form. | |
UserController:: |
public | function | Logs the current user out. | |
UserController:: |
public | function | Redirects to the user password reset form. | |
UserController:: |
public | function | Validates user, hash, and timestamp; logs the user in if correct. | |
UserController:: |
public | function | Redirects users to their profile edit page. | |
UserController:: |
public | function | Redirects users to their profile page. | |
UserController:: |
public | function | Route title callback. | |
UserController:: |
public | function | Constructs a UserController object. |