summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-05-10 17:33:21 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-05-10 17:33:21 +0900
commit796252357ed2a7f601d231025097a96e311a3520 (patch)
tree0823b7541d81f13af6d61634b24337d84eae22f3 /src/server/api
parentMerge branch 'develop' (diff)
parent11.12.0 (diff)
downloadmisskey-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.ts2
-rw-r--r--src/server/api/endpoints/admin/unverify-user.ts38
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts11
-rw-r--r--src/server/api/endpoints/admin/verify-user.ts38
-rw-r--r--src/server/api/endpoints/meta.ts1
-rw-r--r--src/server/api/endpoints/notes/unrenote.ts60
-rw-r--r--src/server/api/endpoints/pinned-users.ts33
-rw-r--r--src/server/api/endpoints/users.ts2
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;
}