Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save benbahrenburg/8b8e3cd51227a290510573c92ee3af80 to your computer and use it in GitHub Desktop.
Save benbahrenburg/8b8e3cd51227a290510573c92ee3af80 to your computer and use it in GitHub Desktop.
Security: ACLs, Query Business Rules

Number of rows removed due to security constraint

User gets this message in a list of records whenever there is a record user doesn't have rights to view. I.e. there is an ACL restricting access to a record or there in NO ACL granting the access. Let's ignore security mode setting here.

It's a default system beharior.

Would you like to get rid of it? System to count with records user has access to?

Solution 1

Replicate row level read access ACLs to query business rules. Naturally, every query will get controlled. Well-known and suggested solution.

Solution 2

Still rely on ACLs. Use system property to apply them globally or table attribute to specify it locally:

  • glide.security.ui.filter - system property (true|false).
  • glide.security.ui.filter - dictionary attribute (table), no value is required.

Server-side queries may not respect ACLs. GlideRecord doesn't do it. Although, developers may enforce it by dedicated methods to access to record and fields. GlideRecordSecure is a secured version of the class.

Note, it is respected by native UI lists and Service Portal (Data Table widgets), and it is NOT respected by simple-list widget. Keep an eye on it.

UPS! do you know what's the problem with it? It's not documented.

Configuration

Follow the step to set up security UI filter for a table:

  1. From table list or form navigate to Configure > Dictionary
  2. Open table record (Collection type)
  3. Switch to advanced view to get Attributes field available
  4. Fill in glide.security.ui.filter attribute

Credits

Helsinki Patch 5 Changes. List widget did not honor glide.security.ui.filter system property or Dictionary attribute for table to force use of FilteredGlideRecord in lists

Widget from Service Portal - Core package: widget-data-table.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment