But assigning a role for each client can get complicated.
Other than that, I don0t think it’s proper architecture to let clients into your system, hoping they will see only their data. It’s not built to handle security like that, there will be many holes. I believe what you’re looking for is something like the AOP Portal.
Currently the portal only supports a few modules like Cases and Documents, but it can easily be extended with a little code.