VerifiesEmails.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace Illuminate\Foundation\Auth;
  3. use Illuminate\Auth\Access\AuthorizationException;
  4. use Illuminate\Auth\Events\Verified;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Http\Request;
  7. trait VerifiesEmails
  8. {
  9. use RedirectsUsers;
  10. /**
  11. * Show the email verification notice.
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
  15. */
  16. public function show(Request $request)
  17. {
  18. return $request->user()->hasVerifiedEmail()
  19. ? redirect($this->redirectPath())
  20. : view('auth.verify');
  21. }
  22. /**
  23. * Mark the authenticated user's email address as verified.
  24. *
  25. * @param \Illuminate\Http\Request $request
  26. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
  27. *
  28. * @throws \Illuminate\Auth\Access\AuthorizationException
  29. */
  30. public function verify(Request $request)
  31. {
  32. if (! hash_equals((string) $request->route('id'), (string) $request->user()->getKey())) {
  33. throw new AuthorizationException;
  34. }
  35. if (! hash_equals((string) $request->route('hash'), sha1($request->user()->getEmailForVerification()))) {
  36. throw new AuthorizationException;
  37. }
  38. if ($request->user()->hasVerifiedEmail()) {
  39. return $request->wantsJson()
  40. ? new JsonResponse([], 204)
  41. : redirect($this->redirectPath());
  42. }
  43. if ($request->user()->markEmailAsVerified()) {
  44. event(new Verified($request->user()));
  45. }
  46. if ($response = $this->verified($request)) {
  47. return $response;
  48. }
  49. return $request->wantsJson()
  50. ? new JsonResponse([], 204)
  51. : redirect($this->redirectPath())->with('verified', true);
  52. }
  53. /**
  54. * The user has been verified.
  55. *
  56. * @param \Illuminate\Http\Request $request
  57. * @return mixed
  58. */
  59. protected function verified(Request $request)
  60. {
  61. //
  62. }
  63. /**
  64. * Resend the email verification notification.
  65. *
  66. * @param \Illuminate\Http\Request $request
  67. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
  68. */
  69. public function resend(Request $request)
  70. {
  71. if ($request->user()->hasVerifiedEmail()) {
  72. return $request->wantsJson()
  73. ? new JsonResponse([], 204)
  74. : redirect($this->redirectPath());
  75. }
  76. $request->user()->sendEmailVerificationNotification();
  77. return $request->wantsJson()
  78. ? new JsonResponse([], 202)
  79. : back()->with('resent', true);
  80. }
  81. }