import jwt from "jsonwebtoken"; import { User } from "@models/user"; import { messages } from "@server/constants"; import { AccessToken } from "@models/oauth"; export default defineEventHandler(async (event) => { let ahead = (getHeaders(event).authorization || getCookie(event, "auth:token") || "")?.replace("Bearer ", ""); if (ahead) { let toktok: jwt.JwtPayload; try { toktok = jwt.verify(ahead, useRuntimeConfig().jwt) as jwt.JwtPayload; let user = await User.findById(toktok.id as number).exec(); if (user && toktok) event.context.currentUser = user; } catch (e) { const t = await AccessToken.findOne({ token: ahead }); if (!t) throw createError({ statusCode: 401, message: messages[401], }); let user = await User.findById(t.userID); if (user) event.context.currentUser = user; // else throw createError({statusCode: 401, message: messages[401]}) } } });