From 73218402f689f1c831ce945ff3488c38504719cb Mon Sep 17 00:00:00 2001 From: echo Date: Tue, 31 Mar 2026 19:31:45 +0200 Subject: [PATCH] fix self ai plan generation authorization and error handling --- .../api/recommendations/generate-self/route.ts | 7 ------- apps/mobile/src/api/recommendations.ts | 18 ++++++++++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/admin/src/app/api/recommendations/generate-self/route.ts b/apps/admin/src/app/api/recommendations/generate-self/route.ts index e07dab3..9af6320 100644 --- a/apps/admin/src/app/api/recommendations/generate-self/route.ts +++ b/apps/admin/src/app/api/recommendations/generate-self/route.ts @@ -114,13 +114,6 @@ export async function POST() { return NextResponse.json({ error: "Forbidden" }, { status: 403 }); } - if (currentUser.role !== "client") { - return NextResponse.json( - { error: "Only clients can self-generate AI plans" }, - { status: 403 }, - ); - } - const { membershipType, features } = await getUserMembershipContext(userId); if (membershipType === "basic") { diff --git a/apps/mobile/src/api/recommendations.ts b/apps/mobile/src/api/recommendations.ts index 7c91ea1..b82f2d1 100644 --- a/apps/mobile/src/api/recommendations.ts +++ b/apps/mobile/src/api/recommendations.ts @@ -124,10 +124,20 @@ export async function generateSelfRecommendation( ); return parseApiData(response.data); } catch (error) { - if (isAxiosError(error) && error.response) { - throw new Error( - `Failed to generate recommendation: ${error.response.status}`, - ); + if (isAxiosError(error)) { + const responseError = error.response?.data as + | { error?: string } + | undefined; + + if (responseError?.error) { + throw new Error(responseError.error); + } + + if (error.response) { + throw new Error( + `Failed to generate recommendation: ${error.response.status}`, + ); + } } throw error; }