데브허브 | DEVHUB | Build an Event Ticket Platform with Spring Boot - Part 10 - Intermediate ProjectBuild an Event Ticket Platform with Spring Boot - Part 10 - Intermediate Project
- 시리즈의 마지막 부분으로, QR 코드 스캐닝 및 티켓 유효성 검사 로직 구현을 목표로 함. 🏁
- 이번 모듈의 핵심은 역할 기반 보안(Role-based security) 구현으로, JWT에서 사용자 역할을 추출하고 특정 엔드포인트에 대한 접근을 제한함. 🔐
- JWT에서
realm_access 클레임 내의 roles 정보를 추출하기 위한 커스텀 JWT 컨버터(JWTAuthenticationConverter)를 구현함. 🔑
- 추출된 역할을 Spring Security 내부에서 사용하는
SimpleGrantedAuthority 객체로 변환함. 🛡️
- Spring Security 설정(
SecurityConfig)을 업데이트하여 새로 구현한 커스텀 JWT 컨버터를 사용하도록 적용함. ⚙️
- 이벤트 컨트롤러의 모든 엔드포인트(
/api/v1/events/**)에 대해 hasRole('organizer')를 적용하여 오직 주최자(organizer) 역할의 사용자만 접근할 수 있도록 제한함. 🚫
- 테스트 결과, 주최자 사용자는 이벤트 목록에 성공적으로 접근(HTTP 200)하고, 참석자(attendee) 사용자는 접근이 거부(HTTP 403 Forbidden)되어 역할 기반 접근 제어가 정상 작동함을 확인함. ✅
- 다음 모듈에서는 사용자가 구매한 티켓 목록을 조회하는 엔드포인트 구현을 시작함. 🎫
- 티켓 목록 조회를 위해
TicketRepository에 findByPurchaserId 메서드를 추가하고, TicketService에 listTicketsForUser 메서드를 구현함. 📊
- 티켓 목록 응답을 위한 DTO(
ListTicketResponseDTO, ListTicketTypeResponseDTO)와 엔티티-DTO 변환을 위한 TicketMapper를 생성함. 🔄