public async Task <IActionResult> Login(LoginDTO model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (!ModelState.IsValid) { return(View(model)); } //var tenant = RouteData.Values.SingleOrDefault(r => r.Key == "tenantid"); //Transform the login details model.username = model.username; //Verify Username or Email var auser = await _userService.CheckUser(model.username); if (auser == null) { this.AddNotification("Invalid login attempt. please try again!", NotificationType.ERROR); _logger.LogWarning("Invalid login attempt. please try again!"); return(View(model)); } else if (!(await _userManager.IsEmailConfirmedAsync(auser))) { this.AddNotification("Invalid login attempt. please try again!", NotificationType.ERROR); return(View(model)); } else if (auser.UserName.ToLower() != "admin" || auser.Email.ToLower() != "*****@*****.**") { //Get Institution Users var userri = (await _userService.GetUsers()).Where(v => v.usernname.ToLower() == model.username.ToLower()).FirstOrDefault(); if (userri.isactive == false) { return(RedirectToAction(nameof(Lockout))); } else if (userri.usercategory == "V") { } else if (userri.usercategory == "T") { return(RedirectToAction(nameof(Lockout))); } } await _userManager.UpdateSecurityStampAsync(auser); //var Lockoutcheck = _context.TSysConfigurationCaps.Where(x => x.ConfigId == 5009 && x.Enabled == 1).Single(); //if (!string.IsNullOrEmpty(Lockoutcheck.ConfigValue) && int.TryParse(Lockoutcheck.ConfigValue, out int n) == true) //{ // 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(auser.UserName, model.password, isPersistent : false, lockoutOnFailure : true); if (result.Succeeded) { //Create Last Login Date await _accountService.CreateLastLoginDate(auser.Id); //Create Distributed Cache Cache // _memoryCache.SetString(CacheKeys.Entry, DateTime.UtcNow.ToString()); //var tenantid = long.Parse(tenant.Value.ToString()); //var appusers = (await _userService.GetTenantUsers(tenantid)).Where(x => x.appuserid == auser.Id); //var userid = _ _logger.LogInformation("User logged in."); return(RedirectToLocal(returnUrl)); } if (result.IsLockedOut) { _logger.LogWarning("User account locked out."); return(RedirectToAction(nameof(Lockout))); } else { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return(View(model)); } }