generated from pricelees/issue-pr-template
<!-- 제목 양식 --> <!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) --> ## 📝 관련 이슈 및 PR **PR과 관련된 이슈 번호** - #44 ## ✨ 작업 내용 <!-- 어떤 작업을 했는지 알려주세요! --> - 매장 기능 도입 및 기존 기능에 적용 - 관리자 타입(본사, 매장, 전체) 분리 및 API별 적용 ## 🧪 테스트 <!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! --> - 신규 기능 및 매장 기능 도입으로 수정된 기존 API 모두 통합 테스트 완료 ## 📚 참고 자료 및 기타 <!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! --> - 아직 미결제 예약 스케쥴링 작업 등 추가적인 작업이 필요하긴 하지만, 이 작업들은 배포 후 추가로 진행할 예정 - 다음 작업은 배포 + 초기 데이터 삽입 Reviewed-on: #45 Co-authored-by: pricelees <priceelees@gmail.com> Co-committed-by: pricelees <priceelees@gmail.com>
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
import { useAdminAuth } from '@_context/AdminAuthContext';
|
|
import React from 'react';
|
|
import { Link, useNavigate } from 'react-router-dom';
|
|
import '@_css/navbar.css';
|
|
|
|
const AdminNavbar: React.FC = () => {
|
|
const { isAdmin, name, type, logout } = useAdminAuth();
|
|
const navigate = useNavigate();
|
|
|
|
const handleLogout = async (e: React.MouseEvent) => {
|
|
e.preventDefault();
|
|
try {
|
|
await logout();
|
|
navigate('/');
|
|
} catch (error) {
|
|
console.error("Logout failed", error);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<nav className="navbar-container">
|
|
<div className="nav-links">
|
|
<Link className="nav-link" to="/admin">홈</Link>
|
|
{type === 'HQ' && <Link className="nav-link" to="/admin/theme">테마</Link>}
|
|
{type === 'HQ' && <Link className="nav-link" to="/admin/store">매장</Link>}
|
|
<Link className="nav-link" to="/admin/schedule">일정</Link>
|
|
</div>
|
|
<div className="nav-actions">
|
|
{!isAdmin ? (
|
|
<button className="btn btn-primary" onClick={() => navigate('/admin/login')}>Login</button>
|
|
) : (
|
|
<div className="profile-info">
|
|
<img className="profile-image" src="/image/default-profile.png" alt="Profile" />
|
|
<span>{name || 'Profile'}</span>
|
|
<div className="dropdown-menu">
|
|
<a className="dropdown-item" href="#" onClick={handleLogout}>Logout</a>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</div>
|
|
</nav>
|
|
);
|
|
};
|
|
|
|
export default AdminNavbar;
|