Need to be able to filter records based on User Role

When you delete everything event.filter becomes empty. This creates invalid OData filter expression such as and Region/Region1 eq 'USA' (the filter expression cannot start with and and or).

The solution is to use a condition when using event.filter - ${event.filter ? event.filter + ' and ' : ''}. Here is how to use that in your expression:

${event.filter ? event.filter + ' and ' : ''}(Region/Region1 eq '${security.user.roles[0]}' or Region/Region1 eq '${security.user.roles[1]}' or Region/Region1 eq '${security.user.roles[2]}' or Region/Region1 eq '${security.user.roles[3]}' or Region/Region1 eq '${security.user.roles[4]}')

I can suggest a shorter version which will allow you to use arbitrary number of roles without modifying the filter expression any more:

${event.filter ? event.filter + ' and ' : ''}Region/Region1 in (${security.user.roles.map(role => "'" + role + "'").join(', ')})

The latter uses the Array.map and Array.join functions to create a string in the form ('Role1', 'Role2', 'Role3') regardless of the number of roles.

1 Like