Hi,
which parent object to check for permissions
Unfortunately it's not that easy in the case of Project/Open. We can conclude from (no permission to see the parent) => (no permission to see the child), but not the other way around. We will have to check all objects individually afterwards. Anyway, most users will only be able to see a small number of containers, so it will be a good selection criterium.
Also, there are exceptions in P/O. There may be files in a project that are stored in a special "public" folder that should be available to all "Registered Users", "Employees" or "Sales Staff" for Knowledge Management reaons. So we'll have to extend our initial design above with a bitset for these profile-based permissions.
These are the reason why we can't just return an array of data from the search module to the display screen. It would just crash the system if we'd check potentially millions of entries. This also means a "no" for any service contract based architecture, if I see that right.
HP's professional printer division had a similar problem with a past version of their Intranet. This issue finally led them to abandon the project alltogether and to go with M$-Sharepoint. So permission checking and its performance implications must be integrated into the search system right from the beginning...
Bests,
Frank