Any page and/or row can be secured to only be accessible to specific user roles. (see this article for more details) You can then further filter the page to only show records that belong to the specific user by filtering the table.
For example: Suppose we have the following data structure - Jobs table where each Job is assigned to a User and each user belongs to particular Role.
To make sure users only see their data, we can do the following:
- Modify the settings of the "Jobs" page to only be accessible to users in the Employees table.
- Add a Jobs table in the Jobs page and filter it to only show records that belong to the user who is currently logged in.
The above approach works well for parent pages (such as Jobs page), but we still must secure the child pages further. In our example, if we secure the page by role, if UserA logs in he will only see his records and he'll be able to go into the details page and see additional details of his record. However, since the details page only secures the record by role it means if UserB belongs to the same role and has the link to the details page he can view the details of a record which doesn't belong to him.
To solve this, simply open the details page, go to the settings and make sure the page is secured to specific roles. You'll see an additional option: "Page restricted to logged in user by field?" select the field that determines who should have access. This will likely match the same field as the one chosen in the parent page's table.