public ActionResult Login(LoginModel model, string returnUrl) { if (!ModelState.IsValid) { PopulateProjects(model); return(View(model)); } if (IsLdapUser(model.UserName)) { if (Membership.ValidateUser(model.UserName, model.Password) && IsProjectMember(model.UserName, model.ProjectId)) { var user = _userAccountService.GetUser(model.UserName); if (!user.EstaEnLinea) { FormsAuthentication.SetAuthCookie(model.UserName, false); //CreateAuthCookie(model.NombreUsuario, model.RememberMe); Session.Add("HpDk_User", model.UserName); Session.Add("Current_Project", model.ProjectId); user.UltimoLoginEn = DateTime.Now; user.EstaEnLinea = true; var saveUserConfirmation = _userAccountService.SaveOrUpdateUser(user); var logMessage = $"{model.UserName} inició sesión."; _eventLogService.AddInfo(logMessage, logMessage, EventCategory.ActividadUsuario.ToString(), User.Identity.Name, EventSource.Usuario); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")) { return(Redirect(returnUrl)); } var pageMessage = $"Bienvenid@ {model.UserName}"; this.AddPageMessage(pageMessage, PageMessageType.Success, true); SaveProjectCookie(model.ProjectId); return(RedirectByGroup(model.UserName)); } else { ModelState.AddModelError("", "Ya existe una sesión de este usuario. Cierre la otra sesión para poder ingresar al sistema"); var failMessage = $"{model.UserName} trató de ingresar pero ya existe otra sesión."; _eventLogService.AddInfo(failMessage, failMessage, EventCategory.ActividadUsuario.ToString(), User.Identity.Name, EventSource.Usuario); PopulateProjects(model); return(View(model)); } } else { ModelState.AddModelError("", "El usuario o contraseña son incorrectos"); var concurrentMessage = $"{model.UserName} fallo de autenticación al ingresar."; _eventLogService.AddWarn(concurrentMessage, concurrentMessage, EventCategory.ActividadUsuario.ToString(), User.Identity.Name, EventSource.Usuario); } } else { if (LocalLogin(model.UserName, model.Password, false) && IsProjectMember(model.UserName, model.ProjectId)) { var user = _userAccountService.GetUser(model.UserName); user.UltimoLoginEn = DateTime.Now; user.EstaEnLinea = true; var saveUserConfirmation = _userAccountService.SaveOrUpdateUser(user); Session.Add("Current_Project", model.ProjectId); SaveProjectCookie(model.ProjectId); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")) { return(Redirect(returnUrl)); } return(RedirectByGroup(model.UserName)); } } PopulateProjects(model); return(View(model)); }