in core/server/src/streaming/users/permissioner_rules/topics.rs [125:148]
fn manage_topic(&self, user_id: u32, stream_id: u32, topic_id: u32) -> Result<(), IggyError> {
if let Some(global_permissions) = self.users_permissions.get(&user_id) {
if global_permissions.manage_streams || global_permissions.manage_topics {
return Ok(());
}
}
if let Some(stream_permissions) = self.users_streams_permissions.get(&(user_id, stream_id))
{
if stream_permissions.manage_topics {
return Ok(());
}
if let Some(topic_permissions) =
stream_permissions.topics.as_ref().unwrap().get(&topic_id)
{
if topic_permissions.manage_topic {
return Ok(());
}
}
}
Err(IggyError::Unauthorized)
}