Ejemplo n.º 1
0
        public ActionResult Login(BELogin model)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            BLUsuario            oblUsuario = new BLUsuario();

            try
            {
                if (ModelState.IsValid)
                {
                    var _usr = model.user.Trim().ToUpper();
                    var _pwd = Peach.EncriptText(Crypto.CryptoProvider.TripleDES, model.pass.Trim());

                    var responser = oblUsuario.getUsuario_byLogin(_usr, _pwd);

                    if (responser.Estado == ResponserEstado.Ok)
                    {
                        BEUsuario UserData = (BEUsuario)responser.DataContent;
                        if (UserData.IsDominio == 1)
                        {
                            var DominioResult = BLUsuario.ValidaDominio(new BELogin {
                                user = _usr, pass = model.pass.Trim()
                            });
                            if (!DominioResult)
                            {
                                AddToastMessage(string.Empty, "Su contraseña no es correcta. Utilice su contraseña de dominio.", BootstrapAlertType.danger);
                                return(View());
                            }
                        }

                        // :Ticket de cookie
                        CustomPrincipalTicket _dataTicket = new CustomPrincipalTicket
                        {
                            CID                   = UserData.CID,
                            Usuario               = UserData.Apellidos,
                            Unidad_Nombre         = UserData.Unidad.Nombre,
                            OrganoServicio_CID    = UserData.OrganoServicio.CID,
                            OrganoServicio_Nombre = UserData.OrganoServicio.Nombre,
                            OrganoServicio_Abr    = UserData.OrganoServicio.Abreviatura,
                            Rol_Accion            = (UsuarioRolType)UserData.Rol.IntValue
                        };

                        // :Perfiles
                        int num_perfiles = (UserData.Perfiles != null) ? UserData.Perfiles.ToList().Count() : 1;
                        if (num_perfiles == 1)
                        {
                            // :Tiene un perfil => adiciona al ticket
                            _dataTicket.Perfil_CID    = UserData.Perfil.CID;
                            _dataTicket.Perfil_Nombre = UserData.Perfil.Nombre;
                        }

                        // :Serializa, encripta, genera la cookie y establece la sesión
                        string userData = serializer.Serialize(_dataTicket);
                        SessionHelper.AddUserToSession(Peach.EncriptText(userData));

                        if (num_perfiles == 1)
                        {
                            // :Home
                            return(RedirectToAction("Index", "Home"));
                        }
                        else
                        {
                            // Redirecciona a la página para la selección de perfil
                            TempData["jJ0PG6Fk"] = UserData.Perfiles;
                            return(RedirectToAction("Perfil", "Account"));
                        }
                    }
                    else
                    {
                        AddToastMessage(string.Empty, responser.Mensaje, responser.TipoAlerta);
                        return(View());
                    }
                }
                else
                {
                    AddToastMessage("Acceso no permitido", "Sus credenciales de acceso no son válidas", BootstrapAlertType.danger);
                    return(View());
                }
            }
            catch (Exception ex)
            {
                AddToastMessage("Error", ex.Message, BootstrapAlertType.danger);
            }

            return(View());
        }