diff options
| author | mmorita <link.morita@gmail.com> | 2023-03-09 07:58:53 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-09 07:58:53 +0900 |
| commit | aad70a97dbcbecb5d0edad8ba1db1280c5f8878e (patch) | |
| tree | 9e0befbdec9258b31fbdbd5e7c4f39279c6e387e /packages/backend/src/server/api/endpoints | |
| parent | fix(server): videoThumbnailGeneratorが適用されない問題を修正 (diff) | |
| download | sharkey-aad70a97dbcbecb5d0edad8ba1db1280c5f8878e.tar.gz sharkey-aad70a97dbcbecb5d0edad8ba1db1280c5f8878e.tar.bz2 sharkey-aad70a97dbcbecb5d0edad8ba1db1280c5f8878e.zip | |
fix: チャンネルの編集権限をチャンネル所有者とモデレーターに限定する (#10268)
* チャンネルの編集権限をチャンネルオーナーとモデレーターに限定する
* PR 指摘点対応(共有ボタンを全員に表示、$i の nullable 対応、fix a typo)
* everyOne -> share
Diffstat (limited to 'packages/backend/src/server/api/endpoints')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/channels/update.ts | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/channels/update.ts b/packages/backend/src/server/api/endpoints/channels/update.ts index d006e89bd2..a86cc2565a 100644 --- a/packages/backend/src/server/api/endpoints/channels/update.ts +++ b/packages/backend/src/server/api/endpoints/channels/update.ts @@ -4,6 +4,7 @@ import type { DriveFilesRepository, ChannelsRepository } from '@/models/index.js import { ChannelEntityService } from '@/core/entities/ChannelEntityService.js'; import { DI } from '@/di-symbols.js'; import { ApiError } from '../../error.js'; +import { RoleService } from '@/core/RoleService.js'; export const meta = { tags: ['channels'], @@ -61,7 +62,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { private driveFilesRepository: DriveFilesRepository, private channelEntityService: ChannelEntityService, - ) { + + private roleService: RoleService, + ) { super(meta, paramDef, async (ps, me) => { const channel = await this.channelsRepository.findOneBy({ id: ps.channelId, @@ -71,7 +74,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { throw new ApiError(meta.errors.noSuchChannel); } - if (channel.userId !== me.id) { + const iAmModerator = await this.roleService.isModerator(me); + if (channel.userId !== me.id && !iAmModerator) { throw new ApiError(meta.errors.accessDenied); } |