diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-02 18:36:47 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-02 18:36:47 +0900 |
| commit | 69763ac32b4e79e84d8338ba8e20b83add9d8560 (patch) | |
| tree | a3ac499dac06decbc8c47a3d393336f5fbedc56a /src/remote/activitypub | |
| parent | Distribute posts from remote (diff) | |
| download | misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.tar.gz misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.tar.bz2 misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.zip | |
Resolve account by signature in inbox
Diffstat (limited to 'src/remote/activitypub')
| -rw-r--r-- | src/remote/activitypub/resolve-person.ts | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/remote/activitypub/resolve-person.ts b/src/remote/activitypub/resolve-person.ts index 4a2636b2f7..59be65908e 100644 --- a/src/remote/activitypub/resolve-person.ts +++ b/src/remote/activitypub/resolve-person.ts @@ -10,18 +10,14 @@ async function isCollection(collection) { return ['Collection', 'OrderedCollection'].includes(collection.type); } -export default async (value, usernameLower, hostLower, acctLower) => { - if (!validateUsername(usernameLower)) { - throw new Error(); - } - +export default async (value, verifier?: string) => { const { resolver, object } = await new Resolver().resolveOne(value); if ( object === null || object.type !== 'Person' || typeof object.preferredUsername !== 'string' || - object.preferredUsername.toLowerCase() !== usernameLower || + !validateUsername(object.preferredUsername) || !isValidName(object.name) || !isValidDescription(object.summary) ) { @@ -41,9 +37,11 @@ export default async (value, usernameLower, hostLower, acctLower) => { resolved => isCollection(resolved.object) ? resolved.object : null, () => null ), - webFinger(object.id, acctLower), + webFinger(object.id, verifier), ]); + const host = toUnicode(finger.subject.replace(/^.*?@/, '')); + const hostLower = host.replace(/[A-Z]+/, matched => matched.toLowerCase()); const summaryDOM = JSDOM.fragment(object.summary); // Create user @@ -58,8 +56,8 @@ export default async (value, usernameLower, hostLower, acctLower) => { postsCount: outbox ? outbox.totalItem || 0 : 0, driveCapacity: 1024 * 1024 * 8, // 8MiB username: object.preferredUsername, - usernameLower, - host: toUnicode(finger.subject.replace(/^.*?@/, '')), + usernameLower: object.preferredUsername.toLowerCase(), + host, hostLower, account: { publicKey: { |