PasswordController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Auth\Events\PasswordReset;
  5. use Illuminate\Foundation\Auth\ResetsPasswords;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Hash;
  9. use Illuminate\Support\Str;
  10. class PasswordController extends Controller
  11. {
  12. /**
  13. * Where to redirect users after resetting their password.
  14. *
  15. * @var string
  16. */
  17. protected $redirectTo = '/home';
  18. /**
  19. * Create a new controller instance.
  20. *
  21. * @return void
  22. */
  23. public function __construct()
  24. {
  25. $this->middleware('auth');
  26. }
  27. public function change()
  28. {
  29. return view('auth.passwords.change');
  30. }
  31. public function update(Request $request)
  32. {
  33. $user=Auth::user();
  34. $request->validate($this->rules(), $this->validationErrorMessages());
  35. $user->password = Hash::make($request->input('password'));
  36. $user->setRememberToken(Str::random(60));
  37. $user->save();
  38. event(new PasswordReset($user));
  39. Auth::guard()->login($user);
  40. return view('auth.passwords.changed');
  41. }
  42. protected function rules()
  43. {
  44. return [
  45. 'old_password' => ['required',function($attr,$val,$fail){
  46. $oldPwd=Auth::user()['password'];
  47. if(!Hash::check($val,$oldPwd)){
  48. $fail('旧密码输入不匹配');
  49. }
  50. }],
  51. 'password' => 'required|confirmed|min:8',
  52. ];
  53. }
  54. /**
  55. * Get the password reset validation error messages.
  56. *
  57. * @return array
  58. */
  59. protected function validationErrorMessages()
  60. {
  61. return [
  62. 'old_password.required'=>'请输入正确的旧密码',
  63. 'password.required'=>'不得为空',
  64. 'password.min'=>'密码至少要输入 :min 位或以上',
  65. 'password.confirmed'=>'两次密码必须一致'
  66. ];
  67. }
  68. }