diff --git a/server/api/user/[id]/shared-ip.get.ts b/server/api/user/[id]/shared-ip.get.ts new file mode 100644 index 0000000..6e44e6a --- /dev/null +++ b/server/api/user/[id]/shared-ip.get.ts @@ -0,0 +1,27 @@ +import { messages } from "~/lib/server/constants"; +import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin"; +import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; +import { User } from "~/models/user"; + +export default eventHandler(async (ev) => { + isLoggedIn(ev); + isAdmin(ev); + let idee = parseInt(getRouterParam(ev, "id")!); + if (Number.isNaN(idee)) throw createError({ statusCode: 400 }); + const user = await User.findById(idee); + if (!user) throw createError({ statusCode: 404, message: messages[404] }); + let fin: any = {}; + + for (const entry of user?.ipLog) { + fin[entry.ip] = ( + await User.find({ + "ipLog.ip": { + $in: [entry.ip], + }, + }) + .select("username _id") + .exec() + ).map((a) => a.toObject()); + } + return fin; +});