139 lines
5.9 KiB
PHP
139 lines
5.9 KiB
PHP
@extends('admin.layouts.app')
|
|
|
|
@section('title', '내 정보')
|
|
@section('page_title', '내 정보')
|
|
@section('page_desc', '프로필/연락처/보안 상태')
|
|
|
|
@section('content')
|
|
<section class="a-page">
|
|
|
|
<div class="a-grid a-grid--me">
|
|
<article class="a-card">
|
|
<div class="a-card__head">
|
|
<div>
|
|
<div class="a-card__title">기본 정보</div>
|
|
<div class="a-card__desc a-muted">이메일은 변경 불가</div>
|
|
</div>
|
|
</div>
|
|
|
|
<form method="POST" action="{{ route('admin.me.update') }}" class="a-form" onsubmit="this.querySelector('button[type=submit]').disabled=true;">
|
|
@csrf
|
|
|
|
<div class="a-field">
|
|
<label class="a-label">이메일</label>
|
|
<input class="a-input" value="{{ $me->email }}" disabled>
|
|
</div>
|
|
|
|
<div class="a-field">
|
|
<label class="a-label" for="nickname">닉네임</label>
|
|
<input
|
|
class="a-input"
|
|
id="nickname"
|
|
name="nickname"
|
|
placeholder="예: super admin"
|
|
value="{{ old('nickname', $me->nickname ?? '') }}"
|
|
>
|
|
@error('nickname')<div class="a-error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<div class="a-field">
|
|
<label class="a-label" for="name">성명(본명)</label>
|
|
<input
|
|
class="a-input"
|
|
id="name"
|
|
name="name"
|
|
value="{{ old('name', $me->name ?? '') }}"
|
|
>
|
|
@error('name')<div class="a-error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<div class="a-field">
|
|
<label class="a-label" for="phone">휴대폰</label>
|
|
<input class="a-input" id="phone" name="phone" placeholder="01012345678" value="{{ old('phone', $phone_plain ?? '') }}">
|
|
@error('phone')<div class="a-error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<button class="a-btn a-btn--primary" type="submit" style="margin-top:12px;">
|
|
저장
|
|
</button>
|
|
</form>
|
|
</article>
|
|
|
|
<article class="a-card">
|
|
<div class="a-card__head">
|
|
<div>
|
|
<div class="a-card__title">보안</div>
|
|
<div class="a-card__desc a-muted">비밀번호 변경 및 2FA 상태</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="a-meinfo">
|
|
<div class="a-meinfo__row">
|
|
<div class="a-meinfo__k">2FA 모드</div>
|
|
<div class="a-meinfo__v">
|
|
<span class="a-pill">{{ $me->two_factor_mode ?? 'sms' }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="a-meinfo__row">
|
|
<div class="a-meinfo__k">TOTP</div>
|
|
<div class="a-meinfo__v">
|
|
@if((int)($me->totp_enabled ?? 0) === 1)
|
|
<span class="a-pill a-pill--ok">Enabled</span>
|
|
@else
|
|
<span class="a-pill a-pill--muted">Disabled</span>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<div class="a-meinfo__row">
|
|
<div class="a-meinfo__k">내 역할</div>
|
|
<div class="a-meinfo__v">
|
|
<div class="a-chips">
|
|
@forelse(($roles ?? []) as $r)
|
|
<span class="a-chip">
|
|
{{ $r['name'] }}
|
|
<span class="a-chip__sub">{{ $r['code'] }}</span>
|
|
</span>
|
|
@empty
|
|
<span class="a-muted">부여된 역할이 없습니다.</span>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="a-meinfo__row">
|
|
<div class="a-meinfo__k">내 권한</div>
|
|
<div class="a-meinfo__v">
|
|
<div class="a-chips">
|
|
@forelse(($perms ?? []) as $p)
|
|
<span class="a-chip">{{ $p['code'] }}</span>
|
|
@empty
|
|
<span class="a-muted">권한 정보가 없습니다.</span>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="a-meinfo__row">
|
|
<div class="a-meinfo__k">최근 로그인</div>
|
|
<div class="a-meinfo__v">
|
|
{{ $me->last_login_at ? $me->last_login_at : '-' }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<a class="a-btn a-btn--highlight" href="{{ route('admin.me.password.form') }}" style="margin-top:12px;">
|
|
비밀번호 변경
|
|
</a>
|
|
|
|
<div class="a-muted" style="font-size:12px; margin-top:10px;">
|
|
※ TOTP 설정/리셋은 다음 단계(권한/역할) 작업 때 함께 붙이는 게 안전합니다.
|
|
</div>
|
|
|
|
</article>
|
|
</div>
|
|
|
|
</section>
|
|
@endsection
|