From adcb84f6e7ac1a3b9013cca308880b5e4d73ad74 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:00:12 +0900 Subject: [PATCH] fix condition --- .../api/endpoints/admin/accounts/create.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts index ada3607519..5d58cd6fa2 100644 --- a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts @@ -70,19 +70,22 @@ export default class extends Endpoint { // eslint- private instanceActorService: InstanceActorService, ) { super(meta, paramDef, async (ps, _me, token) => { - if (ps.initialPassword != null && this.config.initialPassword != null) { - if (ps.initialPassword !== this.config.initialPassword) { - // 初期パスワードが違う場合 - throw new ApiError(meta.errors.wrongInitialPassword); - } - } else if (this.config.initialPassword == null && (ps.initialPassword != null && ps.initialPassword.trim() !== '')) { - // 初期パスワードが設定されていないのに初期パスワードが入力された場合 - throw new ApiError(meta.errors.wrongInitialPassword); - } - const me = _me ? await this.usersRepository.findOneByOrFail({ id: _me.id }) : null; const realUsers = await this.instanceActorService.realLocalUsersPresent(); - if ((realUsers && !me?.isRoot) || token !== null) { + + if (!realUsers && me == null && token == null) { + // 初回セットアップの場合 + if (ps.initialPassword != null && this.config.initialPassword != null) { + if (ps.initialPassword !== this.config.initialPassword) { + // 初期パスワードが違う場合 + throw new ApiError(meta.errors.wrongInitialPassword); + } + } else if (this.config.initialPassword == null && (ps.initialPassword != null && ps.initialPassword.trim() !== '')) { + // 初期パスワードが設定されていないのに初期パスワードが入力された場合 + throw new ApiError(meta.errors.wrongInitialPassword); + } + } else if ((realUsers && !me?.isRoot) || token !== null) { + // 初回セットアップではなく、管理者でない場合 throw new ApiError(meta.errors.accessDenied); }