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); }