import {redirect, error} 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, rdrct = true){ const userCookie = cookies.get("user"); if(!userCookie){ if(rdrct){ redirect(303, "/"); }else{ error(401, "Unauthorized"); } } let user; try{ const userData = jwt.verify(userCookie, JWT_SECRET); user = await User.findOne({_id: userData.id, token: userData.token}); }catch{ if(rdrct){ redirect(303, "/"); }else{ error(403, "Forbidden"); } } if(!user){ if(rdrct){ redirect(303, "/"); }else{ error(401, "Unauthorized"); } } return user; }