Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions docs-mintlify/docs/data-modeling/data-access-policies.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,59 @@ view(`deals_view`, {

</CodeGroup>

### Filter by multiple user attributes

You can pass multiple values in the `values` array to match a dimension against
more than one user attribute. This is useful when users may have access based on
multiple properties, such as a country and a custom country property:

<CodeGroup>

```yaml title="YAML"
views:
- name: deals_view
# ...

access_policy:
- group: sales
member_level:
includes: "*"
row_level:
filters:
- member: users_country
operator: equals
values: [ "{ userAttributes.country }", "{ userAttributes.customCountryProperty }" ]
```

```javascript title="JavaScript"
view(`deals_view`, {
// ...

access_policy: [
{
group: `sales`,
member_level: {
includes: `*`
},
row_level: {
filters: [
{
member: `users_country`,
operator: `equals`,
values: [
userAttributes.country,
userAttributes.customCountryProperty
]
}
]
}
}
]
})
```

</CodeGroup>

### Mask sensitive members

You can mask sensitive members for most users while granting full access to
Expand Down
47 changes: 47 additions & 0 deletions docs-mintlify/reference/data-modeling/data-access-policies.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,53 @@ cube(`orders`, {

</CodeGroup>

You can also pass multiple values in the `values` array to match against several
user attributes at once. This is useful when you need to check a dimension
against more than one attribute, for example, when a user may have access based
on multiple properties:

<CodeGroup>

```yaml title="YAML"
cubes:
- name: orders
# ...

access_policy:
- group: manager
row_level:
filters:
- member: users_country
operator: equals
values: [ "{ userAttributes.country }", "{ userAttributes.customCountryProperty }" ]
```

```javascript title="JavaScript"
cube(`orders`, {
// ...

access_policy: [
{
group: `manager`,
row_level: {
filters: [
{
member: `users_country`,
operator: `equals`,
values: [
userAttributes.country,
userAttributes.customCountryProperty
]
}
]
}
}
]
})
```

</CodeGroup>

For convenience, row filters are configured using the same format as [filters in
REST API][ref-rest-query-filters] queries, allowing to use the same set of
[filter operators][ref-rest-query-ops], e.g., `equals`, `contains`, `gte`, etc.
Expand Down
Loading