You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemmionic5/Mohem/src/app/authentication/confirm-login/confirm-login.component.ts

891 lines
17 KiB
TypeScript

6 years ago
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';
6 years ago
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 {
6 years ago
public logo = "assets/icon/login/password.png";
public buttons:any=[];
isFaceorFinger: any;
onlySMSBox: any = true;
6 years ago
public loginData = new LoginModel();
selectedOption: any;
lastLogin: any;
loginTokenID:any
deviceToken:any;
6 years ago
@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);
6 years ago
console.log("logindata: "+this.loginData);
6 years ago
this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
6 years ago
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 **//
6 years ago
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,
6 years ago
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,
6 years ago
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,
6 years ago
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,
6 years ago
visible: true,
buttonClass: 'buttonClassWhite',
pClass: 'pClassMyFileIconBlack',
class: 'nationalIdIcon',
}
]
];
}
confirm(el: any) {
6 years ago
console.log("confirm:"+ el );
this.selectedOption = this.selectedOption && !this.onlySMSBox ? this.selectedOption : el.value;
switch (el.value) {
case 1:
6 years ago
console.log(el.value);
localStorage.setItem("login-type",el.value);
console.log("login-type: "+ localStorage.getItem("login-type"))
this.loginWithSMS(el);
break;
case 2:
6 years ago
localStorage.setItem("login-type",el.value);
console.log(el.value);
this.loginWithFingurePrint(el);
break;
case 3:
6 years ago
localStorage.setItem("login-type",el.value);
console.log(el.value);
this.faceReconization(el);
break;
case 4:
console.log(el.value);
6 years ago
localStorage.setItem("login-type",el.value);
this.loginWithWhatsapp(el);
break;
default:
break;
}
this.cs.sharedService.setSharedData(
this.selectedOption,
AuthenticationService.LAST_LOGIN
);
6 years ago
}
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({
6 years ago
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: "<APP_NAME> 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;
6 years ago
//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");
6 years ago
localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME);
console.log("empnmae: "+ localStorage.getItem("emp-name"));
if (this.platform.is("cordova")) {
6 years ago
this.insertMobileLogin();
6 years ago
}
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" );
});
}
6 years ago
//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();
6 years ago
}
}
}//end checkAccess
}