feat(RoleService): add root account when fetch admin ids

This commit is contained in:
무라쿠모 2024-05-14 11:19:28 +09:00
parent 0ec6a0fbfb
commit dbf27060dd
No known key found for this signature in database
GPG key ID: 139D6573F92DA9F7

View file

@ -447,11 +447,13 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
public async getModeratorIds(includeAdmins = true): Promise<MiUser['id'][]> { public async getModeratorIds(includeAdmins = true): Promise<MiUser['id'][]> {
const roles = await this.rolesCache.fetch(() => this.rolesRepository.findBy({})); const roles = await this.rolesCache.fetch(() => this.rolesRepository.findBy({}));
const moderatorRoles = includeAdmins ? roles.filter(r => r.isModerator || r.isAdministrator) : roles.filter(r => r.isModerator); const moderatorRoles = includeAdmins ? roles.filter(r => r.isModerator || r.isAdministrator) : roles.filter(r => r.isModerator);
const root = await this.usersRepository.findOneByOrFail({ isRoot: true });
const assigns = moderatorRoles.length > 0 ? await this.roleAssignmentsRepository.findBy({ const assigns = moderatorRoles.length > 0 ? await this.roleAssignmentsRepository.findBy({
roleId: In(moderatorRoles.map(r => r.id)), roleId: In(moderatorRoles.map(r => r.id)),
}) : []; }) : [];
// TODO: isRootなアカウントも含める const result = assigns.map(a => a.userId);
return assigns.map(a => a.userId); if (includeAdmins) result.push(root.id);
return result;
} }
@bindThis @bindThis
@ -467,11 +469,13 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
public async getAdministratorIds(): Promise<MiUser['id'][]> { public async getAdministratorIds(): Promise<MiUser['id'][]> {
const roles = await this.rolesCache.fetch(() => this.rolesRepository.findBy({})); const roles = await this.rolesCache.fetch(() => this.rolesRepository.findBy({}));
const administratorRoles = roles.filter(r => r.isAdministrator); const administratorRoles = roles.filter(r => r.isAdministrator);
const root = await this.usersRepository.findOneByOrFail({ isRoot: true });
const assigns = administratorRoles.length > 0 ? await this.roleAssignmentsRepository.findBy({ const assigns = administratorRoles.length > 0 ? await this.roleAssignmentsRepository.findBy({
roleId: In(administratorRoles.map(r => r.id)), roleId: In(administratorRoles.map(r => r.id)),
}) : []; }) : [];
// TODO: isRootなアカウントも含める const result = assigns.map(a => a.userId);
return assigns.map(a => a.userId); result.push(root.id);
return result;
} }
@bindThis @bindThis