Have you had a look at the multi tenancy stuff?
This is the right area to look into though. maybe you can find some associated procedures/calls in this area to overwrite with classes that return only the datasources that user should be able to see.
https://help.pentaho.com/Documentation/7.1/0R0/070/Multi-Tenancy