diff options
| author | Nafu Satsuki <satsuki@nafusoft.dev> | 2023-11-18 05:20:11 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-11-18 21:07:47 +0900 |
| commit | 2b6f789a5bc741d9092d29ea17d03be794ef5d51 (patch) | |
| tree | 1521e71e2da7018c6d51ff90b6132ebb18b01048 /packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts | |
| parent | lint fix (diff) | |
| download | sharkey-2b6f789a5bc741d9092d29ea17d03be794ef5d51.tar.gz sharkey-2b6f789a5bc741d9092d29ea17d03be794ef5d51.tar.bz2 sharkey-2b6f789a5bc741d9092d29ea17d03be794ef5d51.zip | |
feat(moderation): モデレーターがユーザーのアイコンもしくはバナー画像を未設定状態にできる機能を追加 (MisskeyIO#222)
Co-authored-by: まっちゃとーにゅ <17376330+u1-liquid@users.noreply.github.com>
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts b/packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts new file mode 100644 index 0000000000..d3c78d7fb6 --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/delete-user-avatar.ts @@ -0,0 +1,48 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Inject, Injectable } from '@nestjs/common'; +import type { UsersRepository } from '@/models/_.js'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import { DI } from '@/di-symbols.js'; + +export const meta = { + tags: ['admin'], + + requireCredential: true, + requireModerator: true, +} as const; + +export const paramDef = { + type: 'object', + properties: { + userId: { type: 'string', format: 'misskey:id' }, + }, + required: ['userId'], +} as const; + +// eslint-disable-next-line import/no-default-export +@Injectable() +export default class extends Endpoint<typeof meta, typeof paramDef> { + constructor( + @Inject(DI.usersRepository) + private usersRepository: UsersRepository, + ) { + super(meta, paramDef, async (ps, me) => { + const user = await this.usersRepository.findOneBy({ id: ps.userId }); + + if (user == null) { + throw new Error('user not found'); + } + + await this.usersRepository.update(user.id, { + avatar: null, + avatarId: null, + avatarUrl: null, + avatarBlurhash: null, + }); + }); + } +} |