This commit is contained in:
syuilo 2018-04-02 04:48:38 +09:00
parent ec4c6d48c1
commit 86e1ff6a6f

View file

@ -39,7 +39,33 @@ export function isValidBirthday(birthday: string): boolean {
return typeof birthday == 'string' && /^([0-9]{4})\-([0-9]{2})-([0-9]{2})$/.test(birthday);
}
type ILocalAccount = {
type IUserBase = {
_id: mongo.ObjectID;
createdAt: Date;
deletedAt: Date;
followersCount: number;
followingCount: number;
name: string;
postsCount: number;
driveCapacity: number;
username: string;
usernameLower: string;
avatarId: mongo.ObjectID;
bannerId: mongo.ObjectID;
data: any;
description: string;
latestPost: IPost;
pinnedPostId: mongo.ObjectID;
isSuspended: boolean;
keywords: string[];
hostLower: string;
};
export type IUser = ILocalUser | IRemoteUser;
export interface ILocalUser extends IUserBase {
host: null;
account: {
keypair: string;
email: string;
links: string[];
@ -67,43 +93,20 @@ type ILocalAccount = {
twoFactorTempSecret: string;
clientSettings: any;
settings: any;
};
};
}
type IRemoteAccount = {
export interface IRemoteUser extends IUserBase {
host: string;
account: {
inbox: string;
uri: string;
publicKey: {
id: string;
publicKeyPem: string;
};
};
type IUserBase = {
_id: mongo.ObjectID;
createdAt: Date;
deletedAt: Date;
followersCount: number;
followingCount: number;
name: string;
postsCount: number;
driveCapacity: number;
username: string;
usernameLower: string;
avatarId: mongo.ObjectID;
bannerId: mongo.ObjectID;
data: any;
description: string;
latestPost: IPost;
pinnedPostId: mongo.ObjectID;
isSuspended: boolean;
keywords: string[];
hostLower: string;
};
export type IUser = ILocalUser | IRemoteUser;
export interface ILocalUser extends IUserBase { host: null; account: ILocalAccount; }
export interface IRemoteUser extends IUserBase { host: string; account: IRemoteAccount; }
};
}
export const isLocalUser = (user: any): user is ILocalUser =>
user.host === null;