First of all, we need to implement an ability to completely disable integrations for certain users, just like we have it for Instant Messages.
Once disabled, a user should not be able to view tickets related to that disabled integration. Even using the Global Search feature.
A user should not be able to see Customers, Orders and Products, related to a disabled integration.
A user should not be able to see Feedback and Cases related to the disabled integration.
All integrations should be enabled for all users by default.
Secondly, the Labels. If a ticket has only one label assigned and a user does not have access to this label, then a ticket should not be visible to this user.
If a ticket has multiple labels assigned, then we need to show this ticket to a user if he has access to at least one label.
Add the "Show unlabelled tickets" tick box which is enabled for all users by default.
The next thing. Users with access to Tools => Automation (Edit) and Tools => Smart Filters(Edit) should be able to see all integrations and labels possible when creating new automation or smart filters even if these integrations or labels are disabled for these users. But these users still should not see Tickets, Customers, Products, etc.
Lastly. When using Smart Filters or the Global Search feature, all the results should be displayed considering everything above.