summary refs log tree commit diff
path: root/api
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-02-18 10:47:53 +1100
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-02-18 10:47:53 +1100
commit93e3f069b5c0293d747f077edaf31f8ff99d8a56 (patch)
tree002aadd4f3c62ca03c3995ef7c520b270a060e2b /api
parentMerge branch 'master' into slowcord (diff)
parentAdded email sanitisation to /users/@me PATCH. Could previously have email as ... (diff)
downloadserver-93e3f069b5c0293d747f077edaf31f8ff99d8a56.tar.xz
Merge branch 'fix/claim_accounts' into slowcord
Diffstat (limited to 'api')
-rw-r--r--api/assets/schemas.json3
-rw-r--r--api/src/routes/users/@me/index.ts12
2 files changed, 13 insertions, 2 deletions
diff --git a/api/assets/schemas.json b/api/assets/schemas.json
index 4ffa44b8..818c8a61 100644
--- a/api/assets/schemas.json
+++ b/api/assets/schemas.json
@@ -7039,6 +7039,9 @@
 			},
 			"code": {
 				"type": "string"
+			},
+			"email": {
+				"type": "string"
 			}
 		},
 		"definitions": {
diff --git a/api/src/routes/users/@me/index.ts b/api/src/routes/users/@me/index.ts
index acca8910..93d2cb01 100644
--- a/api/src/routes/users/@me/index.ts
+++ b/api/src/routes/users/@me/index.ts
@@ -1,5 +1,5 @@
 import { Router, Request, Response } from "express";
-import { User, PrivateUserProjection, emitEvent, UserUpdateEvent, handleFile, FieldErrors } from "@fosscord/util";
+import { User, PrivateUserProjection, emitEvent, UserUpdateEvent, handleFile, FieldErrors, adjustEmail } from "@fosscord/util";
 import { route } from "@fosscord/api";
 import bcrypt from "bcrypt";
 
@@ -21,6 +21,7 @@ export interface UserModifySchema {
 	password?: string;
 	new_password?: string;
 	code?: string;
+	email?: string;
 }
 
 router.get("/", route({}), async (req: Request, res: Response) => {
@@ -46,6 +47,12 @@ router.patch("/", route({ body: "UserModifySchema" }), async (req: Request, res:
 		}
 	}
 
+	if (body.email) {
+		body.email = adjustEmail(body.email);
+		if (!body.email)
+			throw FieldErrors({ email: { message: req.t("auth:register.EMAIL_INVALID"), code: "EMAIL_INVALID" } });
+	}
+
 	user.assign(body);
 
 	if (body.new_password) {
@@ -58,7 +65,8 @@ router.patch("/", route({ body: "UserModifySchema" }), async (req: Request, res:
 	}
 
 	var check_username = body?.username?.replace(/\s/g, '');
-	if(!check_username) {
+	//claiming an account does not provide username so check if username in body before throw
+	if (!check_username && body.username) {
 		throw FieldErrors({
 			username: { code: "BASE_TYPE_REQUIRED", message: req.t("common:field.BASE_TYPE_REQUIRED") }
 		});