구독 권한: 어디서 막을 것인가
UI에서만 막으면 우회되고, 화면마다 '구독 중' 판정이 달라 만료된 구독이 '이용 중'으로 보이는데 접근은 막히는 불일치가 있었습니다.
- middleware(경로)·서버 액션(중복 결제)·DB RLS(데이터) 세 층에서 검사
- 판정 함수(isActiveSubscription)와 게이팅 경로 목록을 단일 소스로 공유
화면 표시와 실제 접근 권한이 항상 같은 기준으로 동작합니다.
Next.js middlewareSupabase RLSnext-safe-action