예제 #1
0
        public async Task <IActionResult> VerifyFactor([Bind("token")] string token, [Bind("CustomerId")] int CustomerId)
        {
            try
            {
                Customer customer = _ctx.Customer.AsNoTracking().SingleOrDefault(kh => kh.CustomerId == CustomerId);
                if (customer != null && !string.IsNullOrEmpty(customer.AuthyId))
                {
                    var validationResult = await _authy.VerifyTokenAsync(customer.AuthyId, token).ConfigureAwait(false);

                    if (validationResult.Succeeded)
                    {
                        customer.PhoneNumberConfirmed = true;
                        _ctx.Update(customer);
                        _ctx.SaveChanges();
                        var claims = new List <Claim>
                        {
                            new Claim(ClaimTypes.Name, customer.FirstName + " " + customer.LastName),
                            new Claim(ClaimTypes.Role, "Customer")
                        };
                        ClaimsIdentity  claimsIdentity  = new ClaimsIdentity(claims, "Customer");
                        ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
                        await HttpContext.SignInAsync("Customer", claimsPrincipal);

                        HttpContext.Session.SetObject <Customer>("Customer", customer);
                        TempData["ThongBao"] = "Đăng ký thành công. Bảo mật 2 lớp thành công!!!";
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        ViewBag.ResultVerify =
                            $"Không thể xác minh +84{customer.PhoneNumber}. Vui lòng kiểm tra SĐT hoặc mã đã nhập có đúng không.";
                    }
                }
            }
            catch (Exception e)
            {
                ViewBag.Result = e.Message;
            }
            ViewBag.CustomerId = CustomerId;
            //Fail
            return(View("VerifyUser"));
        }
        public async Task <JsonResult> AuthorizeWithSmsToken(TokenVerificationModel data)
        {
            if (!ModelState.IsValid)
            {
                return(JsonModelStateErrors());
            }
            var userRequest = await _userManager.GetCurrentUserAsync();

            if (!userRequest.IsSuccess)
            {
                return(Json(userRequest));
            }
            var currentUser = userRequest.Result;
            ResultModel <string> result;
            var authyToken = await _authy.GetUserAuthyTokenAsync(currentUser);

            if (!authyToken.IsSuccess)
            {
                return(Json(authyToken));
            }
            if (data.Token.Length > 4)
            {
                result = await _authy.VerifyTokenAsync(authyToken.Result, data.Token);
            }
            else
            {
                //TODO: Extract phone and code from phone number
                result = await _authy.VerifyPhoneTokenAsync(currentUser.PhoneNumber, "MD", data.Token);
            }

            _logger.LogDebug(result.ToString());

            if (!result.IsSuccess)
            {
                return(Json(result));
            }
            await AddTokenVerificationClaim(currentUser);

            return(Json(result));
        }
예제 #3
0
        public async Task <IActionResult> VerifyToken(string phone, string token)
        {
            Customer khachHang = _context.Customer.SingleOrDefault(kh => kh.PhoneNumber == phone);

            if (khachHang != null && !string.IsNullOrEmpty(khachHang.AuthyId))
            {
                var validationResult = await _authy.VerifyTokenAsync(khachHang.AuthyId, token).ConfigureAwait(false);

                if (validationResult.Succeeded)
                {
                    khachHang.PhoneNumberConfirmed = true;
                    _context.SaveChanges();

                    return(Json(new
                    {
                        Success = true,
                        Message = $"Your mobile phone {phone} verify successfully."
                    }));
                }
            }
            return(Content($"Không có khách hàng nào có điện thoại: {phone}"));
        }