Customize Superset row level security#

To apply custom row level security filters to Superset, you can use the patch superset-row-level-security. This patch can overwrite the default list of roles or use append to add additional dictionaries.

Overwrite existing:

SECURITY_FILTERS = [
        {
            "schema": "{{ASPECTS_XAPI_DATABASE}}",
            "table_name": "{{ASPECTS_XAPI_TABLE}}",
            "role_name": "{{SUPERSET_ROLES_MAPPING.instructor}}",
            "group_key": "{{SUPERSET_ROW_LEVEL_SECURITY_XAPI_GROUP_KEY}}",
            "clause": {% raw %}'{{can_view_courses(current_username(), "splitByChar(\'/\', course_id)[-1]")}}',{% endraw %}
            "filter_type": "Regular",
        },
]

Add to existing:

SECURITY_FILTERS.append(
        {
            "schema": "{{ASPECTS_XAPI_DATABASE}}",
            "table_name": "{{ASPECTS_XAPI_TABLE}}",
            "role_name": "{{SUPERSET_ROLES_MAPPING.instructor}}",
            "group_key": "{{SUPERSET_ROW_LEVEL_SECURITY_XAPI_GROUP_KEY}}",
            "clause": {% raw %}'{{can_view_courses(current_username(), "splitByChar(\'/\', course_id)[-1]")}}',{% endraw %}
            "filter_type": "Regular",
        },
)

You can find more information about Superset RLSF in the Superset documentation.