diff --git a/app/models/namespace.rb b/app/models/namespace.rb index 2cefcb8fc7da9057267a6e03379e06887b093a15..162cd600734c44fd54d6b6c503a45bed4350594b 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -801,11 +801,9 @@ def allow_runner_registration_token? end def pages_access_control_trie(namespaces = self_and_descendants) - strong_memoize_with(:pages_access_control_trie, namespaces) do - traversal_ids = namespaces.joins(:namespace_settings).where(namespace_settings: { force_pages_access_control: true }).map(&:traversal_ids) + traversal_ids = namespaces.joins(:namespace_settings).where(namespace_settings: { force_pages_access_control: true }).map(&:traversal_ids) - Namespaces::Traversal::TrieNode.build(traversal_ids) - end + Namespaces::Traversal::TrieNode.build(traversal_ids) end def pages_access_control_forced_by_self_or_ancestor? diff --git a/app/models/pages/virtual_domain.rb b/app/models/pages/virtual_domain.rb index b6f259dba7932db5d8a7e1e4c5443bd9e50fd09b..f9d751e71d92d2b58141328edb451457ad2b82b9 100644 --- a/app/models/pages/virtual_domain.rb +++ b/app/models/pages/virtual_domain.rb @@ -2,6 +2,8 @@ module Pages class VirtualDomain + include Gitlab::Utils::StrongMemoize + def initialize(projects:, trim_prefix: nil, domain: nil, namespace: nil) @projects = projects @trim_prefix = trim_prefix @@ -34,8 +36,13 @@ def access_control_for(project) return true if ::Gitlab::Pages.access_control_is_forced? return true if project.project_feature&.private_pages? - @namespace&.pages_access_control_trie&.covered?(project.namespace.traversal_ids) + pages_access_control_trie&.covered?(project.namespace.traversal_ids) + end + + def pages_access_control_trie + @namespace&.pages_access_control_trie end + strong_memoize_attr :pages_access_control_trie def lookup_paths_for(project, root_namespace_id) deployments_for(project).map do |deployment|