diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-06-23 19:16:50 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-06-23 19:16:50 +0900 |
| commit | 509cdae8322ad286c444ef8a2b31b645f5fdfadd (patch) | |
| tree | 1d8f5c30914d52f59aa48a90a6a540e8095b0c19 /src/remote/activitypub | |
| parent | 4.8.0 (diff) | |
| download | sharkey-509cdae8322ad286c444ef8a2b31b645f5fdfadd.tar.gz sharkey-509cdae8322ad286c444ef8a2b31b645f5fdfadd.tar.bz2 sharkey-509cdae8322ad286c444ef8a2b31b645f5fdfadd.zip | |
Fix bug
Diffstat (limited to 'src/remote/activitypub')
| -rw-r--r-- | src/remote/activitypub/models/person.ts | 32 | ||||
| -rw-r--r-- | src/remote/activitypub/renderer/person.ts | 2 |
2 files changed, 23 insertions, 11 deletions
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index f233346395..28cbdb1ff7 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -47,16 +47,28 @@ export async function createPerson(value: any, resolver?: Resolver): Promise<IUs const object = await resolver.resolve(value) as any; - if ( - object == null || - object.type !== 'Person' || - typeof object.preferredUsername !== 'string' || - typeof object.inbox !== 'string' || - !validateUsername(object.preferredUsername) || - !isValidName(object.name == '' ? null : object.name) - ) { - log(`invalid person: ${JSON.stringify(object, null, 2)}`); - throw new Error('invalid person'); + if (object == null) { + throw new Error('invalid person: object is null'); + } + + if (object.type != 'Person' && object.type != 'Service') { + throw new Error('invalid person: object is not a person or service'); + } + + if (typeof object.preferredUsername !== 'string') { + throw new Error('invalid person: preferredUsername is not a string'); + } + + if (typeof object.inbox !== 'string') { + throw new Error('invalid person: inbox is not a string'); + } + + if (!validateUsername(object.preferredUsername)) { + throw new Error('invalid person: invalid username'); + } + + if (!isValidName(object.name == '' ? null : object.name)) { + throw new Error('invalid person: invalid name'); } const person: IPerson = object; diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts index 8825c56c25..6ee69cbae7 100644 --- a/src/remote/activitypub/renderer/person.ts +++ b/src/remote/activitypub/renderer/person.ts @@ -7,7 +7,7 @@ export default (user: ILocalUser) => { const id = `${config.url}/users/${user._id}`; return { - type: 'Person', + type: user.isBot ? 'Service' : 'Person', id, inbox: `${id}/inbox`, outbox: `${id}/outbox`, |