diff --git a/server/middleware/05.currentUser.ts b/server/middleware/05.currentUser.ts index 0e2e220..88d81ff 100644 --- a/server/middleware/05.currentUser.ts +++ b/server/middleware/05.currentUser.ts @@ -1,26 +1,26 @@ 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"; +import { IUser, User } from "@models/user"; export default defineEventHandler(async (event) => { - let ahead = (getHeaders(event).authorization || "")?.replace("Bearer ", ""); + let ahead = (getHeaders(event).authorization || getHeaders(event).Authorization || getCookie(event, "rockfic_cookie"))?.replace("Bearer ", ""); if (ahead) { - let toktok: jwt.JwtPayload; + let toktok: any; + let user: IUser | null = null; 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); + toktok = jwt.verify(ahead, useRuntimeConfig().jwt); + console.log(toktok); + if (toktok?.sub) { + user = await User.findById(toktok.sub as number) + .select("-password -auth -ipLog") + .exec(); + } else if (toktok.id) { + user = await User.findById(toktok.id as number) + .select("-password -auth -ipLog") + .exec(); + } + } catch (E) { + console.error(E); + } finally { if (user) event.context.currentUser = user; } }