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")); } }