diesel-core
Version:
Web framework built on Web Standards
2 lines (1 loc) • 2.48 kB
JavaScript
function G(q,E){if(!q)throw new Error("JWT library is not defined, please provide jwt to authenticateJwt Function");return(B)=>{try{let z=B.cookies?.accessToken??B.req?.headers?.get("Authorization");if(!z)return B.json({message:"Unauthorized",error:"No token provided"},401);if(z.startsWith("Bearer "))z=z.slice(7);let A=q?.verify(z,E);if(!A)return B.json({message:"Unauthorized",error:"Token could not be decoded"},401);B.set("user",A)}catch(z){let A="Invalid token";if(z.name==="TokenExpiredError")A="Token expired";else if(z.name==="JsonWebTokenError")A="Malformed or tampered token";return B.json({message:"Unauthorized",error:A},401)}}}function H(q,E,B){if(!q)throw new Error("JWT library is not defined, please provide jwt to authenticateJwtDB Function");if(!E)throw new Error("User model is not defined, please provide UserModel to authenticateJwtDB Function");return async(z)=>{try{let A=z.cookies?.accessToken??z.req?.headers?.get("Authorization");if(!A)return z.json({message:"Unauthorized",error:"No token provided"},401);if(A.startsWith("Bearer "))A=A.slice(7);let C=q?.verify(A,B);if(!C)return z.json({message:"Unauthorized",error:"Token could not be decoded"},401);let F=await E.findById(C._id).select("-password -refreshToken");if(!F)return z.json({message:"Unauthorized: User not found"},404);z.set("user",F);return}catch(A){let C="Invalid token";if(A.name==="TokenExpiredError")C="Token expired";else if(A.name==="JsonWebTokenError")C="Malformed or tampered token";return z.json({message:"Unauthorized",error:C},401)}}}var L=(q)=>{if(!q.app)throw new Error("Diesel app is not defined, please provide app to authenticateJwt Function");if(!q.jwt)throw new Error("JWT library is not defined, please provide jwt to authenticateJwt Function");if(!q.jwtSecret)q.jwtSecret=q.app.user_jwt_secret;let{routes:E,jwt:B,jwtSecret:z}=q,A=G(B,z);return(C)=>{if(!E?.length||E?.includes(C.url.pathname))return A(C)}},N=(q)=>{if(!q.app)throw new Error("Diesel app is not defined, please provide app to authenticateJwt Function");if(!q.userModel)throw new Error("User model is not defined, please provide userModel to authenticateJwt Function");if(!q.jwt)throw new Error("JWT library is not defined, please provide jwt to authenticateJwt Function");if(!q.jwtSecret)q.jwtSecret=q.app.user_jwt_secret;let{routes:E,jwt:B,jwtSecret:z,userModel:A}=q,C=H(B,A,z);return(F)=>{if(E?.length===0||E?.includes(F.url.pathname))return C(F)}};export{N as authenticateJwtDB,L as authenticateJwt};