73 lines
2.4 KiB
PHP
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'),
|
|
]);
|
|
}
|
|
|
|
}
|