@tomei/sso
Version:
Tomei SSO Package
198 lines (197 loc) • 8.42 kB
TypeScript
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>;
}