import { Document } from 'mongoose'; import { IADUser } from '../ad'; import { ISAPEmployee } from '../sap'; import { IAction } from './action.interface'; import { IMenu } from './menu.interface'; import { IProfile } from './profile.interface'; import { IRole } from './role.interface'; import { IRoom } from './room.interface'; import { IUserActivity } from './user-activity.interface'; import { ISession } from './session.interface'; export interface IUserSchema { username?: string; userdomain: string; usersap: string; image: string; email: string; phone: string; type: string; lastAccess: IUserLastAccess; old: IUserOld; twoFactor: ITwoFactorUser; passwordRecoveryRequests: IPasswordRecoverRequest[]; active: boolean; createdAt: Date; createdBy: string; updatedAt?: Date; updatedBy?: string; deletedAt?: Date; deletedBy?: string; } export interface IUserModel extends Document, IUserSchema { profiles: string[] | IProfile[]; roles: string[] | IRole[]; actions: string[] | IAction[]; menus: string[] | IMenu[]; rooms: string[] | IRoom[]; } export interface IUser extends IUserSchema { _id?: string; activities: IUserActivity[]; ad: IADUser; employee: ISAPEmployee; sessions: ISession[]; profiles: IProfile[]; roles: IRole[]; actions: IAction[]; menus: IMenu[]; rooms: IRoom[]; } export interface IUserFilter { _id?: string; username?: string; userdomain?: string; usersap?: string; email?: string; type?: string; active?: boolean; } export interface IUserInput { username: string; userdomain: string; usersap?: string; image?: string; imageFile?: any; email: string; type: string; old?: IUserOld; createUserInAD: boolean; data?: IADUser; roles?: string[]; profiles?: string[]; rooms?: string[]; actions?: string[]; menus?: string[]; active?: boolean; } export interface IPasswordRecoverRequest { code: string; userAgent: string; ipAddress: string; createdAt: Date; usedAt: Date; expireAt: Date; } export interface IChangePasswordUser { password?: string; newPassword?: string; confirmPassword?: string; } export interface IUserLastAccess { date?: Date; remoteAddr?: string; userAgent?: string; } export interface IUserOld { id?: number; employeeId?: number; } export interface ITwoFactorUser { enabled?: boolean; enabledAt?: Date; ascii: string; hex: string; base32: string; otpauth_url?: string; codes: string[]; } export interface ITwoFactorImageUser { dataURL?: string; } export interface IEnableTwoFactorUser { verified: boolean; codes: string[]; } export interface IVerifyTwoFactorUser { enable: boolean; }