From 8a7f5a44a89e186a16e43ebc62e627cedbe1e7e1 Mon Sep 17 00:00:00 2001 From: samunohito <46447427+samunohito@users.noreply.github.com> Date: Sat, 30 May 2026 16:35:34 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=82=B3=E3=83=B3=E3=83=91=E3=83=8D?= =?UTF-8?q?=E3=81=8B=E3=82=89=E3=83=91=E3=82=B9=E3=83=AF=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88=E3=81=97=E3=81=9F=E6=99=82?= =?UTF-8?q?=E3=81=AB=E7=99=BA=E7=94=9F=E3=81=97=E3=81=9F=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=82=92=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0?= =?UTF-8?q?=E3=81=A7=E5=87=BA=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../api/endpoints/admin/reset-password.ts | 18 ++++++++++++++++-- packages/frontend/src/pages/admin-user.vue | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3853b76e4dc..2b9a676fb38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### General - Feat: ジョブキュー管理画面からキューの一時停止/再開ができるように - Feat: アンテナのタイムラインから個別のノートを削除できるように +- Fix: コンパネからrootユーザーのパスワードをリセットしようとした際にエラーが通知されない問題を修正 ### Client - Fix: URLプレビューのプレイヤーをウィンドウで開いたとき、プレイヤーが読み込まれるまでの間 `Invalid URL` と表示される問題を修正 diff --git a/packages/backend/src/server/api/endpoints/admin/reset-password.ts b/packages/backend/src/server/api/endpoints/admin/reset-password.ts index fc246631c29..f19ffa173bc 100644 --- a/packages/backend/src/server/api/endpoints/admin/reset-password.ts +++ b/packages/backend/src/server/api/endpoints/admin/reset-password.ts @@ -6,6 +6,7 @@ import { Inject, Injectable } from '@nestjs/common'; import bcrypt from 'bcryptjs'; import { Endpoint } from '@/server/api/endpoint-base.js'; +import { ApiError } from '@/server/api/error.js'; import type { UsersRepository, UserProfilesRepository, MiMeta } from '@/models/_.js'; import { DI } from '@/di-symbols.js'; import { secureRndstr } from '@/misc/secure-rndstr.js'; @@ -18,6 +19,19 @@ export const meta = { requireModerator: true, kind: 'write:admin:reset-password', + errors: { + noSuchUser: { + message: 'No such user.', + code: 'NO_SUCH_USER', + id: 'ccafc7fe-5074-4edd-9dc0-8ef9ef6a701d', + }, + cannotResetPasswordOfRootUser: { + message: 'Cannot reset password of the root user.', + code: 'CANNOT_RESET_PASSWORD_OF_ROOT_USER', + id: 'f28fc207-42ca-44c7-a577-44b4f0ec5999', + }, + }, + res: { type: 'object', optional: false, nullable: false, @@ -58,11 +72,11 @@ export default class extends Endpoint { // eslint- const user = await this.usersRepository.findOneBy({ id: ps.userId }); if (user == null) { - throw new Error('user not found'); + throw new ApiError(meta.errors.noSuchUser); } if (this.serverSettings.rootUserId === user.id) { - throw new Error('cannot reset password of root'); + throw new ApiError(meta.errors.cannotResetPasswordOfRootUser); } const passwd = secureRndstr(8); diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue index b084eb5ab2d..e8e5475729a 100644 --- a/packages/frontend/src/pages/admin-user.vue +++ b/packages/frontend/src/pages/admin-user.vue @@ -334,7 +334,7 @@ async function resetPassword() { if (confirm.canceled) { return; } else { - const { password } = await misskeyApi('admin/reset-password', { + const { password } = await os.apiWithDialog('admin/reset-password', { userId: user.value.id, }); os.alert({