示例#1
0
        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();
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                }
            }
        }