Esempio n. 1
0
        public async Task <ActionResult> IniciarSesion(UsuarioViewModel model, string returnUrl)
        {
            if (model.ActiveDirectory)
            {
                var authenticated = ValidarEnActiveDirectory(ConfigurationManager.AppSettings["ldap"], model.Usuario1, model.Contrasenia);
                if (!authenticated)
                {
                    ModelState.AddModelError("", "User NO Existe");
                    return(View(model));
                }
            }
            UsuarioViewModel usuariologueado = null;

            if (ModelState.IsValid)
            {
                var proxy = new UsuarioAgenteProxy();
                usuariologueado = proxy.ValidaLogin(model);
                if (usuariologueado != null) //existe y se valido correctamente
                {
                    SesionActual.Usuario = usuariologueado;
                    if (usuariologueado.RolId != 1)
                    {
                        return(Redirect(formsAuth.DefaultUrl));
                    }
                    formsAuth.SetAuthCookie(model.Nombre, true);
                    Session["credencial"]        = model;
                    SesionActual.EstaAutenticado = true;
                    return(Redirect(formsAuth.DefaultUrl));
                }
            }
            ModelState.AddModelError("", "Credencial Invalida");
            return(View(usuariologueado));
        }
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (SesionActual.Usuario == null)
            {
                return(false);
            }


            //CHECA SI EL ROL PUEDE  VER ESA ACCION DE ESE CONTROLLER
            var proxy      = new UsuarioAgenteProxy();
            var controller = HttpContext.Current.Request.RequestContext.RouteData.GetRequiredString("controller");
            var action     = HttpContext.Current.Request.RequestContext.RouteData.GetRequiredString("action");
            var url        = controller + "/" + action;

            if (!proxy.ValidaRolconAccion(SesionActual.Usuario.RolId, url))
            {
                SesionActual.Usuario = null;
                return(false);
            }

            // Obtenemos la ruta real de acceso segun los valores combinados de la URL y la tabla de rutas.
            // Esto nos evita tener que quitar la QueryString y parametros en el Path
            var rutaSimple = "";

            var h = httpContext.CurrentHandler as MvcHandler;

            //rutaSimple = String.Format("/{0}/{1}",
            //    h.RequestContext.RouteData.Values["controller"],
            //    h.RequestContext.RouteData.Values["action"]);

            //Obtenemos lista de opciones y comparamos el acceso bloqueado en el menu segun el plan (aprobador/cerrado)
            //var esCicloActual = SesionActual.EsCicloActual;
            //if (esCicloActual) return true;
            //foreach (Opcion hijo in SesionActual.MenuArbol.SelectMany(padre => padre.Hijos.Where(hijo => hijo.Ruta == rutaSimple)))
            //{
            //    return hijo.CargaId != null && hijo.CargaId == 1;
            //}
            return(true);
        }