PasswordChangeController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers\Account;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Traits\CommonTrait;
  6. use App\Rules\NumberLength;
  7. use App\Rules\SpecialCharLength;
  8. use App\Rules\UppercaseLength;
  9. use App\Models\User;
  10. class PasswordChangeController extends Controller
  11. {
  12. use CommonTrait;
  13. private User $userModel;
  14. public function __construct(User $user)
  15. {
  16. $this->middleware(['front', 'auth']);
  17. $this->userModel = $user;
  18. }
  19. /**
  20. * 비밀번호 변경
  21. * @method GET
  22. * @see /account/password
  23. */
  24. public function index(Request $request)
  25. {
  26. $this->isCertified($request);
  27. $request->session()->reflash();
  28. return view(layout('account.passwordChange'), [
  29. 'menuID' => 'PASSWORD'
  30. ]);
  31. }
  32. /**
  33. * 비밀번호 변경 처리
  34. * @method POST
  35. * @see /account/password/change
  36. */
  37. public function update(Request $request)
  38. {
  39. $request->session()->reflash();
  40. $rules = [
  41. 'password' => [
  42. 'required',
  43. 'confirmed',
  44. new NumberLength,
  45. new SpecialCharLength,
  46. new UppercaseLength
  47. ],
  48. ];
  49. $attributes = [
  50. 'new_password' => '새 비밀번호',
  51. 'new_password_confirmation' => '새 비밀번호 확인'
  52. ];
  53. $posts = $this->validate($request, $rules, [], $attributes);
  54. // 동일 비밀번호 여부 확인
  55. if ($this->passwordAuthed($posts['password'])) {
  56. return back()->withErrors('이전 비밀번호는 사용할 수 없습니다.');
  57. }
  58. $this->userModel->updater(UID, [
  59. 'password' => bcrypt($posts['password']),
  60. 'password_updated_at' => now()
  61. ]);
  62. return redirect()->route('account.profile')->withErrors('비밀번호가 변경되었습니다.');
  63. }
  64. }