Ejemplo n.º 1
0
        public async Task <IActionResult> Index(LoginRequest request, [FromQuery] string ReturnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(ModelState));
            }

            var result = await _userAPIClient.Authenticate(request);

            if (result.IsSuccessed == false)
            {
                TempData["message"] = result.Message;
                ModelState.AddModelError("", result.Message);
                return(View());
            }

            var userPrincipal = this.ValidateToken(result.ResultObject);
            var roleId        = userPrincipal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Role).Value;

            if (roleId == null || Convert.ToInt32(roleId) < 2)
            {
                TempData["message"] = "You do not have persmission";
                ModelState.AddModelError("", "You do not have persmission");
                return(View());
            }
            TempData["Succes"] = "Login Succsess!";
            HttpContext.Session.SetString("Token", result.ResultObject);
            var authProperties = new AuthenticationProperties
            {
                ExpiresUtc   = DateTimeOffset.UtcNow.AddMinutes(10),
                IsPersistent = true
            };

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                userPrincipal,
                authProperties);

            switch (roleId)
            {
            case "2": return(RedirectToAction("exams", "exam"));

            case "3": return(RedirectToAction("index", "home"));

            case "4": return(RedirectToAction("index", "creator"));

            default: return(RedirectToAction("index", "home"));
            }
        }
        public async Task <IActionResult> Index(LoginRequest request, [FromQuery] string ReturnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(ModelState));
            }

            var result = await _userAPIClient.Authenticate(request);

            if (result.IsSuccessed == false)
            {
                TempData["message"] = result.Message;
                ModelState.AddModelError("", result.Message);
                return(View());
            }

            var userPrincipal = this.ValidateToken(result.ResultObject);
            var isAdmin       = userPrincipal.IsInRole("admin");

            if (isAdmin == false)
            {
                TempData["message"] = "You do not have persmission";
                ModelState.AddModelError("", "You do not have persmission");
                return(View());
            }
            TempData["Succes"] = "Login Succsess!";
            HttpContext.Session.SetString("Token", result.ResultObject);
            var authProperties = new AuthenticationProperties
            {
                ExpiresUtc   = DateTimeOffset.UtcNow.AddMinutes(10),
                IsPersistent = request.RememberMe // có sử dụng persistent cookie
            };

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                userPrincipal,
                authProperties);

            if (!string.IsNullOrEmpty(ReturnUrl))
            {
                return(LocalRedirect(ReturnUrl));
            }
            else
            {
                return(RedirectToAction("index", "home"));
            }
        }
        public async Task <IActionResult> Index(LoginRequest request, [FromQuery] string ReturnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(ModelState));
            }

            var result = await _userAPIClient.Authenticate(request);

            if (result.IsSuccessed == false)
            {
                TempData["message"] = result.Message;
                ModelState.AddModelError("", result.Message);
                ViewBag.ErrorServerSide = true;
                return(View());
            }
            TempData["Succes"] = "Login Succsess!";
            CookieHelpers.SetObjectAsJson(Response.Cookies, "Token", result.ResultObject, 10);
            var userPrincipal = this.ValidateToken(result.ResultObject);
            var UserId        = new Guid(userPrincipal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
            var cartResult    = await _cartService.GetById(UserId);

            if (cartResult.IsSuccessed == true)
            {
                var CartSessionKey = _configuration.GetSection("CartSessionKey").Value;
                CookieHelpers.RemoveCookie(Response.Cookies, CartSessionKey);
                CookieHelpers.SetObjectAsJson(HttpContext.Response.Cookies, CartSessionKey, cartResult.ResultObject.CartItems, null);
            }
            var authProperties = new AuthenticationProperties
            {
                ExpiresUtc   = DateTimeOffset.UtcNow.AddMinutes(10),
                IsPersistent = true // có sử dụng persistent cookie
            };
            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                userPrincipal,
                authProperties);

            if (!string.IsNullOrEmpty(ReturnUrl))
            {
                return(Redirect(ReturnUrl));
            }
            else
            {
                return(RedirectToAction("index", "home"));
            }
        }