Răsfoiți Sursa

Fetch recipes from the database

Lee Morgan 2 săptămâni în urmă
părinte
comite
71b2fe3894

+ 19 - 0
src/lib/server/auth.js

@@ -0,0 +1,19 @@
+import {redirect} from "@sveltejs/kit";
+import jwt from "jsonwebtoken";
+import {JWT_SECRET} from "$env/static/private";
+import User from "$lib/server/models/User.js";
+
+export default async function userAuth(cookies){
+    const userCookie = cookies.get("user");
+    if(!userCookie) redirect(303, "/");
+
+    let user;
+    try{
+        const userData = jwt.verify(userCookie, JWT_SECRET);
+        user = await User.findOne({_id: userData.id, token: userData.token});
+    }catch{
+        redirect(303, "/");
+    }
+
+    return user;
+}

+ 1 - 1
src/lib/server/models/Recipe.js

@@ -1,6 +1,6 @@
 import mongoose from "mongoose";
 
-const recipeSchema new mongoose.Schema({
+const recipeSchema = new mongoose.Schema({
     ingredients: [{
         user: {
             type: mongoose.Schema.Types.ObjectId,

+ 7 - 0
src/routes/dashboard/+page.server.js

@@ -0,0 +1,7 @@
+import Recipe from "$lib/server/models/Recipe.js";
+import userAuth from "$lib/server/auth.js";
+
+export async function load({cookies}){
+    const user = await userAuth(cookies);
+    return {recipes: await Recipe.find({user: user._id})};
+}

+ 7 - 0
src/routes/dashboard/+page.svelte

@@ -0,0 +1,7 @@
+<script>
+    let {data} = $props();
+</script>
+
+<div>
+    <h1>Recipes</h1>
+</div>

+ 1 - 1
src/routes/login/+page.server.js

@@ -33,6 +33,6 @@ export const actions = {
             maxAge: 60 * 60 *24 * 7 * 30
         });
 
-        redirect(303, "/home")
+        redirect(303, "/dashboard")
     }
 }