Spring Boot 3.5 / Java 17 + React 19 + PostgreSQL 단일 JAR. 멀티테넌트(LGINNOTEK/LGIT/EMART/ZIOINFO), HCore 게이트웨이 관제, POS 연동 가격 자동 업데이트, Ollama 온프레미스 AI 알람 분석·POS 분류. 레거시 ESN 6개 프로젝트(Spring Boot 1.5/Java 8) 현대화 통합. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { useNavigate } from 'react-router-dom'
|
|
import { LogOut, User } from 'lucide-react'
|
|
|
|
export default function Header() {
|
|
const navigate = useNavigate()
|
|
const user = localStorage.getItem('esn_user') || 'admin'
|
|
const role = localStorage.getItem('esn_role') || 'ADMIN'
|
|
const tenant = localStorage.getItem('esn_tenant') || 'ALL'
|
|
|
|
function handleLogout() {
|
|
localStorage.removeItem('esn_token')
|
|
localStorage.removeItem('esn_role')
|
|
localStorage.removeItem('esn_user')
|
|
localStorage.removeItem('esn_tenant')
|
|
navigate('/login')
|
|
}
|
|
|
|
return (
|
|
<header className="h-14 bg-panel border-b border-edge flex items-center px-6 gap-4 flex-shrink-0">
|
|
<div className="flex-1" />
|
|
<span className="text-xs text-gray-400">테넌트: <span className="text-brand">{tenant}</span></span>
|
|
<span className="text-xs text-gray-400">|</span>
|
|
<div className="flex items-center gap-2 text-sm text-gray-300">
|
|
<User size={14} />
|
|
<span>{user}</span>
|
|
<span className="text-xs text-brand bg-brand/10 px-2 py-0.5 rounded">{role}</span>
|
|
</div>
|
|
<button onClick={handleLogout} className="flex items-center gap-1.5 text-gray-400 hover:text-white text-sm">
|
|
<LogOut size={14} />
|
|
로그아웃
|
|
</button>
|
|
</header>
|
|
)
|
|
}
|