문서 관리 시스템 구축: Day 11
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발자, 특히 법률 플랫폼 또는 문서 관리 시스템 개발에 관심 있는 중급 이상 개발자
- RBAC (역할 기반 접근 제어), 파일 업로드 API, 데이터베이스 연동 기술을 학습하고자 하는 개발자
- Next.js 및 NestJS 프레임워크 사용 경험을 확보하고자 하는 개발자
핵심 요약
- NestJS의
FileInterceptor
와Multer
미들웨어를 통해 파일 업로드 API 구현 - Prisma ORM을 사용해 PostgreSQL에
Document
테이블에 파일 메타데이터 저장 - RBAC (역할 기반 접근 제어)를 통해 관리자만 삭제 권한 부여
- Frontend에서는
FormData
와fetch
를 사용해 사용자 친화적인 업로드 인터페이스 구현
섹션별 세부 요약
1. 목표
- 사용자가 특정 사건(case)에 문서를 업로드 가능
- 파일 메타데이터(이름, caseId, 업로드 시간)를 PostgreSQL에 저장
- 관리자만 문서 삭제 가능하도록 권한 제어
- 비인가 사용자의 문서 접근 방지
2. 백엔드 – 파일 업로드 API
- NestJS의
@Post('upload/:caseId')
엔드포인트 생성 Multer
미들웨어를 통해 multipart/form-data 처리- 업로드된 파일을 로컬 경로
/uploads
에 저장 - Prisma ORM을 통해
Document
테이블에 파일 정보 삽입
3. 프론트엔드 – 업로드 인터페이스
을 사용해 파일 선택 기능 구현
FormData
를 통해 선택된 파일을fetch
로 서버 전송- 업로드 후 문서 목록에 문서 이름 표시
- 관리자 권한이 있을 경우 삭제 버튼 노출
4. 삭제 기능 – 권한 제어
- DELETE 엔드포인트
@Delete(':docId')
생성 AuthGuard
와RoleGuard
미들웨어를 통해 관리자(Admin, Super Admin)만 삭제 허용- Prisma ORM을 통해 데이터베이스에서 문서 삭제
5. 핵심 학습 포인트
- NestJS의
FileInterceptor
는 파일 업로드 로직을 간결하게 처리 - RBAC를 통해 사용자 권한에 따라 UI 요소를 동적으로 제어
- 파일 메타데이터 저장은 추적 및 관리 용이성을 위해 필수
- 법률 플랫폼에서 업로드 프로세스의 신뢰성이 중요
결론
- 로컬 저장소는 임시로 사용, 이후 클라우드 저장소(예: AWS S3)로 이전 계획
- RBAC 구현과 메타데이터 저장이 보안 및 추적성 향상에 핵심
- 사용자 경험을 위해 업로드 인터페이스를 직관적으로 설계해야 함
- 보안을 위해 인증/인가 미들웨어와 권한 체크 로직 반드시 적용
> 질문: 당신의 앱에서 보안 파일 업로드는 어떻게 처리하시나요? 로컬 vs 클라우드 저장소 중 어떤 것을 선호하시나요?