name('web.home'); /* |-------------------------------------------------------------------------- | CS |-------------------------------------------------------------------------- */ Route::prefix('cs')->name('web.cs.')->group(function () { Route::get('/notice', [NoticeController::class, 'index'])->name('notice.index'); Route::get('/notice/{seq}', [NoticeController::class, 'show'])->whereNumber('seq')->name('notice.show'); Route::view('faq', 'web.cs.faq.index')->name('faq.index'); Route::view('kakao', 'web.cs.kakao.index')->name('kakao.index'); Route::view('qna', 'web.cs.qna.index')->name('qna.index'); Route::view('guide', 'web.cs.guide.index')->name('guide.index'); }); /* |-------------------------------------------------------------------------- | My Page |-------------------------------------------------------------------------- */ Route::prefix('mypage')->name('web.mypage.')->group(function () { Route::view('info', 'web.mypage.info.index')->name('info.index'); Route::view('usage', 'web.mypage.usage.index')->name('usage.index'); Route::view('exchange', 'web.mypage.exchange.index')->name('exchange.index'); Route::view('qna', 'web.mypage.qna.index')->name('qna.index'); }); /* |-------------------------------------------------------------------------- | Policy |-------------------------------------------------------------------------- */ Route::prefix('policy')->name('web.policy.')->group(function () { Route::view('/', 'web.policy.index')->name('index'); Route::view('privacy', 'web.policy.privacy.index')->name('privacy.index'); Route::view('terms', 'web.policy.terms.index')->name('terms.index'); Route::view('email', 'web.policy.email.index')->name('email.index'); }); /* |-------------------------------------------------------------------------- | Auth |-------------------------------------------------------------------------- */ Route::prefix('auth')->name('web.auth.')->group(function () { // 정적 페이지 Route::view('login', 'web.auth.login')->name('login'); // 회원가입 Step0 Route::get('register', [RegisterController::class, 'showStep0'])->name('register'); Route::post('register/phone-check', [RegisterController::class, 'postPhoneCheck'])->name('register.phone_check'); // Step1(약관) - 지금은 임시 화면 Route::get('register/terms', [RegisterController::class, 'showTerms'])->name('register.terms'); Route::post('register/terms', [RegisterController::class, 'termsSubmit'])->name('register.terms.submit'); // Step2 다날 인증 시작 화면 Route::post('register/danal/start', [RegisterController::class, 'danalStart'])->name('register.danal.start'); // iframe에서 로드될 페이지 Route::post('register/danal/result', [RegisterController::class, 'danalResult'])->name('register.danal.result'); // 다날 pass 결과 리턴 // Step3 회원정보 입력 Route::get('register/profile', [RegisterController::class, 'showProfileForm'])->name('register.profile'); Route::post('register/profile', [RegisterController::class, 'submitProfile'])->name('register.profile.submit'); // 아이디 찾기 (컨트롤러) Route::get('find-id', [FindIdController::class, 'show'])->name('find_id'); Route::post('find-id/send-code',[FindIdController::class, 'sendCode'])->name('find_id.send_code'); Route::post('find-id/verify', [FindIdController::class, 'verify'])->name('find_id.verify'); Route::post('find-id/reset', [FindIdController::class, 'reset'])->name('find_id.reset'); // 비밀번호 찾기 (컨트롤러) Route::get('find-password', [FindPasswordController::class, 'show'])->name('find_password'); Route::post('find-password/send-code', [FindPasswordController::class, 'sendCode'])->name('find_password.send_code'); Route::post('find-password/verify', [FindPasswordController::class, 'verify'])->name('find_password.verify'); Route::post('find-password/reset', [FindPasswordController::class, 'reset'])->name('find_password.reset'); Route::post('find-password/reset-session', [FindPasswordController::class, 'resetSession'])->name('find_password.reset_session'); }); /* |-------------------------------------------------------------------------- | Legacy redirects |-------------------------------------------------------------------------- */ Route::get('/login', fn() => redirect()->route('web.auth.login'))->name('web.login'); Route::get('/register', fn() => redirect()->route('web.auth.register'))->name('web.signup'); // Dev Lab (로컬에서만 + 파일 존재할 때만 라우트 등록) if (app()->environment(['local', 'development', 'testing']) && class_exists(\App\Http\Controllers\Dev\DevLabController::class)) { Route::prefix('__dev')->name('dev.')->group(function () { Route::get('/lab', [\App\Http\Controllers\Dev\DevLabController::class, 'index'])->name('lab'); Route::post('/lab/mail', [\App\Http\Controllers\Dev\DevLabController::class, 'mail'])->name('lab.mail'); Route::post('/lab/mail-raw', [\App\Http\Controllers\Dev\DevLabController::class, 'mailRaw'])->name('lab.mail_raw'); Route::post('/lab/sms', [\App\Http\Controllers\Dev\DevLabController::class, 'sms'])->name('lab.sms'); Route::post('/lab/db', [\App\Http\Controllers\Dev\DevLabController::class, 'db'])->name('lab.db'); Route::post('/lab/session/set', [\App\Http\Controllers\Dev\DevLabController::class, 'sessionSet'])->name('lab.session.set'); Route::post('/lab/session/get', [\App\Http\Controllers\Dev\DevLabController::class, 'sessionGet'])->name('lab.session.get'); Route::post('/lab/session/forget', [\App\Http\Controllers\Dev\DevLabController::class, 'sessionForget'])->name('lab.session.forget'); Route::post('/lab/session/flush', [\App\Http\Controllers\Dev\DevLabController::class, 'sessionFlush'])->name('lab.session.flush'); }); } /* 개발용 페이지 세션 보기*/ use Illuminate\Http\Request; Route::post('_dev/session', function (Request $request) { abort_unless(config('app.debug') || app()->environment('local'), 404); $action = (string) $request->input('_dev_sess_action', ''); // ✅ 자동 타입 변환(익명 함수라 재선언 문제 없음) $parse = function (string $raw) { $s = trim($raw); $lower = strtolower($s); if ($lower === 'true') return true; if ($lower === 'false') return false; if ($lower === 'null') return null; // 정수 if (preg_match('/^-?\d+$/', $s)) { // 앞자리 0이 있는 값(예: 00123)은 문자열 유지하고 싶으면 아래 조건 추가 // if (strlen($s) > 1 && $s[0] === '0') return $raw; $int = (int) $s; if ((string)$int === $s) return $int; } // 실수 if (preg_match('/^-?\d+\.\d+$/', $s)) { return (float) $s; } // JSON if ($s !== '' && (str_starts_with($s, '{') || str_starts_with($s, '['))) { $j = json_decode($s, true); if (json_last_error() === JSON_ERROR_NONE) return $j; } return $raw; }; if ($action === 'flush') { session()->flush(); session()->save(); } elseif ($action === 'put') { $k = trim((string) $request->input('_dev_sess_key', '')); $raw = (string) $request->input('_dev_sess_value', ''); if ($k !== '') { session()->put($k, $parse($raw)); session()->save(); } } return redirect()->to((string) $request->input('_dev_return', '/')); })->name('dev.session'); /* 개발용 페이지 세션 보기*/ Route::fallback(fn () => abort(404));