public async Task <IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null) { bool isExist = false; returnUrl = returnUrl ?? Url.Content("~/"); if (remoteError != null) { ErrorMessage = $"Error from external provider: {remoteError}"; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { ErrorMessage = "Error loading external login information."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } var userID = _context.AspNetUserLogins.Where(p => p.ProviderKey == info.ProviderKey && p.LoginProvider == info.LoginProvider).SingleOrDefault().UserId; var user = _context.AspNetUsers.Where(p => p.Id == userID).SingleOrDefault(); BDS_ML.Models.ModelDB.Admin admin = new Models.ModelDB.Admin(); Customer cus = new Customer(); if (user != null) { isExist = true; if (user.IsBlock != 0) { if (user.IsAdmin == 0) { cus = _context.Customer.Where(c => c.Account_ID == user.Id).SingleOrDefault(); var block = _context.Block.Where(b => b.ID_User == cus.ID_User).OrderBy(p => p.ModifiedDate).LastOrDefault(); if (block.UnLockDate <= DateTime.Now) { try { block.ModifiedDate = DateTime.Now.Date; user.IsBlock = 0; _context.AspNetUsers.Attach(user); _context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.Block.Attach(block); _context.Entry(block).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.SaveChanges(); } catch { } } else { ErrorMessage = "Tài khoản bị khóa!. Lí do: " + block.Reason + "."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } } if (user.IsAdmin == 1) { admin = _context.Admin.Where(c => c.Account_ID == user.Id).SingleOrDefault(); var block = _context.Block.Where(b => b.ID_User == admin.ID_Admin).OrderBy(p => p.ModifiedDate).LastOrDefault(); if (block.UnLockDate <= DateTime.Now) { try { block.ModifiedDate = DateTime.Now.Date; user.IsBlock = 0; _context.AspNetUsers.Attach(user); _context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.Block.Attach(block); _context.Entry(block).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.SaveChanges(); } catch { } } else { ErrorMessage = "Tài khoản bị khóa!. Lí do: " + block.Reason + "."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } } } } // Sign in the user with this external login provider if the user already has a login. var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true); if (result.Succeeded) { string urlavatar = ""; if (user.IsAdmin == 1) { admin = _context.Admin.Where(c => c.Account_ID == user.Id).SingleOrDefault(); urlavatar += admin.Avatar_URL; } else { cus = _context.Customer.Where(c => c.Account_ID == user.Id).SingleOrDefault(); urlavatar += cus.Avatar_URL; } HttpContext.Session.SetString("AvatarImage", urlavatar); _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider); return(LocalRedirect(returnUrl)); } if (result.IsLockedOut) { return(RedirectToPage("./Lockout")); } else if (isExist) { return(RedirectToPage("./ExternalExistEmail")); } else { // If the user does not have an account, then ask the user to create an account. ReturnUrl = returnUrl; LoginProvider = info.LoginProvider; if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Email)) { Input = new InputModel { Email = info.Principal.FindFirstValue(ClaimTypes.Email), FirstName = info.Principal.FindFirstValue(ClaimTypes.GivenName), LastName = info.Principal.FindFirstValue(ClaimTypes.Surname), Address = info.Principal.FindFirstValue(ClaimTypes.Country), PhoneNumber = info.Principal.FindFirstValue(ClaimTypes.MobilePhone) }; } return(Page()); } }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); var user = _context.AspNetUsers.Where(p => p.UserName == Input.Email).SingleOrDefault(); if (user == null) { ModelState.AddModelError(string.Empty, "Đăng nhập không thành công!."); return(Page()); } BDS_ML.Models.ModelDB.Admin admin = new Models.ModelDB.Admin(); Customer cus = new Customer(); if (user.IsBlock != 0) { if (user.IsAdmin == 0) { cus = _context.Customer.Where(c => c.Account_ID == user.Id).SingleOrDefault(); var block = _context.Block.Where(b => b.ID_User == cus.ID_User).OrderBy(p => p.ModifiedDate).LastOrDefault(); if (block.UnLockDate.GetValueOrDefault().Date <= DateTime.Now.Date) { try { block.ModifiedDate = DateTime.Now.Date; user.IsBlock = 0; _context.AspNetUsers.Attach(user); _context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.Block.Attach(block); _context.Entry(block).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.SaveChanges(); } catch { } } else { ModelState.AddModelError(string.Empty, "Tài khoản bị khóa!. Lí do: " + block.Reason); return(Page()); } } if (user.IsAdmin == 1) { admin = _context.Admin.Where(c => c.Account_ID == user.Id).SingleOrDefault(); var block = _context.Block.Where(b => b.ID_User == admin.ID_Admin).OrderBy(p => p.ModifiedDate).LastOrDefault(); if (block.UnLockDate <= DateTime.Now) { try { block.ModifiedDate = DateTime.Now.Date; user.IsBlock = 0; _context.AspNetUsers.Attach(user); _context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.Block.Attach(block); _context.Entry(block).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.SaveChanges(); } catch { } } else { ModelState.AddModelError(string.Empty, "Tài khoản bị khóa!. Lí do: " + block.Reason); return(Page()); } } } if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure : true); if (result.Succeeded) { string urlavatar = ""; if (user.IsAdmin == 1) { admin = _context.Admin.Where(c => c.Account_ID == user.Id).SingleOrDefault(); urlavatar += admin.Avatar_URL; } else { cus = _context.Customer.Where(c => c.Account_ID == user.Id).SingleOrDefault(); urlavatar += cus.Avatar_URL; } HttpContext.Session.SetString("AvatarImage", urlavatar); _logger.LogInformation("User logged in."); return(LocalRedirect(returnUrl)); } if (result.RequiresTwoFactor) { return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe })); } if (result.IsLockedOut) { _logger.LogWarning("User account locked out."); return(RedirectToPage("./Lockout")); } else { ModelState.AddModelError(string.Empty, "Đăng nhập không thành công!."); return(Page()); } } // If we got this far, something failed, redisplay form return(Page()); }