Skip to content

Latest commit

 

History

History
111 lines (98 loc) · 2.11 KB

File metadata and controls

111 lines (98 loc) · 2.11 KB

User

The IUser interface represents the User object stored in the collection users

interface IUser {
    _id: string;
    createdAt: Date;
    roles: string[];
    type: string;
    active: boolean;
    username?: string;
    name?: string;
    services?: IUserServices;
    emails?: IUserEmail[];
    status?: string;
    statusConnection?: string;
    lastLogin?: Date;
    avatarOrigin?: string;
    utcOffset?: number;
    language?: string;
    statusDefault?: string;
    oauth?: {
        authorizedClients: string[];
    };
    _updatedAt?: Date;
    statusLivechat?: string;
    e2e?: {
        private_key: string;
        public_key: string;
    };
    requirePasswordChange?: boolean;
    customFields?: {
        [key: string]: any;
    };
    settings?: IUserSettings;
}

The following sub-interfaces are used by the IUser interface

interface ILoginToken {
    hashedToken: string;
    twoFactorAuthorizedUntil?: Date;
    twoFactorAuthorizedHash?: string;
}

interface IMeteorLoginToken extends ILoginToken {
    when: Date;
}

interface IPersonalAccessToken extends ILoginToken {
    type: 'personalAccessToken';
    createdAt: Date;
    lastTokenPart: string;
    name?: string;
    bypassTwoFactor?: boolean;
}

interface IUserEmailVerificationToken {
    token: string;
    address: string;
    when: Date;
}

interface IUserEmailCode {
    code: string;
    expire: Date;
}

type LoginToken = ILoginToken & IPersonalAccessToken;

interface IUserServices {
    password?: {
        bcrypt: string;
    };
    email?: {
        verificationTokens?: IUserEmailVerificationToken[];
    };
    resume?: {
        loginTokens?: LoginToken[];
    };
    google?: any;
    facebook?: any;
    github?: any;
    totp?: {
        enabled: boolean;
        hashedBackup: string[];
        secret: string;
    };
    email2fa?: {
        enabled: boolean;
        changedAt: Date;
    };
    emailCode: IUserEmailCode[];
}

interface IUserEmail {
    address: string;
    verified: boolean;
}

interface IUserSettings {
    profile: any;
    preferences: {
        [key: string]: any;
    };
}