summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin/suspend-user.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/admin/suspend-user.ts
parentupdate deps (diff)
downloadmisskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/admin/suspend-user.ts')
-rw-r--r--src/server/api/endpoints/admin/suspend-user.ts84
1 files changed, 0 insertions, 84 deletions
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
deleted file mode 100644
index 364f258ce8..0000000000
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import deleteFollowing from '@/services/following/delete';
-import { Users, Followings, Notifications } from '@/models/index';
-import { User } from '@/models/entities/user';
-import { insertModerationLog } from '@/services/insert-moderation-log';
-import { doPostSuspend } from '@/services/suspend-user';
-import { publishUserEvent } from '@/services/stream';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- userId: {
- validator: $.type(ID),
- },
- }
-};
-
-export default define(meta, async (ps, me) => {
- const user = await Users.findOne(ps.userId as string);
-
- if (user == null) {
- throw new Error('user not found');
- }
-
- if (user.isAdmin) {
- throw new Error('cannot suspend admin');
- }
-
- if (user.isModerator) {
- throw new Error('cannot suspend moderator');
- }
-
- await Users.update(user.id, {
- isSuspended: true
- });
-
- insertModerationLog(me, 'suspend', {
- targetId: user.id,
- });
-
- // Terminate streaming
- if (Users.isLocalUser(user)) {
- publishUserEvent(user.id, 'terminate', {});
- }
-
- (async () => {
- await doPostSuspend(user).catch(e => {});
- await unFollowAll(user).catch(e => {});
- await readAllNotify(user).catch(e => {});
- })();
-});
-
-async function unFollowAll(follower: User) {
- const followings = await Followings.find({
- followerId: follower.id
- });
-
- for (const following of followings) {
- const followee = await Users.findOne({
- id: following.followeeId
- });
-
- if (followee == null) {
- throw `Cant find followee ${following.followeeId}`;
- }
-
- await deleteFollowing(follower, followee, true);
- }
-}
-
-async function readAllNotify(notifier: User) {
- await Notifications.update({
- notifierId: notifier.id,
- isRead: false,
- }, {
- isRead: true
- });
-}