-
-

@yield('heading', '관리자 로그인')

-

@yield('subheading', '허용된 IP에서만 접근 가능합니다. 로그인 후 SMS 인증을 진행합니다.')

+

@yield('heading', '접근 통제 구역')

+

+ @yield('subheading', '승인된 관리자만 접근할 수 있습니다.') +

+ @yield('subheading', '모든 로그인·조회·변경 시도는 기록되며, 무단 접근 및 오남용은 정책 및 관련 법령에 따라 조치될 수 있습니다.') +

+
IP Allowlist - 2-Step (SMS) - Audit Ready + 2-Step (SMS, otp) + Audit & Logs + Least Privilege
+
- @include('admin.partials.flash') + @php $hideFlash = trim($__env->yieldContent('hide_flash')); @endphp + @if($hideFlash === '') + @include('admin.partials.flash') + @endif +
@yield('content') diff --git a/resources/views/admin/me/password.blade.php b/resources/views/admin/me/password.blade.php new file mode 100644 index 0000000..75c38d3 --- /dev/null +++ b/resources/views/admin/me/password.blade.php @@ -0,0 +1,47 @@ +@extends('admin.layouts.app') + +@section('title', '비밀번호 변경') +@section('page_title', '비밀번호 변경') +@section('page_desc', '현재 비밀번호 확인 후 변경') + +@section('content') +
+
+
+
+
비밀번호 변경
+
변경 시 감사로그가 기록됩니다.
+
+
+ + + @csrf + +
+ + + @error('current_password')
{{ $message }}
@enderror +
+ +
+ + + @error('password')
{{ $message }}
@enderror +
+ +
+ + +
+ + + + + ← 내정보로 + + +
+
+@endsection diff --git a/resources/views/admin/me/show.blade.php b/resources/views/admin/me/show.blade.php new file mode 100644 index 0000000..9d958d2 --- /dev/null +++ b/resources/views/admin/me/show.blade.php @@ -0,0 +1,138 @@ +@extends('admin.layouts.app') + +@section('title', '내 정보') +@section('page_title', '내 정보') +@section('page_desc', '프로필/연락처/보안 상태') + +@section('content') +
+ +
+
+
+
+
기본 정보
+
이메일은 변경 불가
+
+
+ +
+ @csrf + +
+ + +
+ +
+ + + @error('nickname')
{{ $message }}
@enderror +
+ +
+ + + @error('name')
{{ $message }}
@enderror +
+ +
+ + + @error('phone')
{{ $message }}
@enderror +
+ + +
+
+ +
+
+
+
보안
+
비밀번호 변경 및 2FA 상태
+
+
+ +
+
+
2FA 모드
+
+ {{ $me->two_factor_mode ?? 'sms' }} +
+
+ +
+
TOTP
+
+ @if((int)($me->totp_enabled ?? 0) === 1) + Enabled + @else + Disabled + @endif +
+
+ +
+
내 역할
+
+
+ @forelse(($roles ?? []) as $r) + + {{ $r['name'] }} + {{ $r['code'] }} + + @empty + 부여된 역할이 없습니다. + @endforelse +
+
+
+ +
+
내 권한
+
+
+ @forelse(($perms ?? []) as $p) + {{ $p['code'] }} + @empty + 권한 정보가 없습니다. + @endforelse +
+
+
+ +
+
최근 로그인
+
+ {{ $me->last_login_at ? $me->last_login_at : '-' }} +
+
+
+ + + 비밀번호 변경 + + +
+ ※ TOTP 설정/리셋은 다음 단계(권한/역할) 작업 때 함께 붙이는 게 안전합니다. +
+ +
+
+ +
+@endsection diff --git a/resources/views/admin/partials/flash.blade.php b/resources/views/admin/partials/flash.blade.php index ba46915..cb9fd0a 100644 --- a/resources/views/admin/partials/flash.blade.php +++ b/resources/views/admin/partials/flash.blade.php @@ -1,20 +1,52 @@ -@if ($errors->any()) - -@endif +@php + $toasts = []; -@if (session('status')) -
-
안내
-
{{ session('status') }}
-
-@endif + // 컨트롤러에서 with('toast', [...])로 보낸 경우 + if (session()->has('toast')) { + $t = session('toast'); + if (is_array($t)) $toasts[] = $t; + } -@if (session('alert')) -