giftcon_dev/app/Http/Controllers/Web/Auth/RegisterController.php
2026-01-19 14:45:08 +09:00

73 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers\Web\Auth;
use App\Http\Controllers\Controller;
use App\Repositories\Member\MemberAuthRepository;
use App\Rules\RecaptchaV3Rule;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
public function showStep0()
{
return view('web.auth.register');
}
public function showTerms(Request $request)
{
// Step0 스킵 방지 (최소)
if (($request->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'),
]);
}
}