Exemple #1
0
        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));
        }