public void Execute(object requestMessage, ref object responseMessage, TransactionHeader transactionHeader) { //device already registered //no user registed with this id SoftTokenRegistrationRequest request = requestMessage as SoftTokenRegistrationRequest; SoftTokenRegistrationResponse response = responseMessage as SoftTokenRegistrationResponse; VpUser user = null; //verify userId, password, otp using (VeriBranchDataEntities dataEntities = new VeriBranchDataEntities()) { user = dataEntities.VpUser.Where(obj => obj.UserName.Equals(request.CustomerId)).FirstOrDefault(); } if (user == null) { throw new VPBusinessException("NoUserWithThisId"); } // move the below method to Login Manager //VerifyUserIdPassword(request, response, transactionHeader); response.AuthrnticationSuccess = LoginManager.VerifyUserIdPassword(request.CustomerId, request.Password, transactionHeader); VerifyOTP(request, response, transactionHeader, user); VerifyCardAccountAndPin(request, response, transactionHeader, user); if (response.AuthrnticationSuccess) { VpOtpDevice device = new VpOtpDevice() { CreateBy = Convert.ToString(user.ID), CreateDate = DateTime.Now, OtpType = 4, SerialNumber = request.DeviceId, Status = 2, ModifyBy = "", ModifyDate = DateTime.Now, }; using (VeriBranchDataEntities dataEntities = new VeriBranchDataEntities()) { if (dataEntities.VpOtpDevice.Where(obj => obj.SerialNumber == request.DeviceId).Count() > 0) { throw new VPBusinessException("DeviceAlreadyRegistered"); } dataEntities.VpOtpDevice.Add(device); dataEntities.SaveChanges(); VPSoftTokenRegistration softTokenRegistration = new VPSoftTokenRegistration() { DeviceId = device.ID, Password = HashHelper.Hash(request.STPassword, string.Empty, HashTypeEnum.Md5), UserId = user.ID, Preference = request.UseFingerPrint.ToString(), }; dataEntities.VPSoftTokenRegistration.Add(softTokenRegistration); dataEntities.SaveChanges(); } } }
private void VerifyCardAccountAndPin(SoftTokenRegistrationRequest request, SoftTokenRegistrationResponse response, TransactionHeader transactionHeader, VpUser user) { CustomerEnrollmentRequest ceRequest = new CustomerEnrollmentRequest(); object ceResponse = new CustomerEnrollmentResponse(); ceRequest.RequestType = EnrollmentValidationRequestTypeEnum.ValidateInfo; ceRequest.DemandType = EnrollmentDemandTypeEnum.WithCardAndAccount; ceRequest.CardInfo = new CardInfo() { CardNumber = request.AtmCardNumber, }; CustomerEnrollmentTransaction operation = new CustomerEnrollmentTransaction(); operation.Execute(ceRequest, ref ceResponse, transactionHeader); }
private bool VerifyOTP(SoftTokenRegistrationRequest request, SoftTokenRegistrationResponse response, TransactionHeader transactionHeader, VpUser user) { using (VeriBranchDataEntities dataEntities = new VeriBranchDataEntities()) { VpOtpHistory OTPHistory = dataEntities.VpOtpHistory.Where(obj => obj.UserID == user.ID).OrderByDescending(obj => obj.ID).FirstOrDefault(); var hashedOTP = HashHelper.Hash(request.OTP, string.Empty, HashTypeEnum.Md5); if (OTPHistory != null && OTPHistory.OTP == hashedOTP) { return(false); } else { return(true); } } }