import jwt from "jsonwebtoken"; import { log } from "@server/logger"; import { messages } from "@server/constants"; import { User } from "@models/user"; import { AccessToken } from "@models/oauth"; import { IJwt } from "@server/types/authstuff"; export default defineEventHandler(async (event) => { let ahead = (getHeaders(event).authorization || "")?.replace("Bearer ", ""); if (ahead) { let toktok: jwt.JwtPayload; try { toktok = jwt.verify(ahead, useRuntimeConfig().jwt) as IJwt; 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; } } });