233 lines
11 KiB
PHP
233 lines
11 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
use App\Http\Controllers\Web\Auth\FindIdController;
|
|
use App\Http\Controllers\Web\Auth\FindPasswordController;
|
|
use App\Http\Controllers\Web\Auth\RegisterController;
|
|
use App\Http\Controllers\Web\Auth\LoginController;
|
|
use App\Http\Controllers\Web\Mypage\InfoGateController;
|
|
use App\Http\Controllers\Web\Cs\NoticeController;
|
|
use App\Http\Controllers\Web\Auth\EmailVerificationController;
|
|
|
|
|
|
Route::view('/', 'web.home')->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')->middleware('legacy.auth');
|
|
Route::view('guide', 'web.cs.guide.index')->name('guide.index');
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| My Page
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
// 전체 로그인필요
|
|
Route::prefix('mypage')->name('web.mypage.')
|
|
->middleware('legacy.auth')
|
|
->group(function () {
|
|
Route::get('info', [InfoGateController::class, 'show'])->name('info.index');
|
|
Route::post('info', [InfoGateController::class, 'verify'])->name('info.verify');
|
|
|
|
Route::get('info_renew', [InfoGateController::class, 'info_renew'])->name('info.renew');
|
|
Route::post('info/password-update', [InfoGateController::class, 'passwordUpdate'])->name('info.password.update');
|
|
Route::post('info/pin2', [InfoGateController::class, 'updatePin2'])->name('info.pin2.update');
|
|
Route::post('info/pass/ready', [InfoGateController::class, 'passReady'])->name('info.pass.ready');
|
|
Route::post('info/danal/start', [InfoGateController::class, 'danalStart'])->name('info.danal.start');
|
|
Route::post('info/danal/result', [InfoGateController::class, 'danalResult'])->name('info.danal.result');
|
|
Route::get('info/gate-reset', [InfoGateController::class, 'gateReset'])->name('info.gate_reset');
|
|
Route::post('info/withdraw/verify-out', [InfoGateController::class, 'verifyOut'])->name('info.withdraw.verify_out');
|
|
Route::post('info/marketing/update', [InfoGateController::class, 'marketingUpdate'])->name('info.marketing.update');
|
|
Route::post('info/withdraw', [InfoGateController::class, 'withdraw'])->name('info.withdraw');
|
|
|
|
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::middleware('legacy.guest')->group(function () {
|
|
// 로그인
|
|
Route::get('login', [LoginController::class, 'show'])->name('login');
|
|
Route::post('login', [LoginController::class, 'prc'])->name('login.prc');
|
|
Route::get('login/dormancy-prc', [LoginController::class, 'dormancyPrc'])->name('login.dormancy_prc');
|
|
|
|
// 회원가입 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');
|
|
Route::post('register/danal/result', [RegisterController::class, 'danalResult'])->name('register.danal.result');
|
|
|
|
// Step3 회원정보 입력
|
|
Route::get('register/profile', [RegisterController::class, 'showProfileForm'])->name('register.profile');
|
|
Route::post('register/profile', [RegisterController::class, 'submitProfile'])->name('register.profile.submit');
|
|
Route::post('register/check-login-id', [RegisterController::class, 'checkLoginId'])->name('register.check_login_id');
|
|
|
|
// 회원가입 디버그용
|
|
Route::get('register/profile/debug', [RegisterController::class, 'debugProfile'])->name('register.profile.debug');
|
|
Route::post('register/profile/debug/run', [RegisterController::class, 'debugProfileRun'])->name('register.profile.debug.run');
|
|
|
|
// 아이디 찾기
|
|
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.show');
|
|
Route::post('find-password/send-mail', [FindPasswordController::class, 'sendMail'])->name('find_password.send_mail');
|
|
Route::get('find-password/verify', [FindPasswordController::class, 'verifyLink'])->name('find_password.verify')->middleware('signed');
|
|
Route::post('find-password/reset', [FindPasswordController::class, 'reset'])->name('find_password.reset');
|
|
|
|
//이메일인증
|
|
Route::get('email-required', [EmailVerificationController::class, 'requiredPage'])->name('email.required');
|
|
Route::post('email/send-verify', [EmailVerificationController::class, 'sendVerify'])->name('email.send_verify');
|
|
Route::get('email/verify', [EmailVerificationController::class, 'verify'])->name('email.verify')->middleware('signed');
|
|
});
|
|
|
|
Route::post('logout', [LoginController::class, 'logout'])->name('logout');
|
|
});
|
|
|
|
Route::prefix('auth')->name('web.auth.')->group(function () {
|
|
Route::middleware('legacy.guest')->group(function () {
|
|
Route::get('email-required', [EmailVerificationController::class, 'requiredPage'])->name('email.required');
|
|
Route::post('email/send-verify', [EmailVerificationController::class, 'sendVerify'])->name('email.send_verify');
|
|
Route::get('email/verify', [EmailVerificationController::class, 'verify'])->name('email.verify')->middleware('signed'); // 만료/위변조 자동 차단
|
|
});
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 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));
|
|
|