This commit is contained in:
syuilo 2018-06-23 19:16:50 +09:00
parent 5ff59b3339
commit 509cdae832
2 changed files with 23 additions and 11 deletions

View file

@ -47,16 +47,28 @@ export async function createPerson(value: any, resolver?: Resolver): Promise<IUs
const object = await resolver.resolve(value) as any; const object = await resolver.resolve(value) as any;
if ( if (object == null) {
object == null || throw new Error('invalid person: object is null');
object.type !== 'Person' || }
typeof object.preferredUsername !== 'string' ||
typeof object.inbox !== 'string' || if (object.type != 'Person' && object.type != 'Service') {
!validateUsername(object.preferredUsername) || throw new Error('invalid person: object is not a person or service');
!isValidName(object.name == '' ? null : object.name) }
) {
log(`invalid person: ${JSON.stringify(object, null, 2)}`); if (typeof object.preferredUsername !== 'string') {
throw new Error('invalid person'); 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; const person: IPerson = object;

View file

@ -7,7 +7,7 @@ export default (user: ILocalUser) => {
const id = `${config.url}/users/${user._id}`; const id = `${config.url}/users/${user._id}`;
return { return {
type: 'Person', type: user.isBot ? 'Service' : 'Person',
id, id,
inbox: `${id}/inbox`, inbox: `${id}/inbox`,
outbox: `${id}/outbox`, outbox: `${id}/outbox`,