summaryrefslogtreecommitdiff
path: root/src/remote/activitypub
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-23 19:16:50 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-23 19:16:50 +0900
commit509cdae8322ad286c444ef8a2b31b645f5fdfadd (patch)
tree1d8f5c30914d52f59aa48a90a6a540e8095b0c19 /src/remote/activitypub
parent4.8.0 (diff)
downloadsharkey-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.ts32
-rw-r--r--src/remote/activitypub/renderer/person.ts2
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`,