api: fix for supabase RLS (#1501)

This commit is contained in:
Huang Xin
2025-06-30 21:08:53 +08:00
committed by GitHub
parent 5d61a9808f
commit bf0bb80009
5 changed files with 18 additions and 7 deletions
@@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from 'next/server';
import { getStripe } from '@/libs/stripe/server';
import { validateUserAndToken } from '@/utils/access';
import { supabase } from '@/utils/supabase';
import { createSupabaseAdminClient } from '@/utils/supabase';
export async function POST(request: NextRequest) {
const { priceId, embedded = true, metadata = {} } = await request.json();
@@ -17,6 +17,7 @@ export async function POST(request: NextRequest) {
};
try {
const supabase = createSupabaseAdminClient();
const { data: customerData } = await supabase
.from('customers')
.select('stripe_customer_id')
@@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from 'next/server';
import { getStripe } from '@/libs/stripe/server';
import { validateUserAndToken } from '@/utils/access';
import { supabase } from '@/utils/supabase';
import { createSupabaseAdminClient } from '@/utils/supabase';
export async function POST(request: NextRequest) {
const { user, token } = await validateUserAndToken(request.headers.get('authorization'));
@@ -10,6 +10,7 @@ export async function POST(request: NextRequest) {
}
try {
const supabase = createSupabaseAdminClient();
const { data: customerData } = await supabase
.from('customers')
.select('stripe_customer_id')
@@ -167,7 +167,6 @@ async function handleSubscriptionUpdated(subscription: Stripe.Subscription) {
const subscriptionId = subscription.id;
const supabase = createSupabaseAdminClient();
const { data: subscriptionData } = await supabase
.from('subscriptions')
.select('user_id, stripe_customer_id')
+7 -4
View File
@@ -150,10 +150,13 @@ const ProfilePage = () => {
}
};
const handleCheckoutSuccess = useCallback((sessionId: string) => {
setShowEmbeddedCheckout(false);
router.push(`/user/subscription/success?session_id=${sessionId}`);
}, []);
const handleCheckoutSuccess = useCallback(
(sessionId: string) => {
setShowEmbeddedCheckout(false);
router.push(`/user/subscription/success?session_id=${sessionId}`);
},
[router],
);
const handleManageSubscription = async () => {
const token = await getAccessToken();
@@ -29,6 +29,9 @@ const SuccessPageWithSearchParams = () => {
const router = useRouter();
const sessionId = searchParams?.get('session_id');
const [mounted, setMounted] = useState(false);
useEffect(() => setMounted(true), []);
async function fetchSessionStatus() {
try {
const token = await getAccessToken();
@@ -111,6 +114,10 @@ const SuccessPageWithSearchParams = () => {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [sessionStatus.status, retryCount]);
if (!mounted) {
return null;
}
// Loading state
if (sessionStatus.status === 'loading') {
return (