import { Component, OnInit, Input } from '@angular/core'; import {ButtonSettings} from "src/app/hmg-common/ui/button/models/button-settingsl"; import {TranslatorService} from "src/app/hmg-common/services/translator/translator.service"; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { LoginRequest } from 'src/app/hmg-common/services/authentication/models/login.request'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service'; import { SendActivationByType } from '../models/sendActivationByType'; import { FingerprintAIO } from '@ionic-native/fingerprint-aio/ngx'; import { GetLoginInfoRequest } from "../../hmg-common/services/authentication/models/get-login-info.request"; import { GetLoginInfoResponse } from "../../hmg-common/services/authentication/models/get-login-info.response"; import { SMSCheckRequest } from "src/app/hmg-common/services/authentication/models/smscheck.request"; import { SMSCheckResponse } from "src/app/hmg-common/services/authentication/models/smscheck.response"; import { PushService } from 'src/app/hmg-common/services/push/push.service'; import { Platform } from '@ionic/angular'; import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response'; import { LoginModel } from '../models/LoginModel'; @Component({ selector: 'app-confirm-login', templateUrl: './confirm-login.component.html', styleUrls: ['./confirm-login.component.scss'], }) export class ConfirmLoginComponent implements OnInit { public logo = "assets/icon/login/password.png"; public buttons:any=[]; isFaceorFinger: any; onlySMSBox: any = true; public loginData = new LoginModel(); selectedOption: any; lastLogin: any; loginTokenID:any deviceToken:any; @Input() accessFromOutSide = false; @Input() visible = true; username: any; password:any; loginType: any; empname: string; constructor( public ts: TranslatorService, public cs: CommonService, public authService: AuthenticationService, public sharedData: SharedDataService, private faio: FingerprintAIO, public pushService: PushService, public platform: Platform, ) { this.loginData= this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false); console.log("logindata: "+this.loginData); this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false); console.log("deviceToken :"+this.deviceToken); //if device token undefind if(this.deviceToken == undefined){ this.deviceToken = localStorage.getItem("deviceToken"); } this.lastLogin = this.cs.sharedService.getSharedData(AuthenticationService.LAST_LOGIN, false); this.username = localStorage.getItem("user"); this.password = localStorage.getItem("password"); this.empname = localStorage.getItem("emp-name"); } ngOnInit() { //**checkIfAvailable FAIO **// this.checkIfAvailable(); //**getSharedData of IMEI_USER_DATA and REGISTER_DATA_FOR_LOGIIN to set defult value **// this.username = localStorage.getItem("user"); this.password = localStorage.getItem("password"); this.empname = localStorage.getItem("emp-name"); // this.setDefault(); this.button(); } checkIfAvailable() { this.faio.isAvailable().then( options => { this.isFaceorFinger = options; // && this.lastLogin === 1 // if (this.isFaceorFinger === 'finger' || this.isFaceorFinger === 'biometric') { // this.selectedOption = 2; // this.cs.presentConfirmDialog( // this.ts.trPK("login", "biometric-support"), // () => { // this.presentBiometricDialog(); // this.cs.sharedService.setSharedData( // this.selectedOption, // AuthenticationService.LAST_LOGIN // ); // }, // () => { } // ); // } this.button(); }, () => { this.isFaceorFinger = null; this.button(); } ); } button() { console.log("button"); this.buttons = [ [{ title: "login,verify-with-fingerprint", url: null, icon: "assets/icon/login/102.png", settings: new ButtonSettings(true, true, true, true), value: 2, disabled: this.isFaceorFinger === "finger" || this.isFaceorFinger === "biometric" ? false : true, visible: this.onlySMSBox, buttonClass: 'buttonClassWhite', pClass: 'pClassMyFileIconBlack', class: 'nationalIdIcon', }, { title: "login,verify-with-faceid", url: null, icon: "assets/icon/login/101.png", settings: new ButtonSettings(true, true, true, true), value: 3, disabled: this.isFaceorFinger === "face" ? false : true, visible: this.onlySMSBox, buttonClass: 'buttonClassWhite', pClass: 'pClassMyFileIconBlack', class: 'nationalIdIcon', }, { title: "login,verify-with-whatsapp", url: null, icon: "assets/icon/login/104.png", settings: new ButtonSettings(true, true, true, true), value: 4, visible: true, buttonClass: 'buttonClassWhite', pClass: 'pClassMyFileIconBlack', class: 'nationalIdIcon', }, { title: "login,verify-with-sms", url: null, icon: "assets/icon/login/103.png", settings: new ButtonSettings(true, true, true, true), value: 1, visible: true, buttonClass: 'buttonClassWhite', pClass: 'pClassMyFileIconBlack', class: 'nationalIdIcon', } ] ]; } confirm(el: any) { console.log("confirm:"+ el ); this.selectedOption = this.selectedOption && !this.onlySMSBox ? this.selectedOption : el.value; switch (el.value) { case 1: console.log(el.value); localStorage.setItem("login-type",el.value); console.log("login-type: "+ localStorage.getItem("login-type")) this.loginWithSMS(el); break; case 2: localStorage.setItem("login-type",el.value); console.log(el.value); this.loginWithFingurePrint(el); break; case 3: localStorage.setItem("login-type",el.value); console.log(el.value); this.faceReconization(el); break; case 4: console.log(el.value); localStorage.setItem("login-type",el.value); this.loginWithWhatsapp(el); break; default: break; } this.cs.sharedService.setSharedData( this.selectedOption, AuthenticationService.LAST_LOGIN ); } loginWithSMS(el) { console.log("loginWithSMS: "+ el); if (!el.disabled) { // if (this.user && !this.registerd_data) { //calling because i dont have token id which required to the send activation code /// this.checkUserAuthentication(1); // this.checkUserAuthentication(); *** // } else { if (this.loginData.LogInTokenID) { this.sendActivationCode(1); } else { // this.checkUserAuthentication(1); // this.checkUserAuthentication();** } // } } } loginWithWhatsapp(el) { if (!el.disabled) { // if (this.user && !this.registerd_data) { //calling because i dont have token id which required to the send activation code // this.checkUserAuthentication(2); // } else { if (this.loginData.LogInTokenID) { this.sendActivationCode(2); } else { // this.checkUserAuthentication(2); } // } } } public sendActivationCode(type: number) { let request = new SendActivationByType(); this.authService.setPublicFields(request); request.OTP_SendType = type; request.MobileNumber = this.loginData.MobileNumber; request.IsMobileFingerPrint =0; request.P_USER_NAME=this.loginData.P_USER_NAME; request.LogInTokenID =this.loginData.LogInTokenID; request.P_LEGISLATION_CODE ="SA"; // request.VersionID ="2.0"; // request.LanguageID = imeiData && imeiData.PreferredLanguage || request.LanguageID; this.authService .sendActivationCodeByType( request, () => { }, this.ts.trPK("general", "ok") ) .subscribe((result: any) => { if (result.isSMSSent) { this.cs.sharedService.setSharedData({ MobileNumber: this.loginData.MobileNumber, loginType: this.selectedOption }, SMSCheckRequest.SHARED_DATA ); this.cs.openSMSPage(); } }); } loginWithFingurePrint(el: any) { if (!el.disabled) { this.startBiometricLoginIfAvailable(); } } faceReconization(el: any) { if (!el.disabled) { this.startBiometricLoginIfAvailable(); } } private startBiometricLoginIfAvailable() { // this.setting.isBiometricsEnabled().then(result => { // console.log(result); this.faio.isAvailable().then( options => { // if biometric supported //if (result) { // ask if login with face or finger this.presentBiometricDialog(); // } else { // //ask to enable biometric // this.getPermissionToActivateBiometric(); // } }, () => { alert("not avaliable ") // if biometric not supported do nothing unless // user session time out from last login // if (AuthenticationService.isRequireRelogin()) { // this.initializeInputsFromSessionTimeOut(user); // } // this.hideSplashScreen(true); } ); //}); } private presentBiometricDialog() { this.faio .show({ title: 'Biometric Authetnciation', // (Android Only) | optional | Default: " Biometric Sign On" subtitle: 'Coolest Plugin ever' ,// (Android Only) | optional | Default: null description: this.ts.trPK("general", "auth-please"),// optional | Default: null fallbackButtonTitle: this.ts.trPK("general", "use-pin"), // optional | When disableBackup is false defaults to "Use Pin". // When disableBackup is true defaults to "Cancel" disableBackup:true, // optional | default: false // clientId: "Fingerprint Authetnciation", // clientSecret: "Ate343_9347lajF", // Only necessary for Android // disableBackup: true, // Only for Android(optional) // localizedFallbackTitle: this.ts.trPK("general", "use-pin"), // Only for iOS // localizedReason: this.ts.trPK("general", "auth-please") // Only for iOS }) .then((result: any) => { console.log("1"); // this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false); let request = new GetLoginInfoRequest(); this.authService.setPublicFields(request); request.MobileNumber = this.loginData.MobileNumber; request.P_USER_NAME=this.loginData.P_USER_NAME; request.UserName=this.loginData.P_USER_NAME; request.LogInTokenID =this.loginData.LogInTokenID; request.CompanyID =1;//cs=1 , HMG=2 request.DeviceType= this.cs.getDeviceType(); request.DeviceToken=this.deviceToken; this.getMobileInfo(request); }) .catch((error: any) => { console.log(error); }); } private getMobileInfo(request: GetLoginInfoRequest) { console.log("2"); this.authService.getLoginInfo(request,() => { },this.ts.trPK("general", "ok")).subscribe((result: GetLoginInfoResponse) => { console.log("authService.getLoginInfo"); if(result.Mohemm_GetPatientID_List.length > 0){ if ( result.Mohemm_GetPatientID_List[0].LoginType == 2 || result.Mohemm_GetPatientID_List[0].LoginType == 3) { this.loginTokenID = result.LogInTokenID; //send silent sms this.checkSMS(); } else { this.onlySMSBox = false; this.button(); } }else { this.onlySMSBox = false; this.button(); } }); } public checkSMS() { const data = this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false); const request = new SMSCheckRequest(); request.LogInTokenID = data.LogInTokenID; request.activationCode = ""; request.P_USER_NAME = data.P_USER_NAME; request.MobileNumber = data.MobileNumber; this.authService .checkSMS(request, () => {}, this.ts.trPK("general", "ok")) .subscribe((result: SMSCheckResponse) => { console.log(result); if (this.cs.validResponse(result)) { AuthenticationService.servicePrivilage=result.Privilege_List; this.authService.setAuthenticatedUser(result).subscribe(() => { console.log("insert"); localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME); console.log("empnmae: "+ localStorage.getItem("emp-name")); if (this.platform.is("cordova")) { this.insertMobileLogin(); } this.cs.openHome(); }); } }); } public insertMobileLogin(){ let request = new GetLoginInfoRequest(); this.authService.setPublicFields(request); request.MobileNumber = this.loginData.MobileNumber; request.P_USER_NAME=this.loginData.P_USER_NAME; request.UserName=this.loginData.P_USER_NAME; request.LogInTokenID =this.loginData.LogInTokenID; request.CompanyID =1;//CompanyID request.DeviceType= this.cs.getDeviceType(); request.DeviceToken=this.deviceToken; //request.TokenID= request.LoginType=this.selectedOption; this.authService .insertMobileLoginInfo( request, () => { }, this.ts.trPK("general", "ok") ) .subscribe((result: any) => { console.log(result); console.log("succssful insertMobileLoginInfo" ); }); } //do silent login private checkUserAuthentication() { console.log("debug Here!!"); this.cs.startLoading(); const request = new LoginRequest(); request.P_USER_NAME = this.username; request.P_LANGUAGE = "US";//this.language; request.P_PASSWORD = this.password; console.log(request); this.authService .login(request, () => { console.log("error here"); //console.log(result.MessageStatus); //this.sharedData.setSharedData(true, Password.IS_EXPIRED_PSW); //this.userCheck(); }, this.ts.trPK("general", "ok")) .subscribe((result: CheckUserAuthenticationResponse) => { console.log("success"); this.cs.stopLoading(); if (this.cs.validResponse(result)) { console.log("result.LogInTokenID "+ result.LogInTokenID); console.log("this.loginData before "+ this.loginData); this.loginData = new LoginModel(); console.log("this.loginData after "+ this.loginData); this.loginData.LogInTokenID = result.LogInTokenID; this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER; this.loginData.P_USER_NAME = this.username; this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA); this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA); //this.remeberMyInfo(); //this.cs.openSMSPage(); phase#1 one type of OTP // if(!this.welcomeBack){ //this.cs.openConfirmLoginPage();//phase#2 add 4 types for OTP // } this.confirm(this.loginType); } else { console.log("result.IsPasswordExpired"); console.log(result.IsPasswordExpired); if (result.IsPasswordExpired) { // alert("dont forget to handelpresentPasswordExpiredDialog() "); // this.presentPasswordExpiredDialog(); ***** } } }); } checkAccess(el:any){ let data = this.sharedData.getSharedData(AuthenticationService.LOGIN_DATA, false); this.loginType=el; if(this.accessFromOutSide){ // alert("this.accessFromOutSide" + this.accessFromOutSide); this.checkUserAuthentication(); } else{ // alert("this.accessFromOutSide" + this.accessFromOutSide); if(!data == undefined ){ // alert("data.LogInTokenID" + data.LogInTokenID); this.confirm(this.loginType); } else{ this.checkUserAuthentication(); } } }//end checkAccess }​