summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/admin/silence-user.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-02-26 23:18:30 -0500
committerHazelnoot <acomputerdog@gmail.com>2025-03-02 13:38:02 -0500
commit27d43879a24b9243657af50d32d459a36b6596ec (patch)
tree29c224698365a5163022a01fe2f7acd9793d4d9f /packages/backend/src/server/api/endpoints/admin/silence-user.ts
parentmerge: Remove assertActivityMatchesUrls in favor of three-way same-authority ... (diff)
downloadsharkey-27d43879a24b9243657af50d32d459a36b6596ec.tar.gz
sharkey-27d43879a24b9243657af50d32d459a36b6596ec.tar.bz2
sharkey-27d43879a24b9243657af50d32d459a36b6596ec.zip
add moderation logs for many endpoints
- `/admin/delete-all-files-of-a-user` - `/admin/nsfw-user` - `/admin/unnsfw-user` - `/admin/silence-user` - `/admin/unsilence-user` - `/admin/accounts/create` - `/admin/drive/clean-remote-files` - `/admin/drive/cleanup` - `/admin/emoji/set-category-bulk` - `/admin/emoji/set-license-bulk` - `/admin/emoji/set-aliases-bulk` - `/admin/emoji/add-aliases-bulk` - `/admin/emoji/remove-aliases-bulk` - `/admin/emoji/import-zip` - `/admin/federation/delete-all-files` - `/admin/federation/remove-all-following` - `/admin/promo/create` - `/admin/relay/add` - `/admin/relay/remove`
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin/silence-user.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/silence-user.ts27
1 files changed, 19 insertions, 8 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/silence-user.ts b/packages/backend/src/server/api/endpoints/admin/silence-user.ts
index 7e6045049a..eed21c6576 100644
--- a/packages/backend/src/server/api/endpoints/admin/silence-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/silence-user.ts
@@ -8,6 +8,9 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import type { UsersRepository } from '@/models/_.js';
import { DI } from '@/di-symbols.js';
import { RoleService } from '@/core/RoleService.js';
+import { CacheService } from '@/core/CacheService.js';
+import { ModerationLogService } from '@/core/ModerationLogService.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
export const meta = {
tags: ['admin'],
@@ -29,24 +32,32 @@ export const paramDef = {
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
@Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
-
- private roleService: RoleService,
+ private readonly usersRepository: UsersRepository,
+ private readonly cacheService: CacheService,
+ private readonly moderationLogService: ModerationLogService,
+ private readonly roleService: RoleService,
+ private readonly globalEventService: GlobalEventService,
) {
super(meta, paramDef, async (ps, me) => {
- const user = await this.usersRepository.findOneBy({ id: ps.userId });
-
- if (user == null) {
- throw new Error('user not found');
- }
+ const user = await this.cacheService.findUserById(ps.userId);
if (await this.roleService.isModerator(user)) {
throw new Error('cannot silence moderator account');
}
+ await this.moderationLogService.log(me, 'silenceUser', {
+ userId: ps.userId,
+ userUsername: user.username,
+ userHost: user.host,
+ });
+
await this.usersRepository.update(user.id, {
isSilenced: true,
});
+
+ this.globalEventService.publishInternalEvent(user.host == null ? 'localUserUpdated' : 'remoteUserUpdated', {
+ id: user.id,
+ });
});
}
}