ResetPasswordController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Username;
  5. use Illuminate\Foundation\Auth\ResetsPasswords;
  6. use Illuminate\Http\Request;
  7. class ResetPasswordController extends Controller
  8. {
  9. /*
  10. |--------------------------------------------------------------------------
  11. | Password Reset Controller
  12. |--------------------------------------------------------------------------
  13. |
  14. | This controller is responsible for handling password reset requests
  15. | and uses a simple trait to include this behavior. You're free to
  16. | explore this trait and override any methods you wish to tweak.
  17. |
  18. */
  19. use ResetsPasswords;
  20. /**
  21. * Where to redirect users after resetting their password.
  22. *
  23. * @var string
  24. */
  25. protected $redirectTo = '/';
  26. /**
  27. * Create a new controller instance.
  28. *
  29. * @return void
  30. */
  31. public function __construct()
  32. {
  33. $this->middleware('guest');
  34. }
  35. /**
  36. * Display the password reset view for the given token.
  37. *
  38. * If no token is present, display the link request form.
  39. *
  40. * @param \Illuminate\Http\Request $request
  41. * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  42. */
  43. public function showResetForm(Request $request)
  44. {
  45. $token = $request->route()->parameter('token');
  46. return view('auth.passwords.reset')->with(
  47. ['token' => $token, 'username' => $request->username]
  48. );
  49. }
  50. /**
  51. * Get the password reset validation rules.
  52. *
  53. * @return array
  54. */
  55. protected function rules()
  56. {
  57. return [
  58. 'token' => 'required',
  59. 'username' => 'required|regex:/^[a-zA-Z0-9]*$/|max:20',
  60. 'password' => 'required|confirmed|min:8',
  61. ];
  62. }
  63. /**
  64. * Get the password reset credentials from the request.
  65. *
  66. * @param \Illuminate\Http\Request $request
  67. * @return array
  68. */
  69. protected function credentials(Request $request)
  70. {
  71. // Find the user_id and use that for the credentials
  72. $userId = Username::firstWhere('username', $request->username)?->user_id;
  73. $request->merge(['id' => $userId]);
  74. return $request->only(
  75. 'id',
  76. 'password',
  77. 'password_confirmation',
  78. 'token'
  79. );
  80. }
  81. /**
  82. * Get the response for a failed password reset.
  83. *
  84. * @param \Illuminate\Http\Request $request
  85. * @param string $response
  86. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
  87. */
  88. protected function sendResetFailedResponse(Request $request, $response)
  89. {
  90. return back()
  91. ->withInput($request->only('username'))
  92. ->withErrors(['username' => trans($response)]);
  93. }
  94. }