Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 1x 4x 4x 4x 3x 3x 3x 3x 4x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 4x 4x 4x 4x 4x 1x 1x 1x 4x | /**
* Subscription Management API
*
* GET /api/subscriptions - Get current user's subscription
* GET /api/subscriptions/plans - Get all available plans
*/
import { NextResponse } from 'next/server';
import { createClient } from '@/lib/supabase/server';
import { getAdminClient } from '@/lib/supabase/admin';
export async function GET() {
try {
// Authenticate user
const supabase = await createClient();
const {
data: { user },
error: authError,
} = await supabase.auth.getUser();
if (authError || !user) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const adminClient = getAdminClient();
// Get user's current subscription
const { data: subscription } = await adminClient
.from('subscriptions')
.select(
`
*,
plan:subscription_plans(*)
`
)
.eq('user_id', user.id)
.single();
// Get user's profile tier
const { data: profile } = await adminClient
.from('profiles')
.select('subscription_tier')
.eq('user_id', user.id)
.single();
// Get payment history
const { data: payments } = await adminClient
.from('payments')
.select('*')
.eq('user_id', user.id)
.order('created_at', { ascending: false })
.limit(10);
return NextResponse.json({
subscription: subscription || null,
currentTier: profile?.subscription_tier || 'free',
payments: payments || [],
});
} catch (error) {
console.error('Get subscription error:', error);
return NextResponse.json({ error: 'Failed to get subscription' }, { status: 500 });
}
}
|