fn manage_topic()

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)
    }