summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-04-06 20:47:07 +0900
committerGitHub <noreply@github.com>2018-04-06 20:47:07 +0900
commit358de80e65ed827dfcbad08c8473bdaf42262215 (patch)
tree18a15218c81caddf382a47f1b4cab52bcc595f97 /src
parentMerge pull request #1409 from akihikodaki/name (diff)
parentResolve local Person ID (diff)
downloadsharkey-358de80e65ed827dfcbad08c8473bdaf42262215.tar.gz
sharkey-358de80e65ed827dfcbad08c8473bdaf42262215.tar.bz2
sharkey-358de80e65ed827dfcbad08c8473bdaf42262215.zip
Merge pull request #1408 from akihikodaki/person
Resolve local Person ID
Diffstat (limited to 'src')
-rw-r--r--src/remote/activitypub/resolve-person.ts14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/remote/activitypub/resolve-person.ts b/src/remote/activitypub/resolve-person.ts
index a7c0020dd8..84746169f5 100644
--- a/src/remote/activitypub/resolve-person.ts
+++ b/src/remote/activitypub/resolve-person.ts
@@ -1,5 +1,7 @@
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 { createHttp } from '../../queue';
import webFinger from '../webfinger';
@@ -10,10 +12,18 @@ async function isCollection(collection) {
}
export default async (parentResolver, 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, object } = await parentResolver.resolveOne(value);
if (
object === null ||
+ object.id !== id ||
object.type !== 'Person' ||
typeof object.preferredUsername !== 'string' ||
!validateUsername(object.preferredUsername) ||
@@ -36,7 +46,7 @@ export default async (parentResolver, value, verifier?: string) => {
resolved => isCollection(resolved.object) ? resolved.object : null,
() => null
),
- webFinger(object.id, verifier),
+ webFinger(id, verifier),
]);
const host = toUnicode(finger.subject.replace(/^.*?@/, ''));
@@ -64,7 +74,7 @@ export default async (parentResolver, value, verifier?: string) => {
publicKeyPem: object.publicKey.publicKeyPem
},
inbox: object.inbox,
- uri: object.id,
+ uri: id,
},
});