I have a User model that contains information such as username, email, hometown, etc. When the user is logged in, he can edit any of his information via the show page (/users/723, for example).
I'd like to have a "public" version of this page that can be viewed by someone that's not logged in or by someone that's logged in as someone else. It would have varying levels of information about the user and not have any of the links to edit information.
What's the cleanest way to properly show the three different versions of this page?
Addendum.
I am currently using authlogic for authentication and acl9 for access control. However, I don't see this as a question of authentication and authorization. I think it's a question of controller/view design. Whether the user is logged in or owns the information is incidental. If you wanted to display Widgets in three different manners based on some session state, I would think you'd be able to use the answer to this question.