How to have a node which displays & interacts differently with different type of users? Title might not be very clear. But to clarify my question, I'll take example of a Book Content Type. 

I've 3 different types of users: Authors, Reviewers, Admin. Now this is what I want to achieve:

On the Book Page [a display which is shown to even unauthenticated user], Registered Reviewer submits a review for a book which should appear in Approve Reviews page of Admin, When the admin approves it should Appear in respective Author's Reviews for my books page and when finally the Author approves, it should be displayed on the Book Page.

And the reviewer must have a Submitted Reviews page which should list all the reviews he submitted each showing its present status like:

"Waiting for Admin's Approval", "Waiting for Author's Approval", "Approved"

I don't know how to achieve this.
There are many ways to accomplish this but here's one:


create content type Book
create content type Review
add a custom status field to Review (select list) and add the three states (admin approval, author approval, approved)
download and enable references module (also enable submodule node reference)
download and enable rules module (also enable rules ui submodule)
add a node reference field to Review (e.g. autocomplete widget)
create roles admin_reviews, author, reviewer
create view lists for reviews content and set permissions per role for admin_reviews, author and reviewer pages. Filter on field status of review for each role
use field permissions module to show / hide fields per role

create rules to set status of review (After saving new content -> set data value)