How to set up tiered access privileges?

I’m using restful_authentication and role_requirement to handle use
authentication for my application. I’m wondering what the best way is
for me to set up tiered access privileges. Essentially, I want to
restrict access as follows:

  • some users will get access to one or more branches
  • some users will get access to one or more regions, including the
    branches within that region
  • some users will get access to an entire company, including the
    regions and branches within that company

When a person logs into the application, I want to show them data only
relevant to their particular branch if they only have access at the
branch level. Similarly, when a person logs in that has access to an
entire company, I want to be able to show them company data, regional
data, and branch-level data.

Should I set up three separate index tables (users_branches,
users_regions, users_companies), and then when the user logs in just
do three separate finds, one against each of these three tables, to
find out their access rights? Or is there a better way to do this to
cut down on the number of queries?

I hope I’ve been clear enough - let me know if I need to elaborate
more.

Thanks in advance!