ForgotAccountController.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Traits\TossTrait;
  6. use App\Http\Traits\CryptTrait;
  7. use App\Models\User;
  8. use App\Models\TossCertLog;
  9. use Exception;
  10. class ForgotAccountController extends Controller
  11. {
  12. use TossTrait, CryptTrait;
  13. public function __construct()
  14. {
  15. $this->middleware('front');
  16. }
  17. /**
  18. * 아이디 찾기
  19. * @method GET
  20. * @see /auth/findID
  21. */
  22. public function index()
  23. {
  24. return view('auth.findID.index', []);
  25. }
  26. /**
  27. * 아이디 찾기 결과
  28. * @method POST
  29. * @see /auth/findID
  30. */
  31. public function store(Request $request, TossCertLog $tossCertLogModel, User $userModel)
  32. {
  33. try {
  34. $token = $request->cookie('tossAccessToken');
  35. if (!$token) {
  36. throw new Exception('토스 인증 절차가 잘못되었습니다. 다시 시도해주세요.');
  37. }
  38. $txId = $request->post('tx_id');
  39. $token = unserialize($token);
  40. // 토스 본인확인 결과 조회
  41. $result = $this->getTossCertResult($token, $txId);
  42. // 토스 인증 결과 기록
  43. $tossCertLogModel->register($result);
  44. unset($request, $txId, $token, $tossCertLogModel);
  45. // 아이디 찾기 결과 보기
  46. return view('auth.findID.result', [
  47. 'user' => $userModel->findUserByTossCI($result->success->personalData->ci)
  48. ]);
  49. } catch (Exception $e) {
  50. return redirect()->route('auth.findID')->withErrors('message', $e->getMessage());
  51. }
  52. }
  53. }