{{-- resources/views/admin/partials/dev_session_overlay.blade.php --}} @php // ✅ 개발 모드에서만 노출 $show = (config('app.debug') || app()->environment('local')); // ✅ 관리자 도메인에서만 노출(실수로 web 도메인에 붙는 것 방지) $adminHost = parse_url(env('APP_ADMIN_URL'), PHP_URL_HOST); if ($adminHost) { $show = $show && (request()->getHost() === $adminHost); } // ✅ 세션 전체 $sess = session()->all(); // ✅ admin은 기본 마스킹을 켜는 게 안전 (원하면 비워도 됨) $maskKeys = [ 'password','passwd','pw', 'token','access_token','refresh_token', 'api_key','secret','authorization', 'csrf','_token', 'g-recaptcha-response','recaptcha', 'otp','admin_otp', 'ci','di','phone','mobile','email', 'session','cookie', ]; $mask = function ($key, $val) use ($maskKeys) { $k = strtolower((string)$key); foreach ($maskKeys as $mk) { if (str_contains($k, $mk)) return '***'; } return $val; }; // ✅ key:value 라인 생성(재귀) $lines = []; $dump = function ($data, $prefix = '') use (&$dump, &$lines, $mask) { foreach ((array)$data as $k => $v) { $key = $prefix . (string)$k; if (is_array($v)) { $lines[] = $key . ' : ['; $dump($v, $prefix . ' '); $lines[] = $prefix . ']'; } else { if (is_bool($v)) $v = $v ? 'true' : 'false'; if ($v === null) $v = 'null'; $vv = is_string($v) ? (mb_strlen($v) > 260 ? mb_substr($v, 0, 260) . '…' : $v) : (string)$v; $vv = $mask($k, $vv); $lines[] = $key . ' : ' . $vv; } } }; $dump($sess); $text = implode("\n", $lines); // ✅ dev route 이름 (너가 만든 이름에 맞춰 사용) // - 내가 권장했던 방식이면 admin.dev.session $devRouteName = 'admin.dev.session'; @endphp @if($show)
{!! e($text) !!}