This is my approach as well, however, how do you contend with different sets of permissions between those Teams if a user can only have one security group? Basically if you change the active Team they might be able to see things they shouldn’t be able to.

One way to solve this is to create another table to store the association between the user and the team/company but also have a security group and apply your same logic to the “current team” and set a “current security group.