diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-05-10 17:33:21 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-05-10 17:33:21 +0900 |
| commit | 796252357ed2a7f601d231025097a96e311a3520 (patch) | |
| tree | 0823b7541d81f13af6d61634b24337d84eae22f3 /src/server/api | |
| parent | Merge branch 'develop' (diff) | |
| parent | 11.12.0 (diff) | |
| download | misskey-796252357ed2a7f601d231025097a96e311a3520.tar.gz misskey-796252357ed2a7f601d231025097a96e311a3520.tar.bz2 misskey-796252357ed2a7f601d231025097a96e311a3520.zip | |
Merge branch 'develop'
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/admin/show-users.ts | 2 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/unverify-user.ts | 38 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/update-meta.ts | 11 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/verify-user.ts | 38 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 1 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/unrenote.ts | 60 | ||||
| -rw-r--r-- | src/server/api/endpoints/pinned-users.ts | 33 | ||||
| -rw-r--r-- | src/server/api/endpoints/users.ts | 2 |
8 files changed, 105 insertions, 80 deletions
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts index 97760ae797..8733d87a38 100644 --- a/src/server/api/endpoints/admin/show-users.ts +++ b/src/server/api/endpoints/admin/show-users.ts @@ -36,7 +36,6 @@ export const meta = { 'admin', 'moderator', 'adminOrModerator', - 'verified', 'silenced', 'suspended', ]), @@ -61,7 +60,6 @@ export default define(meta, async (ps, me) => { case 'admin': query.where('user.isAdmin = TRUE'); break; case 'moderator': query.where('user.isModerator = TRUE'); break; case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break; - case 'verified': query.where('user.isVerified = TRUE'); break; case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break; case 'silenced': query.where('user.isSilenced = TRUE'); break; case 'suspended': query.where('user.isSuspended = TRUE'); break; diff --git a/src/server/api/endpoints/admin/unverify-user.ts b/src/server/api/endpoints/admin/unverify-user.ts deleted file mode 100644 index b215dbf10d..0000000000 --- a/src/server/api/endpoints/admin/unverify-user.ts +++ /dev/null @@ -1,38 +0,0 @@ -import $ from 'cafy'; -import { ID } from '../../../../misc/cafy-id'; -import define from '../../define'; -import { Users } from '../../../../models'; - -export const meta = { - desc: { - 'ja-JP': '指定したユーザーの公式アカウントを解除します。', - 'en-US': 'Mark a user as unverified.' - }, - - tags: ['admin'], - - requireCredential: true, - requireModerator: true, - - params: { - userId: { - validator: $.type(ID), - desc: { - 'ja-JP': '対象のユーザーID', - 'en-US': 'The user ID which you want to unverify' - } - }, - } -}; - -export default define(meta, async (ps) => { - const user = await Users.findOne(ps.userId as string); - - if (user == null) { - throw new Error('user not found'); - } - - await Users.update(user.id, { - isVerified: false - }); -}); diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index 1f5dd5364f..8a2019fcc1 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -56,6 +56,13 @@ export const meta = { } }, + pinnedUsers: { + validator: $.optional.nullable.arr($.str), + desc: { + 'ja-JP': 'ピン留めユーザー' + } + }, + hiddenTags: { validator: $.optional.nullable.arr($.str), desc: { @@ -353,6 +360,10 @@ export default define(meta, async (ps) => { set.useStarForReactionFallback = ps.useStarForReactionFallback; } + if (Array.isArray(ps.pinnedUsers)) { + set.pinnedUsers = ps.pinnedUsers; + } + if (Array.isArray(ps.hiddenTags)) { set.hiddenTags = ps.hiddenTags; } diff --git a/src/server/api/endpoints/admin/verify-user.ts b/src/server/api/endpoints/admin/verify-user.ts deleted file mode 100644 index c1b447a92b..0000000000 --- a/src/server/api/endpoints/admin/verify-user.ts +++ /dev/null @@ -1,38 +0,0 @@ -import $ from 'cafy'; -import { ID } from '../../../../misc/cafy-id'; -import define from '../../define'; -import { Users } from '../../../../models'; - -export const meta = { - desc: { - 'ja-JP': '指定したユーザーを公式アカウントにします。', - 'en-US': 'Mark a user as verified.' - }, - - tags: ['admin'], - - requireCredential: true, - requireModerator: true, - - params: { - userId: { - validator: $.type(ID), - desc: { - 'ja-JP': '対象のユーザーID', - 'en-US': 'The user ID which you want to verify' - } - }, - } -}; - -export default define(meta, async (ps) => { - const user = await Users.findOne(ps.userId as string); - - if (user == null) { - throw new Error('user not found'); - } - - await Users.update(user.id, { - isVerified: true - }); -}); diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index 793eb5a204..5667e7fbb4 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -160,6 +160,7 @@ export default define(meta, async (ps, me) => { if (me && (me.isAdmin || me.isModerator)) { response.useStarForReactionFallback = instance.useStarForReactionFallback; + response.pinnedUsers = instance.pinnedUsers; response.hiddenTags = instance.hiddenTags; response.recaptchaSecretKey = instance.recaptchaSecretKey; response.proxyAccount = instance.proxyAccount; diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts new file mode 100644 index 0000000000..a2070fd221 --- /dev/null +++ b/src/server/api/endpoints/notes/unrenote.ts @@ -0,0 +1,60 @@ +import $ from 'cafy'; +import { ID } from '../../../../misc/cafy-id'; +import deleteNote from '../../../../services/note/delete'; +import define from '../../define'; +import * as ms from 'ms'; +import { getNote } from '../../common/getters'; +import { ApiError } from '../../error'; +import { Notes } from '../../../../models'; + +export const meta = { + desc: { + 'ja-JP': '指定した投稿のRenoteを解除します。', + }, + + tags: ['notes'], + + requireCredential: true, + + kind: 'write:notes', + + limit: { + duration: ms('1hour'), + max: 300, + minInterval: ms('1sec') + }, + + params: { + noteId: { + validator: $.type(ID), + desc: { + 'ja-JP': '対象の投稿のID', + 'en-US': 'Target note ID.' + } + } + }, + + errors: { + noSuchNote: { + message: 'No such note.', + code: 'NO_SUCH_NOTE', + id: 'efd4a259-2442-496b-8dd7-b255aa1a160f' + }, + } +}; + +export default define(meta, async (ps, user) => { + const note = await getNote(ps.noteId).catch(e => { + if (e.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote); + throw e; + }); + + const renotes = await Notes.find({ + userId: user.id, + renoteId: note.id + }); + + for (const note of renotes) { + deleteNote(user, note); + } +}); diff --git a/src/server/api/endpoints/pinned-users.ts b/src/server/api/endpoints/pinned-users.ts new file mode 100644 index 0000000000..de0e17a2ec --- /dev/null +++ b/src/server/api/endpoints/pinned-users.ts @@ -0,0 +1,33 @@ +import define from '../define'; +import { Users } from '../../../models'; +import { types, bool } from '../../../misc/schema'; +import { fetchMeta } from '../../../misc/fetch-meta'; +import parseAcct from '../../../misc/acct/parse'; +import { User } from '../../../models/entities/user'; + +export const meta = { + tags: ['users'], + + requireCredential: false, + + params: { + }, + + res: { + type: types.array, + optional: bool.false, nullable: bool.false, + items: { + type: types.object, + optional: bool.false, nullable: bool.false, + ref: 'User', + } + }, +}; + +export default define(meta, async (ps, me) => { + const meta = await fetchMeta(); + + const users = await Promise.all(meta.pinnedUsers.map(acct => Users.findOne(parseAcct(acct)))); + + return await Users.packMany(users.filter(x => x !== undefined) as User[], me, { detail: true }); +}); diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts index be317223b6..539f2ef897 100644 --- a/src/server/api/endpoints/users.ts +++ b/src/server/api/endpoints/users.ts @@ -37,7 +37,6 @@ export const meta = { 'admin', 'moderator', 'adminOrModerator', - 'verified', 'alive' ]), default: 'all' @@ -71,7 +70,6 @@ export default define(meta, async (ps, me) => { case 'admin': query.where('user.isAdmin = TRUE'); break; case 'moderator': query.where('user.isModerator = TRUE'); break; case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break; - case 'verified': query.where('user.isVerified = TRUE'); break; case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break; } |