Skip to content

Commit db65741

Browse files
Add examples for multiple values in data access policy filters (cube-js#10630)
* docs: add examples for multiple values in data access policy filters Generated-By: mintlify-agent * fix: use correct example values from issue for multiple values in filters Generated-By: mintlify-agent * fix: use users_country member and camelCase customCountryProperty in examples Generated-By: mintlify-agent --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
1 parent 4a9453b commit db65741

2 files changed

Lines changed: 100 additions & 0 deletions

File tree

docs-mintlify/docs/data-modeling/data-access-policies.mdx

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,59 @@ view(`deals_view`, {
385385

386386
</CodeGroup>
387387

388+
### Filter by multiple user attributes
389+
390+
You can pass multiple values in the `values` array to match a dimension against
391+
more than one user attribute. This is useful when users may have access based on
392+
multiple properties, such as a country and a custom country property:
393+
394+
<CodeGroup>
395+
396+
```yaml title="YAML"
397+
views:
398+
- name: deals_view
399+
# ...
400+
401+
access_policy:
402+
- group: sales
403+
member_level:
404+
includes: "*"
405+
row_level:
406+
filters:
407+
- member: users_country
408+
operator: equals
409+
values: [ "{ userAttributes.country }", "{ userAttributes.customCountryProperty }" ]
410+
```
411+
412+
```javascript title="JavaScript"
413+
view(`deals_view`, {
414+
// ...
415+
416+
access_policy: [
417+
{
418+
group: `sales`,
419+
member_level: {
420+
includes: `*`
421+
},
422+
row_level: {
423+
filters: [
424+
{
425+
member: `users_country`,
426+
operator: `equals`,
427+
values: [
428+
userAttributes.country,
429+
userAttributes.customCountryProperty
430+
]
431+
}
432+
]
433+
}
434+
}
435+
]
436+
})
437+
```
438+
439+
</CodeGroup>
440+
388441
### Mask sensitive members
389442

390443
You can mask sensitive members for most users while granting full access to

docs-mintlify/reference/data-modeling/data-access-policies.mdx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,53 @@ cube(`orders`, {
399399

400400
</CodeGroup>
401401

402+
You can also pass multiple values in the `values` array to match against several
403+
user attributes at once. This is useful when you need to check a dimension
404+
against more than one attribute, for example, when a user may have access based
405+
on multiple properties:
406+
407+
<CodeGroup>
408+
409+
```yaml title="YAML"
410+
cubes:
411+
- name: orders
412+
# ...
413+
414+
access_policy:
415+
- group: manager
416+
row_level:
417+
filters:
418+
- member: users_country
419+
operator: equals
420+
values: [ "{ userAttributes.country }", "{ userAttributes.customCountryProperty }" ]
421+
```
422+
423+
```javascript title="JavaScript"
424+
cube(`orders`, {
425+
// ...
426+
427+
access_policy: [
428+
{
429+
group: `manager`,
430+
row_level: {
431+
filters: [
432+
{
433+
member: `users_country`,
434+
operator: `equals`,
435+
values: [
436+
userAttributes.country,
437+
userAttributes.customCountryProperty
438+
]
439+
}
440+
]
441+
}
442+
}
443+
]
444+
})
445+
```
446+
447+
</CodeGroup>
448+
402449
For convenience, row filters are configured using the same format as [filters in
403450
REST API][ref-rest-query-filters] queries, allowing to use the same set of
404451
[filter operators][ref-rest-query-ops], e.g., `equals`, `contains`, `gte`, etc.

0 commit comments

Comments
 (0)