From 6c752a69c0d3649072e7e4ed30025183bceb48f9 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 2 Jul 2024 19:05:38 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC=E5=90=8D?= =?UTF-8?q?=E3=81=8CUnicode=E5=88=B6=E5=BE=A1=E6=96=87=E5=AD=97=E3=81=A8?= =?UTF-8?q?=E3=82=B9=E3=83=9A=E3=83=BC=E3=82=B9=E3=81=AE=E3=81=BF=E3=81=A7?= =?UTF-8?q?=E6=A7=8B=E6=88=90=E3=81=95=E3=82=8C=E3=82=8B=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AFnull=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/backend/src/server/api/endpoints/i/update.ts | 10 +++++++++- packages/backend/test/e2e/endpoints.ts | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index b39b52bc41..e363b05625 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -252,6 +252,8 @@ export default class extends Endpoint { // eslint- const user = await this.usersRepository.findOneByOrFail({ id: _user.id }) as MiLocalUser; const isSecure = token == null; + const onlyControlCharsAndSpaceRegex = /^[\u0000-\u001F\u007F-\u009F\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069\s]+$/; + const updates = {} as Partial; const profileUpdates = {} as Partial; @@ -262,7 +264,13 @@ export default class extends Endpoint { // eslint- updates.name = null; } else { const trimmedName = ps.name.trim(); - updates.name = trimmedName === '' ? null : trimmedName; + if (trimmedName === '') { + updates.name = null; + } else if (onlyControlCharsAndSpaceRegex.test(trimmedName)) { + updates.name = null; + } else { + updates.name = trimmedName; + } } } if (ps.description !== undefined) profileUpdates.description = ps.description; diff --git a/packages/backend/test/e2e/endpoints.ts b/packages/backend/test/e2e/endpoints.ts index 2b101fdbe7..f01fdf1d00 100644 --- a/packages/backend/test/e2e/endpoints.ts +++ b/packages/backend/test/e2e/endpoints.ts @@ -134,6 +134,14 @@ describe('Endpoints', () => { assert.strictEqual(res.body.name, 'あ い う'); }); + test('名前にUnicode制御文字とスペースしか含まない場合はnullになる', async () => { + const res = await api('i/update', { + name: ' \u202e ', + }, alice); + assert.strictEqual(res.status, 200); + assert.strictEqual(res.body.name, null); + }); + test('誕生日の設定を削除できる', async () => { await api('i/update', { birthday: '2000-09-07',