Regardless of the language or MVC framework used, how should I handle different views based on roles?
For example (pseudo code):
views/post/show:
<% show post here %>
if (role.isAdmin or role.isModerator) {
<% show moderation tools %>
}
<% show rest of content %>
I don't quite like the idea of putting too much business logic into the view, but it doesn't seem like there're other options. Are there?
This gets messier and messier once you have more roles, or different levels of permissions. Take this site for example. Users with more than 200 rep see less ads. Users with more than 500 rep have a retag button. Then you get an edit button at 2000, a close button at 3000, moderation tools at 10k, and more functions if you are a "star" moderator.