diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index 7ce8d6e5..5c7a2262 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -205,11 +205,36 @@ class SecurityController extends AbstractController $entityManager->flush(); $this->addFlash('success', 'tfa.u2f.u2f_delete.success'); } + } else { + $this->addFlash('error','csfr_invalid'); } return $this->redirectToRoute('user_settings'); } + /** + * @Route("/user/invalidate_trustedDevices", name="tfa_trustedDevices_invalidate", methods={"DELETE"}) + */ + public function resetTrustedDevices(Request $request, EntityManagerInterface $entityManager) + { + $user = $this->getUser(); + if (!$user instanceof User) { + return new \RuntimeException('This controller only works only for Part-DB User objects!'); + } + //When user change its settings, he should be logged in fully. + $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); + + if ($this->isCsrfTokenValid('devices_reset'.$user->getId(), $request->request->get('_token'))) { + $user->invalidateTrustedDeviceTokens(); + $entityManager->flush(); + $this->addFlash('success', 'tfa_trustedDevice.invalidate.success'); + } else { + $this->addFlash('error','csfr_invalid'); + } + + return $this->redirectToRoute('user_settings'); + } + /** * @Route("/logout", name="logout") */ diff --git a/templates/Users/_2fa_settings.html.twig b/templates/Users/_2fa_settings.html.twig index d2598335..037d3456 100644 --- a/templates/Users/_2fa_settings.html.twig +++ b/templates/Users/_2fa_settings.html.twig @@ -20,6 +20,10 @@ {% trans %}tfa.settings.u2f.tab{% endtrans %} +
@@ -132,6 +136,17 @@ {% trans %}tfa_u2f.add_new_key{% endtrans %}
+
+

{% trans %}tfa_trustedDevices.explanation{% endtrans %}

+
+ + + + +
+
+