summaryrefslogtreecommitdiff
path: root/src/remote/activitypub
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-06 20:52:38 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-06 20:52:38 +0900
commitf640a8fd5b095534a3230bc22c3adb2094c904d3 (patch)
treebf3dc36f93ba03328e21c8ca4a4f7087af0000f9 /src/remote/activitypub
parentRevert "Remove silent flag" (diff)
downloadmisskey-f640a8fd5b095534a3230bc22c3adb2094c904d3.tar.gz
misskey-f640a8fd5b095534a3230bc22c3adb2094c904d3.tar.bz2
misskey-f640a8fd5b095534a3230bc22c3adb2094c904d3.zip
Resolve local Person ID
Diffstat (limited to 'src/remote/activitypub')
-rw-r--r--src/remote/activitypub/resolve-person.ts13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/remote/activitypub/resolve-person.ts b/src/remote/activitypub/resolve-person.ts
index 907f198342..9cca50e416 100644
--- a/src/remote/activitypub/resolve-person.ts
+++ b/src/remote/activitypub/resolve-person.ts
@@ -1,11 +1,20 @@
import { JSDOM } from 'jsdom';
import { toUnicode } from 'punycode';
+import parseAcct from '../../acct/parse';
+import config from '../../config';
import User, { validateUsername, isValidName, isValidDescription } from '../../models/user';
import webFinger from '../webfinger';
import Resolver from './resolver';
import uploadFromUrl from '../../services/drive/upload-from-url';
export default async (value, verifier?: string) => {
+ const id = value.id || value;
+ const localPrefix = config.url + '/@';
+
+ if (id.startsWith(localPrefix)) {
+ return User.findOne(parseAcct(id.slice(localPrefix)));
+ }
+
const resolver = new Resolver();
const object = await resolver.resolve(value) as any;
@@ -21,7 +30,7 @@ export default async (value, verifier?: string) => {
throw new Error('invalid person');
}
- const finger = await webFinger(object.id, verifier);
+ const finger = await webFinger(id, verifier);
const host = toUnicode(finger.subject.replace(/^.*?@/, ''));
const hostLower = host.replace(/[A-Z]+/, matched => matched.toLowerCase());
@@ -48,7 +57,7 @@ export default async (value, verifier?: string) => {
publicKeyPem: object.publicKey.publicKeyPem
},
inbox: object.inbox,
- uri: object.id,
+ uri: id,
},
});