public static bool HasRole(this ControllerBase controller, string role)
    {
        bool bFound = false;

        try
        {
            //Se fija si el usuario tiene el rol especificado
            bFound = new SUIUsuarios(controller.ControllerContext.HttpContext.User.Identity.Name).HasRole(role);
        }
        catch { }
        return(bFound);
    }
    public static bool IsSysAdmin(this ControllerBase controller)
    {
        bool bIsSysAdmin = false;

        try
        {
            //Se fija si el usuario tiene los privilegios de Administrador
            bIsSysAdmin = new SUIUsuarios(controller.ControllerContext.HttpContext.User.Identity.Name).EsAdmin;
        }
        catch { }
        return(bIsSysAdmin);
    }
    public static bool HasPermission(this ControllerBase controller, string permission)
    {
        bool bFound = false;

        try
        {
            //Se fija si el usuario tiene los permisos necesarios
            bFound = new SUIUsuarios(controller.ControllerContext.HttpContext.User.Identity.Name).HasPermission(permission);
        }
        catch { }
        return(bFound);
    }
    public static bool HasRoles(this ControllerBase controller, string roles)
    {
        bool bFound = false;

        try
        {
            // Revisa si el usuario tiene cualquiera de los roles

            bFound = new SUIUsuarios(controller.ControllerContext.HttpContext.User.Identity.Name).HasRoles(roles);
        }
        catch { }
        return(bFound);
    }
示例#5
0
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //Permisos basados en el nombre del controlador solicitado y el nombre de la acción en el formato 'nombre-controlador-acción'
        string requiredPermission = String.Format("{0}-{1}", filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, filterContext.ActionDescriptor.ActionName);

        //Cree una instancia de nuestro objeto de autorización de usuario personalizado que pasa solicitando al usuario 'Nombre de usuario de Windows' en el constructor
        SUIUsuarios requestingUser = new SUIUsuarios(filterContext.RequestContext.HttpContext.User.Identity.Name);

        log.InfoFormat("{0} {1}", requiredPermission, requestingUser.Usuario);
        //Check si el usuario tiene los permisos sobre los controladores o tiene el perfil admin
        if (!requestingUser.HasPermission(requiredPermission) & !requestingUser.EsAdmin)
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                { "action", "Index" }, { "controller", "Unauthorised" }
            });
        }
    }