User Access by Territory

User Access by Territory

We have a B2C business that operates multiple activity courses that are defined in our CRM as territories. 

We have new staff joining us who we'd like to only be able to access their activity clients, but not see the rest of the database. How do we set this up in the role/profile? 

In addition to this, a client may have done more than 1 activity and so may be allocated to multiple territories. In that instance, we'd like the user to be able to see all contact details events/mail/notes etc.