next/server/api/user/[id]/shared-ip.get.ts

31 lines
814 B
TypeScript

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],
},
_id: {
$nin: [idee],
},
})
.select("username _id")
.exec()
).map((a) => a.toObject());
}
return fin;
});