public void Application_PostAuthenticateRequest (object sender, EventArgs e) { HttpCookie cookie = Request.Cookies["cookieempleado"]; if (cookie != null) { String datoscookie = cookie.Value; FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(datoscookie); String idempleado = ticket.Name; String oficio = ticket.UserData; ModeloEmpleados modelo = new ModeloEmpleados(); EMP emp = modelo.BuscarEmpleado(int.Parse(idempleado)); //IDENTIDAD GenericIdentity identidad = new GenericIdentity(emp.APELLIDO); //ROLES U OFICIOS DEL EMPLEADO List <String> oficios = new List <string>() { oficio }; EmpleadoPrincipal empleado = new EmpleadoPrincipal(identidad, oficios); empleado.Apellido = emp.APELLIDO; empleado.Oficio = emp.OFICIO; empleado.FechaAlta = emp.FECHA_ALT.GetValueOrDefault(); empleado.NumeroEmpleado = emp.EMP_NO; //ALMACENAMOS EL USUARIO PRINCIPAL EN LA SESION HttpContext.Current.User = empleado; } }
public override void OnAuthorization (AuthorizationContext filterContext) { base.OnAuthorization(filterContext); if (filterContext.HttpContext.Request.IsAuthenticated) { EmpleadoPrincipal empleado = HttpContext.Current.User as EmpleadoPrincipal; if (empleado.IsInRole("PRESIDENTE") == false && empleado.IsInRole("DIRECTOR") == false && empleado.IsInRole("ANALISTA") == false) { //SI EL USUARIO NO ES ADMINISTRADOR //LE ENVIAMOS A OTRA RUTA (ErrorAcceso) RouteValueDictionary rutaacceso = new RouteValueDictionary(new { controller = "Validacion" , action = "ErrorAcceso" }); RedirectToRouteResult direccionacceso = new RedirectToRouteResult(rutaacceso); filterContext.Result = direccionacceso; } } else { //EL USUARIO NO SE HA VALIDADO TODAVIA //Y HACEMOS UN ROUTING HACIA EL LOGIN //PARA HACER UN ROUTING (INTERCEPTAR LA PETICION) //NECESITAMOS CREAR LA CLASE //RouteValueDictionary CON CONTROLLER Y ACTION //DONDE DESEAMOS ENVIAR LA NUEVA PETICION RouteValueDictionary ruta = new RouteValueDictionary(new { controller = "Validacion" , action = "Login" }); //MEDIANTE LA CLASE RedirectToRouteResult //INDICAMOS LA PROPIA REDIRECCION CON LA RUTA RedirectToRouteResult direccionlogin = new RedirectToRouteResult(ruta); //MEDIANTE filtercontext, TENEMOS UNA //PROPIEDAD RESULT QUE NOS PERMITE REDIRIGIR //A OTRAS RUTAS filterContext.Result = direccionlogin; } }
// GET: Empleados public ActionResult Index() { //RECUPERAMOS AL EMPLEADOS DE LA SESION EmpleadoPrincipal empleado = HttpContext.User as EmpleadoPrincipal; List <EMP> lista; if (empleado.IsInRole("PRESIDENTE") == true) { lista = modelo.GetEmpleados(); } else { lista = modelo.GetEmpleadosSubordinados(empleado.NumeroEmpleado); } return(View(lista)); }