コード例 #1
0
        private void GuardarLog(Usuario usuario, bool esLogOn)
        {
            var accion = _accionesRepository.ObtenerPorNombre(esLogOn ? "LogOn" : "LogOff", "Account");

            if (accion == null)
            {
                var controlador = _controladoresRepository.ObtenerPorNombre("Account");
                if (controlador == null)
                {
                    controlador = new Controlador()
                    {
                        Descripcion = "Controlador de registro de sesión",
                        Nombre      = "Account"
                    };
                    _controladoresRepository.Guardar(controlador);
                }
                accion = new Accion()
                {
                    IdControlador  = controlador.Id,
                    Descripcion    = esLogOn ? "Registro de sesión" : "Cerrar sesión",
                    NombreAmigable = esLogOn ? "Login" : "Logoff",
                    NombreAccion   = esLogOn ? "LogOn" : "LogOff"
                };
                _accionesRepository.Guardar(accion);
            }
            //var log = new Log()
            //{
            //    IdAccion = accion.Id,
            //    Fecha = DateTime.Now,
            //    IdUsuario = usuario.Id,
            //    Parametros = usuario.NombreUsuario,
            //};
            //_logsRepository.Guardar(log);
        }
コード例 #2
0
        public static bool PermitirMenu(string nombreAccion, string nombreControlador)
        {
            var usaurio = Usuario;

            if (!usaurio.Activo)
            {
                return(false);
            }
            var accion = AccionesRepository.ObtenerPorNombre(nombreAccion, nombreControlador);

            return(accion != null && PermisosRolRepository.PoseePermiso(Usuario.IdRol, accion.Id));
        }
コード例 #3
0
        public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
        {
            var usuario = SesionUsuario.Usuario;

            if (usuario == null)
            {
                actionExecutingContext.Controller.TempData["WarningMessage"] =
                    "Usted no posee permisos para visitar la aplicación ";
                var url = actionExecutingContext.HttpContext.Request.RawUrl;
                actionExecutingContext.Result =
                    new RedirectResult("/Account/LogOn?returnUrl=" + url);
                return;
            }
            if (!usuario.Activo || !usuario.Rol.Activo)
            {
                actionExecutingContext.Controller.TempData["WarningMessage"] =
                    "Usted no posee permisos para visitar la aplicación ";
                var url = actionExecutingContext.HttpContext.Request.RawUrl;
                actionExecutingContext.Result = new RedirectResult("/Account/LogOn?returnUrl=" + url);
                return;
            }
            var nombreControlador = actionExecutingContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            var nombreAccion      = actionExecutingContext.ActionDescriptor.ActionName;
            var permitir          = true;
            var accion            = _accionesRepository.ObtenerPorNombre(nombreAccion, nombreControlador);

            if (accion == null)
            {
                var controlador = _controladoresRepository.ObtenerPorNombre(nombreControlador);
                if (controlador == null)
                {
                    controlador = new Controlador()
                    {
                        Descripcion = nombreControlador + " creado automaticamente.",
                        Nombre      = nombreControlador,
                    };
                    _controladoresRepository.Guardar(controlador);
                }
                accion = new Accion()
                {
                    IdControlador   = controlador.Id,
                    Descripcion     = Utilidades.CamelToTitleCase(nombreAccion) + ", " + Utilidades.CamelToTitleCase(controlador.Nombre) + " creada automaticamente.",
                    NombreAmigable  = Utilidades.CamelToTitleCase(nombreAccion),
                    NombreAccion    = nombreAccion,
                    EsEtapa         = false,
                    ParaMenuLateral = false,
                    Orden           = 0
                };
                _accionesRepository.Guardar(accion);

                permitir = Utilidades.DebugMode();
            }
            else
            {
                permitir = Utilidades.DebugMode() || _permisosRolRepository.PoseePermiso(usuario.IdRol, accion.Id) ||
                           _permisosRolRepository.PoseePermisoSideBar(usuario.IdRol, accion.Id);
            }

            if (permitir)
            {
                SesionUsuario.CurrentNode =
                    SiteMap.Provider.FindSiteMapNode("/" + nombreControlador + "/" + nombreAccion);
                SesionUsuario.ParentNode = _menuRepository.ObtenerNodoPadre(SesionUsuario.CurrentNode);
                try
                {
                    GuardarLog(usuario.Id, accion.Id, actionExecutingContext.ActionParameters);
                }
                catch (Exception ex)
                {
                    XmlConfigurator.Configure();
                    Log.Error("Ha ocurrido un error al guardar el log en la base de datos. En la ruta " +
                              nombreControlador + "/" + nombreAccion + " error: " + ex.Message);
                }
                return;
            }
            actionExecutingContext.Controller.TempData["WarningMessage"] =
                "Usted no posee permisos para acceder a la ruta " + nombreControlador + "/" + nombreAccion;
            actionExecutingContext.Result = new RedirectResult("/Home/Desautorizado");
        }