피드로 돌아가기
Dev.toBackend
원문 읽기
Payload CMS v3 기반 유럽 23개 이커머스 샵의 확장성 확보를 위한 커스텀 플러그인 설계
How I Built the Two Missing Payload CMS v3 Plugins — Reviews, JSON-LD & Real Production Bugs
AI 요약
Context
유럽 23개 국가 대상의 멀티 클론 이커머스 인프라 운영 중 Payload CMS v3의 기본 기능 부재로 인한 제약 발생. 특히 고객 리뷰 시스템의 관리자 승인 워크플로우와 Google Rich Snippets를 위한 JSON-LD 구조화 데이터 생성 기능의 결여를 해결해야 하는 상황.
Technical Solution
- Role-based Access Control 설계를 위해 v2의 단일 문자열 방식 대신 v3의 roles array 기반 포함 여부 확인 로직 적용
- beforeChange hook을 통한 데이터 무결성 보장 및 사용자의 임의 상태 변경을 방지하는 verified 필드 강제 초기화 설계
- API 보안 강화를 위해 Collection 레벨의 public 접근 권한과 개별 필드(authorEmail)의 admin 전용 접근 권한을 분리한 계층적 권한 제어
- Payload v3의 /api 하위 Parameterized Endpoint 마운트 제약을 해결하기 위해 Next.js App Router의 Dynamic Route를 통한 API 핸들러 우회 구현
- 데이터 타입 불일치로 인한 Relationship 필드 오류 해결을 위해 전송 데이터의 명시적 parseInt 변환을 통한 정수 타입 강제
- Migration batch 설정에 따른 자동 마이그레이션 누락 문제를 해결하기 위해 PostgreSQL 전용 ENUM 타입 및 테이블 스키마 수동 정의
실천 포인트
- Payload CMS v3 마이그레이션 시 Access Control의 roles 데이터 타입 변화(String → Array) 확인 - CMS 자체 Endpoint의 라우팅 제약 발생 시 Framework(Next.js) 레벨의 API Route 활용 검토 - Relationship 필드 입력 시 클라이언트 전송 값의 타입(String vs Integer) 일치 여부 검증 - CMS 플러그인 개발 시 비즈니스 로직 무결성을 위한 beforeChange hook 활용 및 필드별 Read 권한 분리 적용