session()->get('signup.step') ?? 0) < 1) { return redirect()->route('web.auth.register'); } return view('web.auth.register_terms'); } public function postPhoneCheck(Request $request, MemberAuthRepository $repo) { $v = Validator::make($request->all(), [ 'phone' => ['required', 'string', 'max:20'], 'g-recaptcha-response' => ['required', new RecaptchaV3Rule('register_phone_check')], ], [ 'phone.required' => '휴대폰 번호를 입력해 주세요.', 'g-recaptcha-response.required' => '보안 검증에 실패했습니다. 다시 시도해 주세요.', ]); if ($v->fails()) { return response()->json(['ok' => false, 'message' => $v->errors()->first()], 422); } $ip4 = $request->ip() ?: ''; $result = $repo->step0PhoneCheck((string)$request->input('phone'), $ip4); if (!$result['ok']) { $status = ($result['reason'] ?? '') === 'blocked' ? 403 : 422; return response()->json(['ok' => false, 'message' => $result['message'] ?? '처리 실패'], $status); } if (($result['reason'] ?? '') === 'already_member') { return response()->json([ 'ok' => true, 'reason' => 'already_member', 'redirect' => route('web.auth.find_id'), ]); } $request->session()->put('signup.phone', $result['phone']); $request->session()->put('signup.step', 1); $request->session()->put('signup.ip4', $ip4); $request->session()->put('signup.ip4_c', $repo->ipToCClass($ip4)); $request->session()->put('signup.checked_at', now()->toDateTimeString()); return response()->json([ 'ok' => true, 'reason' => 'ok', 'redirect' => route('web.auth.register.terms'), ]); } }