How to limit access to certain nodes to certain users only? I am considering Drupal for a project with following features:


I need two content types: Supplier and Client.
I want my clients to be able to follow the progress of their orders (each order will be a node).
My suppliers will have access to their invoices, documents, etc. (which are nodes as well)


Any ideas on how to achieve this?

Example:


Client Alpha will have access to node/34 and node/46 only.
Supplier Beta will have access to node/38 and node/50 and their attached files only.
And so on ...


Is this possible with Drupal (6, 7) ? If so how can I do this, do I need custom coding or are there any other solutions for it?
Depending on how much more deep you want to take the logic of your project, you might not even need custom coding.


Start with Drupal 7 minimal installation profile
Install the modules views, entity, entity reference and their dependencies.
Create the content type "order" and add the fields you need to it. Add other content types as well like "invoice" and document, these last you might want to add a "reference" field to the order content type if they are connected.
Setup the user roles "client" and "supplier" and you might want to install the "ACL" and "content access" modules as well to define who has access to what, like "only"3 the author of the node can see it, edit it and delete it.
To make it easier for the user to see the nodes they have access to, you can create a tab on their user account using views listing only the node where they have access or where they are the authors.


Notes:
You might want to test the system before going live to make sure the right person can access the right content. Also if no anonymous user is meant to use the system disable content access to the anonymous users.