コード例 #1
0
        public void VerifyIdentityVerificationCodeShouldCorrectlyIncrementFailedAttempts()
        {
            var referenceNumber    = "TEST-REFERENCE-NUMBER";
            var ipAddress          = "TEST-IP-ADDRESS";
            var validationAttempts = 10;

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);

                service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, "Fail1", validationAttempts);
                service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, "Fail2", validationAttempts);
                service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, "Fail3", validationAttempts);
                service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, "Fail4", validationAttempts);
                service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, "Fail5", validationAttempts);

                var actualVerificationRecord = service.Get(verificationRecord.Id);

                Assert.That.AreEqual(5, actualVerificationRecord.FailedMatchAttemptCount);
            }
        }
コード例 #2
0
        protected void btnLookup_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }

            var ipLimit         = GetAttributeValue(AttributeKey.IpThrottleLimit).AsInteger();
            var messageTemplate = GetAttributeValue(AttributeKey.TextMessageTemplate);
            var fromNumber      = GetAttributeValue(AttributeKey.SmsNumber);
            var phoneNumber     = pbPhoneNumberLookup.Number;

            try
            {
                using (var rockContext = new RockContext())
                {
                    var identityVerificationService = new IdentityVerificationService(rockContext);

                    var identityVerification = identityVerificationService.CreateIdentityVerificationRecord(Request.UserHostAddress, ipLimit, phoneNumber);

                    var smsMessage = new RockSMSMessage
                    {
                        FromNumber = DefinedValueCache.Get(fromNumber),
                        Message    = messageTemplate,
                    };
                    var mergeObjects = LavaHelper.GetCommonMergeFields(this.RockPage);
                    mergeObjects.Add("ConfirmationCode", identityVerification.IdentityVerificationCode.Code);

                    smsMessage.SetRecipients(new List <RockSMSMessageRecipient> {
                        RockSMSMessageRecipient.CreateAnonymous(phoneNumber, mergeObjects)
                    });

                    var errorList = new List <string>();
                    if (smsMessage.Send(out errorList))
                    {
                        IdentityVerificationId = identityVerification.Id;
                        ShowVerificationPage();
                    }
                    else
                    {
                        ShowWarningMessage("Verification text message failed to send.");
                    }
                }
            }
            catch (Exception ex)
            {
                ShowWarningMessage(ex.Message);
                RockLogger.Log.Error(RockLogDomains.Core, ex);
                ExceptionLogService.LogException(ex);
            }
        }
コード例 #3
0
        private bool IsVerificationCodeValid(RockContext rockContext, string phoneNumber)
        {
            var timeLimit        = GetAttributeValue(AttributeKey.VerificationTimeLimit).AsInteger();
            var verificationCode = string.Format("{0}{1}{2}{3}{4}{5}",
                                                 nbVerificationCodeBox1.Text,
                                                 nbVerificationCodeBox2.Text,
                                                 nbVerificationCodeBox3.Text,
                                                 nbVerificationCodeBox4.Text,
                                                 nbVerificationCodeBox5.Text,
                                                 nbVerificationCodeBox6.Text);

            var identityVerificationService = new IdentityVerificationService(rockContext);

            return(identityVerificationService.VerifyIdentityVerificationCode(phoneNumber, timeLimit, verificationCode));
        }
コード例 #4
0
        public void CreateIdentityVerificationRecordReturnsValue()
        {
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);
            }
        }
コード例 #5
0
        public void CreateIdentityVerificationRecordShouldNotThrowExceptionIfAtIpLimit()
        {
            var ipLimit         = 9;
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            CreateIdentityVerificationRecords(ipLimit - 1, referenceNumber, ipAddress);

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, ipLimit, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);
            }
        }
コード例 #6
0
        public void CreateIdentityVerificationRecordShouldThrowExceptionIfOverIpLimit()
        {
            var ipLimit         = 10;
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            CreateIdentityVerificationRecords(ipLimit, referenceNumber, ipAddress);

            using (var rockContext = new RockContext())
            {
                var service = new IdentityVerificationService(rockContext);
                Assert.That.ThrowsException <IdentityVerificationIpLimitReachedException>(
                    () => service.CreateIdentityVerificationRecord(ipAddress, ipLimit, referenceNumber)
                    );
            }
        }
コード例 #7
0
        public void VerifyIdentityVerificationCodeShouldNotValidateIfWrongVerificationCode()
        {
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);

                Assert.That.IsFalse(service.VerifyIdentityVerificationCode(referenceNumber, 1, "120003"));
            }
        }
コード例 #8
0
        public void VerifyIdentityVerificationCodeShouldValidateCorrectly()
        {
            var referenceNumber    = "TEST-REFERENCE-NUMBER";
            var ipAddress          = "TEST-IP-ADDRESS";
            var validationAttempts = 10;

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);

                Assert.That.IsTrue(service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, verificationRecord.IdentityVerificationCode.Code, validationAttempts));
            }
        }
