UNPKG

@tomei/sso

Version:
198 lines (197 loc) 8.42 kB
import { UserBase } from '@tomei/general'; import { ISessionService } from '../../session/interfaces/session-service.interface'; import { IUserAttr } from './interfaces/user-info.interface'; import { UserRepository } from './user.repository'; import { SystemRepository } from '../system/system.repository'; import { UserGroupRepository } from '../user-group/user-group.repository'; import { YN } from '../../enum/yn.enum'; import { UserStatus } from '../../enum'; import GroupModel from '../../models/group.entity'; import { ISystemAccess } from './interfaces/system-access.interface'; import { UserSystemAccessRepository } from '../user-system-access/user-system-access.repository'; import GroupSystemAccessModel from '../../models/group-system-access.entity'; import { RedisService } from '../../redis-client/redis.service'; import { LoginUser } from './login-user'; import { AuthContext } from 'types'; import { UserReportingHierarchyRepository } from '../user-reporting-hierarchy/user-reporting-hierarchy.repository'; export declare class User extends UserBase { ObjectId: string; Email: string; private _UserName; private _Password; private _Status; private _DefaultPasswordChangedYN; private _FirstLoginAt; private _LastLoginAt; private _MFAEnabled; private _MFAConfig; private _MFABypassYN; private _RecoveryEmail; private _FailedLoginAttemptCount; private _LastFailedLoginAt; private _LastPasswordChangedAt; private _NeedToChangePasswordYN; private _PasscodeHash; private _PasscodeUpdatedAt; private _CreatedById; private _CreatedAt; private _UpdatedById; private _UpdatedAt; ObjectName: string; TableName: string; ObjectType: string; staffs: any; private _OriginIP; protected _SessionService: ISessionService; protected static _RedisService: RedisService; protected static _Repository: UserRepository; private static _LoginHistoryRepository; protected static _UserGroupRepo: UserGroupRepository; private static _UserPrivilegeRepo; private static _UserObjectPrivilegeRepo; private static _GroupObjectPrivilegeRepo; protected static _SystemRepository: SystemRepository; protected static _UserSystemAccessRepo: UserSystemAccessRepository; private static _GroupSystemAccessRepo; private static _GroupRepo; protected static _UserReportingHierarchyRepo: UserReportingHierarchyRepository; private _dbTransaction; get SessionService(): ISessionService; get UserId(): number; private set UserId(value); get Password(): string; private set Password(value); get Status(): UserStatus; private set Status(value); get UserName(): string; set UserName(value: string); get DefaultPasswordChangedYN(): YN; private set DefaultPasswordChangedYN(value); get FirstLoginAt(): Date; private set FirstLoginAt(value); get LastLoginAt(): Date; private set LastLoginAt(value); get MFAEnabled(): number; private set MFAEnabled(value); get MFAConfig(): string; private set MFAConfig(value); get MFABypassYN(): string; private set MFABypassYN(value); get RecoveryEmail(): string; private set RecoveryEmail(value); get FailedLoginAttemptCount(): number; private set FailedLoginAttemptCount(value); get LastFailedLoginAt(): Date; private set LastFailedLoginAt(value); get LastPasswordChangedAt(): Date; private set LastPasswordChangedAt(value); get NeedToChangePasswordYN(): YN; private set NeedToChangePasswordYN(value); get CreatedById(): number; private set CreatedById(value); get CreatedAt(): Date; private set CreatedAt(value); get UpdatedById(): number; private set UpdatedById(value); get UpdatedAt(): Date; private set UpdatedAt(value); get PasscodeHash(): string; private set PasscodeHash(value); get PasscodeUpdatedAt(): Date; private set PasscodeUpdatedAt(value); getDetails(): Promise<{ FullName: string; UserName: string; IDNo: string; IDType: string; Email: string; ContactNo: string; }>; constructor(sessionService: ISessionService, dbTransaction?: any, userInfo?: IUserAttr); static init(sessionService: ISessionService, userId?: number, dbTransaction?: any): Promise<User>; static initUsingEmail(sessionService: ISessionService, email: string, dbTransaction?: any): Promise<User>; setEmail(email: string, dbTransaction: any): Promise<void>; login(systemCode: string, email: string, password: string, ipAddress: string, dbTransaction: any): Promise<LoginUser>; protected checkSystemAccess(userId: number, systemCode: string, dbTransaction?: any): Promise<void>; checkPrivileges(systemCode: string, privilegeName: string): Promise<boolean>; private alertNewLogin; getPrivileges(systemCode: string, dbTransaction?: any): Promise<string[]>; private getInheritedPrivileges; private getUserPersonalPrivileges; private getObjectPrivileges; private static checkUserInfoDuplicated; private static generateDefaultPassword; private static setPassword; generateAuthorizationToken(): Promise<{ plaintextToken: string; hashedToken: string; }>; validateAuthorizationToken(autorizationToken: string): Promise<string>; static resetPassword(sessionService: ISessionService, autorizationToken: string, password: string, dbTransaction: any): Promise<void>; static create(loginUser: User, dbTransaction: any, user: User): Promise<User>; private incrementFailedLoginAttemptCount; static shouldReleaseLock(LastFailedLoginAt: any): boolean; private static releaseLock; protected static getInheritedSystemAccess(dbTransaction: any, group: GroupModel): Promise<GroupSystemAccessModel[]>; protected static combineSystemAccess(loginUser: User, dbTransaction: any, groups: any): Promise<ISystemAccess[]>; private static check2FA; static setup2FA(userId: number, dbTransaction: any): Promise<any>; verify2FASetup(userId: number, mfaToken: string, systemCode?: string, dbTransaction?: any): Promise<{ success: boolean; reason: string; sessionId?: undefined; } | { success: boolean; sessionId: string; reason?: undefined; }>; verify2FACode(userId: number, mfaToken: string, systemCode?: string, dbTransaction?: any): Promise<{ success: boolean; reason: string; sessionId?: undefined; } | { success: boolean; sessionId: string; reason?: undefined; }>; bypass2FA(systemCode: string, dbTransaction: any): Promise<{ success: boolean; sessionId: string; }>; addUserGroup(GroupCode: string, loginUser: User, dbTransaction: any): Promise<void>; update(data: { UserName: string; Email: string; Status: UserStatus; RecoveryEmail: string; BuildingCode?: string; CompanyCode?: string; DepartmentCode?: string; ContactNo?: string; IdNo?: string; FullName?: string; }, loginUser: User, dbTransaction: any): Promise<this>; static findById(AuthContext: AuthContext, dbTransaction: any, UserId: string, needActive?: boolean): Promise<User>; static getFullName(dbTransaction: any, UserId: string): Promise<string>; static findByEmail(AuthContext: AuthContext, dbTransaction: any, Email: string): Promise<User>; updatePasscode(loginUser: User, passcode: string, dbTransaction: any): Promise<void>; updatePassword(loginUser: User, oldPassword: string, newPassword: string, dbTransaction: any): Promise<void>; verifyPasscode(passcode: string): Promise<void>; getReportingUser(dbTransaction: any): Promise<{ Email: string; ContactNo: string; Name: string; Rank: number; }[]>; getUserReportingHierarchy(loginUser: LoginUser, dbTransaction: any): Promise<{ UserReportingHierarchyId: number; UserId: number; Email: string; ContactNo: string; Name: string; Rank: number; }[]>; enable2FABypass(loginUser: LoginUser, dbTransaction: any): Promise<void>; disable2FABypass(loginUser: LoginUser, dbTransaction: any): Promise<void>; reset2FA(loginUser: LoginUser, dbTransaction: any): Promise<void>; }