WebAuthnDeviceLostController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use DarkGhostHunter\Larapass\Http\SendsWebAuthnRecoveryEmail;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Validation\ValidationException;
  7. class WebAuthnDeviceLostController extends Controller
  8. {
  9. use SendsWebAuthnRecoveryEmail;
  10. /*
  11. |--------------------------------------------------------------------------
  12. | WebAuthn Device Lost Controller
  13. |--------------------------------------------------------------------------
  14. |
  15. | This is a convenience controller that will allow your users who have lost
  16. | their WebAuthn device to register another without using passwords. This
  17. | will send him a link to his email to create new WebAuthn credentials.
  18. |
  19. */
  20. public function __construct()
  21. {
  22. // $this->middleware('guest');
  23. }
  24. /**
  25. * The recovery credentials to retrieve through validation rules.
  26. *
  27. * @return array|string[]
  28. */
  29. protected function recoveryRules(): array
  30. {
  31. return [
  32. 'email' => 'required|exists:users,email',
  33. ];
  34. }
  35. /**
  36. * Get the response for a successful account recovery link.
  37. *
  38. * @param \Illuminate\Http\Request $request
  39. * @param string $response
  40. *
  41. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
  42. */
  43. protected function sendRecoveryLinkResponse(Request $request, string $response)
  44. {
  45. return response()->json(['message' => __('auth.webauthn.account_recovery_email_sent')]);
  46. }
  47. /**
  48. * Get the response for a failed account recovery link.
  49. *
  50. * @param \Illuminate\Http\Request $request
  51. * @param string $response
  52. *
  53. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
  54. * @throws \Illuminate\Validation\ValidationException
  55. */
  56. protected function sendRecoveryLinkFailedResponse(Request $request, string $response)
  57. {
  58. throw ValidationException::withMessages(['email' => [trans($response)]]);
  59. }
  60. }