v7.0.0-beta.1 release
This commit is contained in:
commit
6595fd0eb5
3967 files changed
+1875383
No files matched your search
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Foundation\Configuration\Exceptions;
|
||||
use Illuminate\Foundation\Configuration\Middleware;
|
||||
use Illuminate\Support\Env;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Disable putenv() for Thread Safety
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Apache mod_php 환경에서 동일 프로세스 내 여러 요청이 동시에 처리될 때,
|
||||
| putenv()/getenv()는 thread-safe하지 않아 환경변수가 다른 요청에 의해
|
||||
| 덮어씌워지는 문제가 발생합니다.
|
||||
|
|
||||
| 이 설정은 Dotenv가 putenv()를 사용하지 않고 $_ENV/$_SERVER만 사용하도록 합니다.
|
||||
|
|
||||
*/
|
||||
Env::disablePutenv();
|
||||
|
||||
$app = Application::configure(basePath: dirname(__DIR__))
|
||||
->withRouting(
|
||||
web: __DIR__.'/../routes/web.php',
|
||||
api: __DIR__.'/../routes/api.php',
|
||||
commands: __DIR__.'/../routes/console.php',
|
||||
channels: __DIR__.'/../routes/channels.php',
|
||||
health: '/up',
|
||||
then: function () {
|
||||
// DevTools 라우트 (디버그 모드에서만 활성화)
|
||||
Route::middleware('api')
|
||||
->group(base_path('routes/devtools.php'));
|
||||
},
|
||||
)
|
||||
->withMiddleware(function (Middleware $middleware): void {
|
||||
// Laravel 기본 메인터넌스 미들웨어 제거 (커스텀 MaintenanceModePage로 대체)
|
||||
$middleware->remove(\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::class);
|
||||
|
||||
// Maintenance 모드 전용 페이지 미들웨어 (인증 불필요, 최우선 실행)
|
||||
$middleware->prepend(\App\Http\Middleware\MaintenanceModePage::class);
|
||||
|
||||
// Laravel Boost browser-logs를 G7 디버그 모드와 연동
|
||||
// InjectBoost 미들웨어보다 먼저 실행되어야 하므로 최상단에 추가
|
||||
$middleware->prependToGroup('web', \App\Http\Middleware\SyncBoostWithDebugMode::class);
|
||||
|
||||
// SetLocale, SetTimezone은 인증 후 실행되어야 사용자 설정을 읽을 수 있음
|
||||
$localeTimezoneMiddleware = [
|
||||
\App\Http\Middleware\SetLocale::class,
|
||||
\App\Http\Middleware\SetTimezone::class,
|
||||
];
|
||||
$middleware->appendToGroup('web', $localeTimezoneMiddleware);
|
||||
$middleware->appendToGroup('api', $localeTimezoneMiddleware);
|
||||
|
||||
// Gzip 압축 미들웨어 (웹서버 설정 없이 애플리케이션 레벨에서 압축)
|
||||
$middleware->append(\App\Http\Middleware\GzipEncodeResponse::class);
|
||||
|
||||
// 토큰 만료 시간 슬라이딩 갱신 미들웨어 (API 요청 시 토큰 만료 시간 자동 연장)
|
||||
$middleware->appendToGroup('api', [
|
||||
\App\Http\Middleware\RefreshTokenExpiration::class,
|
||||
]);
|
||||
|
||||
// 권한 관련 미들웨어 등록
|
||||
$middleware->alias([
|
||||
'admin' => \App\Http\Middleware\AdminMiddleware::class,
|
||||
'check.user_status' => \App\Http\Middleware\CheckUserStatus::class,
|
||||
'permission' => \App\Http\Middleware\PermissionMiddleware::class,
|
||||
'role' => \App\Http\Middleware\RoleMiddleware::class,
|
||||
'template.dependencies' => \App\Http\Middleware\CheckTemplateDependencies::class,
|
||||
'optional.sanctum' => \App\Http\Middleware\OptionalSanctumMiddleware::class,
|
||||
'start.api.session' => \App\Http\Middleware\StartApiSession::class,
|
||||
'seo' => \App\Seo\SeoMiddleware::class,
|
||||
]);
|
||||
})
|
||||
->withExceptions(function (Exceptions $exceptions): void {
|
||||
// API 401 응답 시 잔존 세션 쿠키 정리
|
||||
$exceptions->render(function (\Illuminate\Auth\AuthenticationException $e, \Illuminate\Http\Request $request) {
|
||||
if ($request->expectsJson()) {
|
||||
return response()->json(['message' => __('auth.unauthenticated')], 401)
|
||||
->withCookie(cookie()->forget(config('session.cookie')));
|
||||
}
|
||||
});
|
||||
})->create();
|
||||
|
||||
return $app;
|
||||
Reference in new issue
Block a user