fix: skicka Authorization-header i klientens direktanrop till /api/recipes
Caddy routar /api/recipes* direkt till NestJS (bypassing Next.js). Klient-komponenter maste lagga till JWT-token sjalva via useSession(). Pavaerkade filer: - RecipeDetailClient.tsx (PATCH, DELETE, POST image) - ImportRecipePage.tsx (POST /api/recipes) - WriteRecipePage.tsx (POST /api/recipes)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { useState, useEffect, useTransition } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useSession } from 'next-auth/react';
|
||||
import type {
|
||||
Recipe,
|
||||
Product,
|
||||
@@ -64,6 +65,7 @@ function StatusBadge({ status }: { status: 'enough' | 'missing' | 'unit_mismatch
|
||||
|
||||
export default function RecipeDetailClient({ recipe: initialRecipe }: { recipe: Recipe }) {
|
||||
const router = useRouter();
|
||||
const { data: session } = useSession();
|
||||
const [recipe, setRecipe] = useState(initialRecipe);
|
||||
const [isEditing, setIsEditing] = useState(false);
|
||||
const [isLiked, setIsLiked] = useState(false);
|
||||
@@ -140,7 +142,9 @@ export default function RecipeDetailClient({ recipe: initialRecipe }: { recipe:
|
||||
if (!confirm(`Ta bort receptet "${recipe.name}"? Det går inte att ångra.`)) return;
|
||||
setIsDeleting(true);
|
||||
try {
|
||||
const res = await fetch(`/api/recipes/${recipe.id}`, { method: 'DELETE' });
|
||||
const res = await fetch(`/api/recipes/${recipe.id}`, { method: 'DELETE',
|
||||
headers: { Authorization: `Bearer ${session?.accessToken}` },
|
||||
});
|
||||
if (!res.ok) throw new Error(await parseErrorResponse(res));
|
||||
router.push('/recipes');
|
||||
} catch (err) {
|
||||
@@ -164,7 +168,7 @@ export default function RecipeDetailClient({ recipe: initialRecipe }: { recipe:
|
||||
};
|
||||
const res = await fetch(`/api/recipes/${recipe.id}`, {
|
||||
method: 'PATCH',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${session?.accessToken}` },
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
if (!res.ok) throw new Error(await parseErrorResponse(res));
|
||||
@@ -186,7 +190,7 @@ export default function RecipeDetailClient({ recipe: initialRecipe }: { recipe:
|
||||
try {
|
||||
const res = await fetch(`/api/recipes/${recipe.id}/image`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${session?.accessToken}` },
|
||||
body: JSON.stringify({ sourceUrl: imageUrlInput.trim() }),
|
||||
});
|
||||
if (!res.ok) throw new Error(await parseErrorResponse(res));
|
||||
|
||||
Reference in New Issue
Block a user