Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-10-03 15:08:27 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-10-03 15:08:27 +0300
commit077b0a79d52753d020280ed8d58f97f8207b42de (patch)
tree79c6a7d3bbc41915acfff72e4620e7c4490528bf /lib/gitlab/pages
parent10d4625ed3b73f73bc67bf7d35347dcd1912cf7b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/pages')
-rw-r--r--lib/gitlab/pages/cache_control.rb29
1 files changed, 26 insertions, 3 deletions
diff --git a/lib/gitlab/pages/cache_control.rb b/lib/gitlab/pages/cache_control.rb
index 991a1297d03..84db6d9e343 100644
--- a/lib/gitlab/pages/cache_control.rb
+++ b/lib/gitlab/pages/cache_control.rb
@@ -3,9 +3,9 @@
module Gitlab
module Pages
class CacheControl
- CACHE_KEY_FORMAT = 'pages_domain_for_%{type}_%{id}'
+ include Gitlab::Utils::StrongMemoize
- attr_reader :cache_key
+ CACHE_KEY_FORMAT = 'pages_domain_for_%{type}_%{id}_%{settings}'
class << self
def for_project(project_id)
@@ -20,12 +20,35 @@ module Gitlab
def initialize(type:, id:)
raise(ArgumentError, "type must be :namespace or :project") unless %i[namespace project].include?(type)
- @cache_key = CACHE_KEY_FORMAT % { type: type, id: id }
+ @type = type
+ @id = id
+ end
+
+ def cache_key
+ strong_memoize(:cache_key) do
+ CACHE_KEY_FORMAT % {
+ type: @type,
+ id: @id,
+ settings: settings
+ }
+ end
end
def clear_cache
Rails.cache.delete(cache_key)
end
+
+ private
+
+ def settings
+ values = ::Gitlab.config.pages.dup
+
+ values['app_settings'] = ::Gitlab::CurrentSettings.attributes.slice(
+ 'force_pages_access_control'
+ )
+
+ ::Digest::SHA256.hexdigest(values.inspect)
+ end
end
end
end