From a2f9cf99ebf8ce7abd54ca0ab0970efe06454798 Mon Sep 17 00:00:00 2001 From: usmannasir Date: Sun, 14 Dec 2025 17:59:19 +0400 Subject: [PATCH] Fix ACL child domain permission issues for non-admin users - Fix checkOwnership() to return explicit 0 instead of None when checking child domain ownership This resolves permission failures for non-admin ACL users trying to manage child domains - Improve fetchChildDomainsMain() with more robust child domain filtering Changed from .filter(alais=0) to .all() with explicit check to prevent silent failures - Add error logging with traceback to fetchChildDomainsMain() for better debugging These changes allow non-admin users with proper ACL permissions to view and manage child domains for websites they own. --- plogical/acl.py | 2 ++ websiteFunctions/website.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/plogical/acl.py b/plogical/acl.py index 5fe1d1d16..f7d797670 100644 --- a/plogical/acl.py +++ b/plogical/acl.py @@ -761,6 +761,8 @@ class ACLManager: else: if childDomain.master.admin.owner == admin.pk: return 1 + else: + return 0 except: domainName = Websites.objects.get(domain=domain) diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 5dd390506..6d11ecd3f 100644 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -2519,11 +2519,12 @@ Require valid-user childDomains = [] for web in websites: - for child in web.childdomains_set.filter(alais=0): - if child.domain == f'mail.{web.domain}': - pass - else: - childDomains.append(child) + for child in web.childdomains_set.all(): + if child.alais == 0: + if child.domain == f'mail.{web.domain}': + pass + else: + childDomains.append(child) pagination = self.getPagination(len(childDomains), recordsToShow) json_data = self.findChildsListJson(childDomains[finalPageNumber:endPageNumber]) @@ -2533,6 +2534,8 @@ Require valid-user final_json = json.dumps(final_dic) return HttpResponse(final_json) except BaseException as msg: + import traceback + logging.CyberCPLogFileWriter.writeToFile(f"fetchChildDomainsMain error for userID {userID}: {str(msg)}\n{traceback.format_exc()}") dic = {'status': 1, 'listWebSiteStatus': 0, 'error_message': str(msg)} json_data = json.dumps(dic) return HttpResponse(json_data)