next/server/api/user/me/profile.put.ts

39 lines
1.1 KiB
TypeScript
Raw Normal View History

import san from "sanitize-html";
import axios from "axios";
import { Profile } from "@client/types/form/myStuff";
import { apiRoot, h2m } from "@server/constants";
import forumId from "@server/forumId";
import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
import { User } from "@models/user";
export default eventHandler(async (ev) => {
isLoggedIn(ev);
const body = await readBody<Profile>(ev);
const update: any = {
"profile.occupation": body.occupation,
"profile.website": body.website,
"profile.blog": body.blog,
"profile.bio": san(body.bio),
"profile.showEmail": !!body.showEmail,
"profile.avatar": body.avatar,
};
let d = {
signature: h2m.turndown(body.signature),
_uid: 1,
};
let lookup = await forumId(ev.context.currentUser!._id!);
await axios.put(`${apiRoot}/v3/users/${lookup}`, {
body: d,
headers: {
Authorization: `Bearer ${useRuntimeConfig().nodebb.masterToken}`,
},
});
await User.findByIdAndUpdate(ev.context.currentUser?._id, {
$set: update,
});
return {
success: true,
message: "Profile updated successfully",
};
});