class ToggleController in Security Review 8
Responsible for handling the toggle links on the Run & Review page.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\security_review\Controller\ToggleController
Expanded class hierarchy of ToggleController
File
- src/
Controller/ ToggleController.php, line 17
Namespace
Drupal\security_review\ControllerView source
class ToggleController extends ControllerBase {
/**
* The security_review.checklist service.
*
* @var \Drupal\security_review\Checklist
*/
protected $checklist;
/**
* The CSRF Token generator.
*
* @var \Drupal\Core\Access\CsrfTokenGenerator $csrfToken
*/
protected $csrfToken;
/**
* The request stack.
*
* @var \Symfony\Component\HttpFoundation\Request $request
*/
protected $request;
/**
* Constructs a ToggleController.
*
* @param \Drupal\Core\Access\CsrfTokenGenerator $csrf_token_generator
* The CSRF Token generator.
* @param \Symfony\Component\HttpFoundation\RequestStack $request
* The request stack.
* @param \Drupal\security_review\Checklist $checklist
* The security_review.checklist service.
* @param \Drupal\Core\Messenger\MessengerInterface $messenger
* The messenger service.
*/
public function __construct(CsrfTokenGenerator $csrf_token_generator, RequestStack $request, Checklist $checklist, MessengerInterface $messenger) {
$this->checklist = $checklist;
$this->csrfToken = $csrf_token_generator;
$this->request = $request
->getCurrentRequest();
$this->messenger = $messenger;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('csrf_token'), $container
->get('request_stack'), $container
->get('security_review.checklist'), $container
->get('messenger'));
}
/**
* Handles check toggling.
*
* @param string $check_id
* The ID of the check.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse
* The response.
*/
public function index($check_id) {
// Determine access type.
$ajax = $this->request->query
->get('js') == 1;
// Validate token.
$token = $this->request->query
->get('token');
if ($this->csrfToken
->validate($token, $check_id)) {
// Toggle.
$check = $this->checklist
->getCheckById($check_id);
if ($check != NULL) {
if ($check
->isSkipped()) {
$check
->enable();
}
else {
$check
->skip();
}
}
// Output.
if ($ajax) {
return new JsonResponse([
'skipped' => $check
->isSkipped(),
'toggle_text' => $check
->isSkipped() ? $this
->t('Enable') : $this
->t('Skip'),
'toggle_href' => Url::fromRoute('security_review.toggle', [
'check_id' => $check
->id(),
], [
'query' => [
'token' => $this->csrfToken
->get($check
->id()),
'js' => 1,
],
])
->toString(),
]);
}
else {
// Set message.
if ($check
->isSkipped()) {
$this
->messenger()
->addMessage($this
->t('@name check skipped.', [
'@name' => $check
->getTitle(),
]));
}
else {
$this
->messenger()
->addMessage($this
->t('@name check no longer skipped.', [
'@name' => $check
->getTitle(),
]));
}
// Redirect back to Run & Review.
return $this
->redirect('security_review');
}
}
// Go back to Run & Review if the access was wrong.
return $this
->redirect('security_review');
}
}
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. | |
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. | |
ToggleController:: |
protected | property | The security_review.checklist service. | |
ToggleController:: |
protected | property | The CSRF Token generator. | |
ToggleController:: |
protected | property | The request stack. | |
ToggleController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
ToggleController:: |
public | function | Handles check toggling. | |
ToggleController:: |
public | function | Constructs a ToggleController. | |
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. |