X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fmodules%2Fcontrib%2Fsecurity_review%2Fsrc%2FController%2FToggleController.php;fp=web%2Fmodules%2Fcontrib%2Fsecurity_review%2Fsrc%2FController%2FToggleController.php;h=4aca2971c0f594fb3d78e017a580c64edc771fe8;hb=ba1b5c55c66590c41ccc9844d3e62391b0399abb;hp=0000000000000000000000000000000000000000;hpb=93ef30d42f68e55d11d97312531118bbcd4cf318;p=yaffs-website diff --git a/web/modules/contrib/security_review/src/Controller/ToggleController.php b/web/modules/contrib/security_review/src/Controller/ToggleController.php new file mode 100644 index 000000000..4aca2971c --- /dev/null +++ b/web/modules/contrib/security_review/src/Controller/ToggleController.php @@ -0,0 +1,139 @@ +checklist = $checklist; + $this->csrfToken = $csrf_token_generator; + $this->request = $request->getCurrentRequest(); + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('csrf_token'), + $container->get('request_stack'), + $container->get('security_review.checklist') + ); + } + + /** + * 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()) { + drupal_set_message($this->t( + '@name check skipped.', + ['@name' => $check->getTitle()] + )); + } + else { + drupal_set_message($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'); + } + +}