summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin/suspend-user.ts
blob: 8698120cdb245b854119401a6e49549a0640414d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import $ from 'cafy';
import ID from '../../../../misc/cafy-id';
import getParams from '../../get-params';
import User from '../../../../models/user';

export const meta = {
  desc: {
    ja: '指定したユーザーを凍結します。',
    en: 'Suspend a user.'
  },

  requireCredential: true,
  requireAdmin: true,

  params: {
    userId: $.type(ID).note({
      desc: {
        ja: '対象のユーザーID',
        en: 'The user ID which you want to suspend'
      }
    }),
  }
};

export default (params: any) => new Promise(async (res, rej) => {
  const [ps, psErr] = getParams(meta, params);
  if (psErr) return rej(psErr);

  const user = await User.findOne({
    _id: ps.userId
  });

  if (user == null) {
    return rej('user not found');
  }

  await User.findOneAndUpdate({
    _id: user._id
  }, {
      $set: {
        isSuspended: true
      }
    });

  res();
});