From c86363b766da660595b3d5d01a4b0d8ad96dea7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Wed, 11 Oct 2023 16:45:39 -0400 Subject: [PATCH] feat(api): create endpoint to update user profile --- server/api/user/me/profile.put.ts | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 server/api/user/me/profile.put.ts diff --git a/server/api/user/me/profile.put.ts b/server/api/user/me/profile.put.ts new file mode 100644 index 0000000..d6fe683 --- /dev/null +++ b/server/api/user/me/profile.put.ts @@ -0,0 +1,38 @@ +import san from "sanitize-html"; +import axios from "axios"; +import { Profile } from "~/lib/client/types/form/myStuff"; +import { apiRoot, h2m } from "~/lib/server/constants"; +import forumId from "~/lib/server/forumId"; +import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; +import { User } from "~/models/user"; + +export default eventHandler(async (ev) => { + isLoggedIn(ev); + const body = await readBody(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", + }; +});