Release: Phase 5 RBAC + 게시판 CRUD API 연동 #30

병합
htlee develop 에서 main 로 3 commits 를 머지했습니다 2026-02-28 19:40:21 +09:00
Showing only changes of commit db7f435717 - Show all commits

파일 보기

@ -1387,21 +1387,22 @@ export async function createBoardPost(input: CreateBoardPostInput): Promise<{ sn
#### 권한 기반 UI 분기
**파일**: `frontend/src/tabs/board/components/BoardListTable.tsx`
**파일**: `frontend/src/tabs/board/components/BoardView.tsx`
```tsx
import { useAuthStore } from '@common/store/authStore';
const hasPermission = useAuthStore((s) => s.hasPermission);
// 카테고리별 서브리소스 CREATE 권한 확인
const canWrite = selectedCategory
? hasPermission(`board:${selectedCategory.toLowerCase()}`, 'CREATE')
: hasPermission('board', 'CREATE');
// 서브탭 기준 글쓰기 권한 리소스 결정
const getWriteResource = () => {
if (activeSubTab === 'all') return 'board';
return `board:${activeSubTab}`;
};
// 글쓰기 버튼 조건부 렌더링
{canWrite && (
<button onClick={onWriteClick}>글쓰기</button>
{hasPermission(getWriteResource(), 'CREATE') && (
<button onClick={handleWriteClick}>글쓰기</button>
)}
```
@ -1430,4 +1431,6 @@ const canWrite = selectedCategory
| 백엔드 | `backend/src/board/boardRouter.ts` | 라우터 + requirePermission |
| 백엔드 | `backend/src/server.ts` | boardRouter 등록 |
| 프론트 | `frontend/src/tabs/board/services/boardApi.ts` | API 서비스 |
| 프론트 | `frontend/src/tabs/board/components/BoardListTable.tsx` | 목록 UI (API 연동) |
| 프론트 | `frontend/src/tabs/board/components/BoardView.tsx` | 목록/상세/작성 통합 뷰 (API 연동) |
| 프론트 | `frontend/src/tabs/board/components/BoardWriteForm.tsx` | 게시글 작성/수정 폼 (API 호출) |
| 프론트 | `frontend/src/tabs/board/components/BoardDetailView.tsx` | 게시글 상세 보기 (API 호출) |