Roster Views with User data plus office content type
Sounds like a perfect usecase for the Group module, whereas you'd use a group type like Offices. And so that you create 1 group (of group type Offices). From then on you have the Group permission system to configure access rules to fit your needs.

And BTW, this can be for either D7 or D8.