MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / generate_required_source_privileges

Function generate_required_source_privileges

src/sql/src/rbac.rs:1700–1725  ·  view source on GitHub ↗
(
    name: &QualifiedItemName,
    data_source: &DataSourceDesc,
    in_cluster: Option<ClusterId>,
    role_id: RoleId,
)

Source from the content-addressed store, hash-verified

1698}
1699
1700fn generate_required_source_privileges(
1701 name: &QualifiedItemName,
1702 data_source: &DataSourceDesc,
1703 in_cluster: Option<ClusterId>,
1704 role_id: RoleId,
1705) -> Vec<(SystemObjectId, AclMode, RoleId)> {
1706 let mut privileges = vec![(
1707 SystemObjectId::Object(name.qualifiers.clone().into()),
1708 AclMode::CREATE,
1709 role_id,
1710 )];
1711 match (data_source, in_cluster) {
1712 (_, Some(id)) => {
1713 privileges.push((SystemObjectId::Object(id.into()), AclMode::CREATE, role_id))
1714 }
1715 (DataSourceDesc::Ingestion(_), None) => {
1716 privileges.push((SystemObjectId::System, AclMode::CREATE_CLUSTER, role_id))
1717 }
1718 // Non-ingestion data-sources have meaningless cluster config's (for now...) and they need
1719 // to be ignored.
1720 // This feels very brittle, but there's not much we can do until the UNDEFINED cluster
1721 // config is removed.
1722 (_, None) => {}
1723 }
1724 privileges
1725}
1726
1727/// Generates all the privileges required to execute a read that includes the objects in `ids`.
1728///

Callers 1

Calls 2

ObjectClass · 0.50
pushMethod · 0.45

Tested by

no test coverage detected