Refactor topic_checking to simplify booleans

pull/113/head
Pierre-Luc Bertrand 2022-04-15 18:33:33 -04:00 zatwierdzone przez Florian Ludwig
rodzic a3f982c4d2
commit fcba3b6132
1 zmienionych plików z 29 dodań i 29 usunięć

Wyświetl plik

@ -67,35 +67,35 @@ class TopicAccessControlListPlugin(BaseTopicPlugin):
async def topic_filtering(self, *args, **kwargs):
filter_result = super().topic_filtering(*args, **kwargs)
if filter_result:
session = kwargs.get("session", None)
req_topic = kwargs.get("topic", None)
action = kwargs.get("action", None)
if not filter_result:
return False
# hbmqtt and older amqtt do not support publish filtering
if action == Action.publish and "publish-acl" not in self.topic_config:
# maintain backward compatibility, assume permitted
# hbmqtt and older amqtt do not support publish filtering
action = kwargs.get("action", None)
if action == Action.publish and "publish-acl" not in self.topic_config:
# maintain backward compatibility, assume permitted
return True
req_topic = kwargs.get("topic", None)
if not req_topic:
return False
session = kwargs.get("session", None)
username = session.username
if username is None:
username = "anonymous"
if action == Action.publish:
acl = self.topic_config["publish-acl"]
elif action == Action.subscribe:
acl = self.topic_config["acl"]
allowed_topics = acl.get(username, None)
if not allowed_topics:
return False
for allowed_topic in allowed_topics:
if self.topic_ac(req_topic, allowed_topic):
return True
if req_topic:
username = session.username
if username is None:
username = "anonymous"
if action == Action.publish:
acl = self.topic_config["publish-acl"]
elif action == Action.subscribe:
acl = self.topic_config["acl"]
allowed_topics = acl.get(username, None)
if allowed_topics:
for allowed_topic in allowed_topics:
if self.topic_ac(req_topic, allowed_topic):
return True
return False
else:
return False
else:
return False
else:
return False
return False