diff options
author | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-01-14 13:08:48 +0100 |
---|---|---|
committer | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-01-14 13:08:48 +0100 |
commit | 66df10d6b02cb1bed437665bc293dbcd5b9c73ff (patch) | |
tree | c3aa28e8a0f80a25260512c1dfb9c760c54f671c /src/api/routes/users/@me/index.ts | |
parent | Update openapi (diff) | |
download | server-66df10d6b02cb1bed437665bc293dbcd5b9c73ff.tar.xz |
Move endpoints to respective versions, split out non implemented routes
Signed-off-by: TheArcaneBrony <myrainbowdash949@gmail.com>
Diffstat (limited to 'src/api/routes/users/@me/index.ts')
-rw-r--r-- | src/api/routes/users/@me/index.ts | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts deleted file mode 100644 index 37356d9d..00000000 --- a/src/api/routes/users/@me/index.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { Router, Request, Response } from "express"; -import { - User, - PrivateUserProjection, - emitEvent, - UserUpdateEvent, - handleFile, - FieldErrors, - adjustEmail, - Config, - UserModifySchema, - generateToken, -} from "@fosscord/util"; -import { route } from "@fosscord/api"; -import bcrypt from "bcrypt"; - -const router: Router = Router(); - -router.get("/", route({}), async (req: Request, res: Response) => { - res.json( - await User.findOne({ - select: PrivateUserProjection, - where: { id: req.user_id }, - }), - ); -}); - -router.patch( - "/", - route({ body: "UserModifySchema" }), - async (req: Request, res: Response) => { - const body = req.body as UserModifySchema; - - const user = await User.findOneOrFail({ - where: { id: req.user_id }, - select: [...PrivateUserProjection, "data"], - }); - - // Populated on password change - var newToken: string | undefined; - - if (body.avatar) - body.avatar = await handleFile( - `/avatars/${req.user_id}`, - body.avatar as string, - ); - if (body.banner) - body.banner = await handleFile( - `/banners/${req.user_id}`, - body.banner as string, - ); - - if (body.password) { - if (user.data?.hash) { - const same_password = await bcrypt.compare( - body.password, - user.data.hash || "", - ); - if (!same_password) { - throw FieldErrors({ - password: { - message: req.t("auth:login.INVALID_PASSWORD"), - code: "INVALID_PASSWORD", - }, - }); - } - } else { - user.data.hash = await bcrypt.hash(body.password, 12); - } - } - - if (body.email) { - body.email = adjustEmail(body.email); - if (!body.email && Config.get().register.email.required) - throw FieldErrors({ - email: { - message: req.t("auth:register.EMAIL_INVALID"), - code: "EMAIL_INVALID", - }, - }); - if (!body.password) - throw FieldErrors({ - password: { - message: req.t("auth:register.INVALID_PASSWORD"), - code: "INVALID_PASSWORD", - }, - }); - } - - if (body.new_password) { - if (!body.password && !user.email) { - throw FieldErrors({ - password: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), - }, - }); - } - user.data.hash = await bcrypt.hash(body.new_password, 12); - user.data.valid_tokens_since = new Date(); - newToken = (await generateToken(user.id)) as string; - } - - if (body.username) { - var check_username = body?.username?.replace(/\s/g, ""); - if (!check_username) { - throw FieldErrors({ - username: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), - }, - }); - } - } - - if (body.discriminator) { - if ( - await User.findOne({ - where: { - discriminator: body.discriminator, - username: body.username || user.username, - }, - }) - ) { - throw FieldErrors({ - discriminator: { - code: "INVALID_DISCRIMINATOR", - message: "This discriminator is already in use.", - }, - }); - } - } - - user.assign(body); - user.validate(); - await user.save(); - - // @ts-ignore - delete user.data; - - // TODO: send update member list event in gateway - await emitEvent({ - event: "USER_UPDATE", - user_id: req.user_id, - data: user, - } as UserUpdateEvent); - - res.json({ - ...user, - newToken, - }); - }, -); - -export default router; -// {"message": "Invalid two-factor code", "code": 60008} |