diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
commit | d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb (patch) | |
tree | 2341ef426af70ad1e289c38036737e04b0aa5007 /app/controllers/concerns | |
parent | d6e514dd13db8947884cd58fe2a9c2a063400a9b (diff) |
Add latest changes from gitlab-org/gitlab@14-4-stable-eev14.4.0-rc42
Diffstat (limited to 'app/controllers/concerns')
-rw-r--r-- | app/controllers/concerns/group_tree.rb | 9 | ||||
-rw-r--r-- | app/controllers/concerns/issuable_actions.rb | 6 | ||||
-rw-r--r-- | app/controllers/concerns/notes_actions.rb | 2 | ||||
-rw-r--r-- | app/controllers/concerns/one_trust_csp.rb | 19 | ||||
-rw-r--r-- | app/controllers/concerns/registry/connection_errors_handler.rb | 38 |
5 files changed, 69 insertions, 5 deletions
diff --git a/app/controllers/concerns/group_tree.rb b/app/controllers/concerns/group_tree.rb index d076c62c707..35c1f358a77 100644 --- a/app/controllers/concerns/group_tree.rb +++ b/app/controllers/concerns/group_tree.rb @@ -38,8 +38,13 @@ module GroupTree # # Pagination needs to be applied before loading the ancestors to # make sure ancestors are not cut off by pagination. - Gitlab::ObjectHierarchy.new(Group.where(id: filtered_groups.select(:id))) - .base_and_ancestors + filtered_groups_relation = Group.where(id: filtered_groups.select(:id)) + + if Feature.enabled?(:linear_group_tree_ancestor_scopes, current_user, default_enabled: :yaml) + filtered_groups_relation.self_and_ancestors + else + Gitlab::ObjectHierarchy.new(filtered_groups_relation).base_and_ancestors + end end # rubocop: enable CodeReuse/ActiveRecord end diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb index 7ee680db7f9..e1e662a1968 100644 --- a/app/controllers/concerns/issuable_actions.rb +++ b/app/controllers/concerns/issuable_actions.rb @@ -158,8 +158,10 @@ module IssuableActions discussions = Discussion.build_collection(notes, issuable) - if issuable.is_a?(MergeRequest) && Feature.enabled?(:merge_request_discussion_cache, issuable.target_project, default_enabled: :yaml) - render_cached(discussions, with: discussion_serializer, context: self) + if issuable.is_a?(MergeRequest) + cache_context = [current_user&.cache_key, project.team.human_max_access(current_user&.id)].join(':') + + render_cached(discussions, with: discussion_serializer, cache_context: -> (_) { cache_context }, context: self) else render json: discussion_serializer.represent(discussions, context: self) end diff --git a/app/controllers/concerns/notes_actions.rb b/app/controllers/concerns/notes_actions.rb index 2d8168af2e3..c2ee735a2b5 100644 --- a/app/controllers/concerns/notes_actions.rb +++ b/app/controllers/concerns/notes_actions.rb @@ -62,7 +62,7 @@ module NotesActions json.merge!(note_json(@note)) end - if @note.errors.present? && @note.errors.keys != [:commands_only] + if @note.errors.present? && @note.errors.attribute_names != [:commands_only] render json: json, status: :unprocessable_entity else render json: json diff --git a/app/controllers/concerns/one_trust_csp.rb b/app/controllers/concerns/one_trust_csp.rb new file mode 100644 index 00000000000..4e98ec586ca --- /dev/null +++ b/app/controllers/concerns/one_trust_csp.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module OneTrustCSP + extend ActiveSupport::Concern + + included do + content_security_policy do |policy| + next if policy.directives.blank? + + default_script_src = policy.directives['script-src'] || policy.directives['default-src'] + script_src_values = Array.wrap(default_script_src) | ["'unsafe-eval'", 'https://cdn.cookielaw.org https://*.onetrust.com'] + policy.script_src(*script_src_values) + + default_connect_src = policy.directives['connect-src'] || policy.directives['default-src'] + connect_src_values = Array.wrap(default_connect_src) | ['https://cdn.cookielaw.org'] + policy.connect_src(*connect_src_values) + end + end +end diff --git a/app/controllers/concerns/registry/connection_errors_handler.rb b/app/controllers/concerns/registry/connection_errors_handler.rb new file mode 100644 index 00000000000..2b24f3b5b31 --- /dev/null +++ b/app/controllers/concerns/registry/connection_errors_handler.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Registry + module ConnectionErrorsHandler + extend ActiveSupport::Concern + + included do + rescue_from ContainerRegistry::Path::InvalidRegistryPathError, with: :invalid_registry_path + rescue_from Faraday::Error, with: :connection_error + + before_action :ping_container_registry + end + + private + + # rubocop:disable Gitlab/ModuleWithInstanceVariables + # These instance variables are only read by a view helper to pass + # them to the frontend + # See app/views/projects/registry/repositories/index.html.haml + # app/views/groups/registry/repositories/index.html.haml + def invalid_registry_path + @invalid_path_error = true + + render :index + end + + def connection_error + @connection_error = true + + render :index + end + # rubocop:enable Gitlab/ModuleWithInstanceVariables + + def ping_container_registry + ContainerRegistry::Client.registry_info + end + end +end |