What recommendation engine for a situation where users can only see a fraction of all items?
I feel that you need to address two things separately. 

First, You need to have access control for the users in your system. You can have access tokens attached to each user and file. Filter the files database before you process.

Second, Ranking the documents I would suggest have some weight for a document weight and user weight which relative to the current browsing user.

For example I can think of document weight and user weight as follows but they can be much more complex as per your system-

DocumentWeight = Number of Views/ Number of Users can Access
UserWeight = ## Relative to browsing user- Users in similar project will have higher weights

DocumentScore = Sum over all viewed users{DocumentWeight x UserWeight}


You can rank the documents, this will statistically pull up the documents you need. I hope this will be some help.