We place users into groups on the server. (Users can be in multiple groups, BTW.)
I have sheets and buttons and other objects on dashboards that only certain users can see. For instance we might have a group called "Finance". Anyone in the "Finance" group can see a particular sheet. But I expose filters for that sheet only to certain users. These users I have put into a second group called "Power_Finance_Users". And I control display of the filters with a calc that says:
IF ISMEMBEROF("Power_Finance_Users") then 1 else 0 END
I do this for Power_Broadcast_Users and Power_Pledge_Users as well. It has worked out very nicely for me.
Specific to your question, you could put people with publish permission into a special group, and then prevent everyone else's access to stuff only the publishers should see.
Thanks Joe, that's helpful. I should be a little more specific I'm trying to filter workbooks to only display themselves to users with publish rights to that particular workbook or even project.
I think if I understand you correctly, I'd be making a group for each workbook of users who can publish it. If there's a way to automate that, then I guess I could go for it. But otherwise, I'm not sure that would work.