コード例 #9
0
        public void CreateIdentityVerificationRecordShouldNotThrowExceptionWithRequestFromYesterday()
        {
            var ipLimit         = 9;
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            CreateIdentityVerificationRecords(ipLimit - 1, referenceNumber, ipAddress);
            CreateIdentityVerificationRecords(ipLimit, referenceNumber, ipAddress, RockDateTime.Today.AddSeconds(-10));
            CreateIdentityVerificationRecords(20, referenceNumber, $"{ipAddress}-2");
            CreateIdentityVerificationRecords(20, $"{referenceNumber}-3", $"{ipAddress}-3");
            CreateIdentityVerificationRecords(20, $"{referenceNumber}-4", $"{ipAddress}-4");

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, ipLimit, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);
            }
        }
コード例 #10
0
        public void VerifyIdentityVerificationCodeShouldNotValidateIfTimeLimitExpired()
        {
            var referenceNumber = "TEST-REFERENCE-NUMBER";
            var ipAddress       = "TEST-IP-ADDRESS";

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);

                verificationRecord.IssueDateTime = verificationRecord.IssueDateTime.AddSeconds(-61);
                rockContext.SaveChanges();

                Assert.That.IsFalse(service.VerifyIdentityVerificationCode(referenceNumber, 1, verificationRecord.IdentityVerificationCode.Code));
            }
        }
コード例 #11
0
        public void VerifyIdentityVerificationCodeShouldNotValidateIfTooManyAttempts()
        {
            var referenceNumber    = "TEST-REFERENCE-NUMBER";
            var ipAddress          = "TEST-IP-ADDRESS";
            var validationAttempts = 10;

            dataToCleanUp.Add(new string[] { referenceNumber, ipAddress });

            using (var rockContext = new RockContext())
            {
                var service            = new IdentityVerificationService(rockContext);
                var verificationRecord = service.CreateIdentityVerificationRecord(ipAddress, 10, referenceNumber);

                Assert.That.IsNotNull(verificationRecord);

                verificationRecord.FailedMatchAttemptCount = 10;
                rockContext.SaveChanges();

                Assert.That.IsFalse(service.VerifyIdentityVerificationCode(verificationRecord.Id, 1, verificationRecord.IdentityVerificationCode.Code, validationAttempts));
            }
        }
コード例 #12
0
        static void Main(string[] args)
        {
            long count = 1;
            IIdentityVerificationService ıdentityVerificationService = new IdentityVerificationService();
            IAuthorizationService        authorizationService        = new AuthorizationService();
            IUserService userService = new UserService();
            IGameService gameService = new GameService();

            //New gamer
            Gamer gamer = new Gamer {
                RegisterNumber = Guid.NewGuid().ToString().Substring(0, 10), Email = "*****@*****.**", Avatar = "~/Images/avatar.ico", FirstName = "ad", LastName = "soyad", CreationTime = DateTime.Now, Id = count, IsActive = true, IsEmailVerification = false, ModificationTime = null, NickName = "Gamer1", Password = "******", BirthYear = 1991, IdentityNumber = "1111111111", JoinCampaignCount = 0, MembershipDate = DateTime.Now
            };

            Game game = new Game {
                CurrencyId = 1, GameType = "Actin", Id = 1, IsAutomaticSale = false, Name = "LOTR", PosterUrl = "~/Images/lotr.png", ReleaseDate = DateTime.Now.Date, SalePrice = 299, Size = 10024
            };

            gameService.Create(game);

            // not> ad-soyad-doğum yılı ve kimlik numaranızı girerek bu aşamayı geçebilirsiniz. örnek verilerden dolayı false döner.
            if (gamer.IdentityNumber.Length == 11)
            {
                var returnIdentityControl = ıdentityVerificationService.TCQuery(gamer.FirstName, gamer.LastName, gamer.IdentityNumber, 1992);
                if (returnIdentityControl)//tc kimlik no doğrulandı
                {
                    var returnUserId = userService.CreateAndReturnUserId(gamer);
                    if (returnUserId > 0)
                    {
                        authorizationService.AddUserAuthorization(returnUserId, "BasicGamer"); //yetkilendirme veriyoruz.
                    }
                    Console.WriteLine("********************");
                    Console.WriteLine("1-)Sale\n2-ApplyCampaign)");
                    Console.WriteLine("************************");
                    int choice = Convert.ToInt32(Console.ReadLine());

                    if (choice == 1)
                    {
                        Console.WriteLine("Game " + game.Name + " sold for " + gamer.Email);
                    }
                    if (choice == 2)
                    {
                        Console.WriteLine("********************");
                        Console.WriteLine("1-)%10\n2-%20)");
                        Console.WriteLine("************************");
                        int choice2 = Convert.ToInt32(Console.ReadLine());
                        if (choice2 == 1)
                        {
                            var result = game.SalePrice - ((game.SalePrice * 10) / 100);
                            Console.WriteLine("%10 Discount applied for {0}", game.Name);
                            Console.WriteLine("Sale Amount {0}", result);
                        }
                        else if (choice2 == 2)
                        {
                            var result = game.SalePrice - ((game.SalePrice * 20) / 100);
                            Console.WriteLine("%20 Discount applied for {0}", game.Name);
                            Console.WriteLine("Sale Amount {0}", result);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Your IdentityNumber could not be verified");
                }

                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("Your IdentityNumber length short or long than 11");
            }
        }