66 lines
2.3 KiB
PHP
66 lines
2.3 KiB
PHP
<?php
|
|
|
|
use Illuminate\Foundation\Application;
|
|
use Illuminate\Foundation\Configuration\Exceptions;
|
|
use Illuminate\Foundation\Configuration\Middleware;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Routing\Exceptions\InvalidSignatureException;
|
|
|
|
return Application::configure(basePath: dirname(__DIR__))
|
|
// (A) Routing: 도메인별 라우트 분리
|
|
->withRouting(
|
|
web: __DIR__.'/../routes/web.php', // 공용(가능하면 최소화)
|
|
commands: __DIR__.'/../routes/console.php',
|
|
health: '/up',
|
|
then: function () {
|
|
Route::middleware('web')
|
|
->domain('four.syye.net')
|
|
->group(base_path('routes/web.php'));
|
|
|
|
Route::middleware('web')
|
|
->domain('shot.syye.net')
|
|
->group(base_path('routes/admin.php'));
|
|
},
|
|
)
|
|
|
|
// (B) Middleware: Reverse Proxy/Host 신뢰 정책 + CSRF 예외
|
|
->withMiddleware(function (Middleware $middleware): void {
|
|
$middleware->trustProxies(at: [
|
|
'192.168.100.0/24',
|
|
'127.0.0.0/8',
|
|
'10.0.0.0/8',
|
|
'172.16.0.0/12',
|
|
]);
|
|
|
|
$middleware->trustHosts(at: [
|
|
'four.syye.net',
|
|
'shot.syye.net',
|
|
]);
|
|
|
|
// CSRF 예외 처리
|
|
// - 도메인 제외, path만
|
|
// - 네 라우트 정의 기준: POST register/danal/result
|
|
$middleware->validateCsrfTokens(except: [
|
|
'auth/register/danal/result', //다날 PASS 회원가입 콜백 (외부 서버가 호출)
|
|
'mypage/info/danal/result', //다날 PASS 전화번호 변경 콜백 (외부 서버가 호출)
|
|
]);
|
|
|
|
//페이지 접근권한 미들웨어 등록
|
|
$middleware->alias([
|
|
'legacy.auth' => \App\Http\Middleware\LegacyAuth::class, //로그인후 접근가능
|
|
'legacy.guest' => \App\Http\Middleware\LegacyGuest::class, //게스트 접근가능페이지
|
|
]);
|
|
|
|
|
|
|
|
})
|
|
->withExceptions(function (Exceptions $exceptions): void {
|
|
|
|
//서명 만료/위변조(temporarySignedRoute + signed middleware)
|
|
$exceptions->render(function (InvalidSignatureException $e, $request) {
|
|
return redirect('/')->with('alert', '잘못된 접근입니다.');
|
|
});
|
|
})
|
|
|
|
->create();
|