@@ -3,6 +3,9 @@ import fs from "fs";
33import path from "path" ;
44import matter from "gray-matter" ;
55import { marked } from "marked" ;
6+ import { getServerSession } from "next-auth" ;
7+ import { authConfig } from "@/lib/auth/config" ;
8+ import { serverTrpc } from "@/lib/trpc-server" ;
69
710// Configure marked for rich markdown support
811marked . setOptions ( {
@@ -18,6 +21,34 @@ export async function GET(
1821 _request : Request ,
1922 { params } : { params : Promise < { slug : string } > }
2023) {
24+ // Authenticate user
25+ const session = await getServerSession ( authConfig ) ;
26+
27+ if ( ! session || ! session . user ?. email ) {
28+ return NextResponse . json (
29+ { error : "Unauthorized - Please sign in" } ,
30+ { status : 401 }
31+ ) ;
32+ }
33+
34+ // Verify paid subscription
35+ try {
36+ const subscriptionStatus = await serverTrpc . user . subscriptionStatus . query ( ) ;
37+
38+ if ( ! subscriptionStatus . isPaidUser ) {
39+ return NextResponse . json (
40+ { error : "Forbidden - Premium subscription required" } ,
41+ { status : 403 }
42+ ) ;
43+ }
44+ } catch ( error ) {
45+ console . error ( "Error checking subscription:" , error ) ;
46+ return NextResponse . json (
47+ { error : "Failed to verify subscription status" } ,
48+ { status : 500 }
49+ ) ;
50+ }
51+
2152 const { slug } = await params ;
2253 const now = Date . now ( ) ;
2354 const cached = newsletterCache . get ( slug ) ;
0 commit comments