diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2019-01-26 17:53:35 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-01-26 17:53:35 +0900 |
| commit | 0854f2e180be7b2ed4e7ea68d7f45cc156a95627 (patch) | |
| tree | ddf9b81d6a0b3c2d3e85ba73ae3aab3c6107221a /src/server | |
| parent | Resolve #2253 (diff) | |
| download | sharkey-0854f2e180be7b2ed4e7ea68d7f45cc156a95627.tar.gz sharkey-0854f2e180be7b2ed4e7ea68d7f45cc156a95627.tar.bz2 sharkey-0854f2e180be7b2ed4e7ea68d7f45cc156a95627.zip | |
管理画面からリモートユーザー情報を更新できるように (#3992)
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/api/common/getters.ts | 42 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/update-remote-user.ts | 36 |
2 files changed, 78 insertions, 0 deletions
diff --git a/src/server/api/common/getters.ts b/src/server/api/common/getters.ts index 1fce58b20a..1cd054cab1 100644 --- a/src/server/api/common/getters.ts +++ b/src/server/api/common/getters.ts @@ -1,5 +1,6 @@ import * as mongo from 'mongodb'; import Note from "../../../models/note"; +import User, { isRemoteUser, isLocalUser } from "../../../models/user"; /** * Get valied note for API processing @@ -16,3 +17,44 @@ export async function getValiedNote(noteId: mongo.ObjectID) { return note; } + +/** + * Get user for API processing + */ +export async function getUser(userId: mongo.ObjectID) { + const user = await User.findOne({ + _id: userId + }); + + if (user == null) { + throw 'user not found'; + } + + return user; +} + +/** + * Get remote user for API processing + */ +export async function getRemoteUser(userId: mongo.ObjectID) { + const user = await getUser(userId); + + if (!isRemoteUser(user)) { + throw 'user is not a remote user'; + } + + return user; +} + +/** + * Get local user for API processing + */ +export async function getLocalUser(userId: mongo.ObjectID) { + const user = await getUser(userId); + + if (!isLocalUser(user)) { + throw 'user is not a local user'; + } + + return user; +} diff --git a/src/server/api/endpoints/admin/update-remote-user.ts b/src/server/api/endpoints/admin/update-remote-user.ts new file mode 100644 index 0000000000..9288ce1fb7 --- /dev/null +++ b/src/server/api/endpoints/admin/update-remote-user.ts @@ -0,0 +1,36 @@ +import * as mongo from 'mongodb'; +import $ from 'cafy'; +import ID, { transform } from '../../../../misc/cafy-id'; +import define from '../../define'; +import { getRemoteUser } from '../../common/getters'; +import { updatePerson } from '../../../../remote/activitypub/models/person'; + +export const meta = { + desc: { + 'ja-JP': '指定されたリモートユーザーの情報を更新します。', + 'en-US': 'Update specified remote user information.' + }, + + requireCredential: true, + requireModerator: true, + + params: { + userId: { + validator: $.type(ID), + transform: transform, + desc: { + 'ja-JP': '対象のユーザーID', + 'en-US': 'The user ID which you want to update' + } + }, + } +}; + +export default define(meta, (ps) => new Promise((res, rej) => { + updatePersonById(ps.userId).then(() => res(), e => rej(e)); +})); + +async function updatePersonById(userId: mongo.ObjectID) { + const user = await getRemoteUser(userId); + await updatePerson(user.uri); +} |