diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/concerns/bizible_csp.rb | 15 | ||||
| -rw-r--r-- | app/controllers/projects/badges_controller.rb | 12 | ||||
| -rw-r--r-- | app/controllers/projects/settings/ci_cd_controller.rb | 2 | ||||
| -rw-r--r-- | app/controllers/registrations_controller.rb | 1 | ||||
| -rw-r--r-- | app/controllers/sessions_controller.rb | 1 | ||||
| -rw-r--r-- | app/graphql/mutations/concerns/mutations/can_mutate_spammable.rb | 51 | ||||
| -rw-r--r-- | app/graphql/mutations/snippets/create.rb | 1 | ||||
| -rw-r--r-- | app/graphql/mutations/snippets/update.rb | 1 | ||||
| -rw-r--r-- | app/helpers/bizible_helper.rb | 10 | ||||
| -rw-r--r-- | app/views/devise/confirmations/almost_there.haml | 1 | ||||
| -rw-r--r-- | app/views/devise/registrations/new.html.haml | 1 | ||||
| -rw-r--r-- | app/views/devise/sessions/new.html.haml | 1 | ||||
| -rw-r--r-- | app/views/layouts/_bizible.html.haml | 14 | ||||
| -rw-r--r-- | app/views/registrations/welcome/show.html.haml | 1 | ||||
| -rw-r--r-- | app/views/users/terms/index.html.haml | 1 |
15 files changed, 60 insertions, 53 deletions
diff --git a/app/controllers/concerns/bizible_csp.rb b/app/controllers/concerns/bizible_csp.rb new file mode 100644 index 00000000000..521f3127759 --- /dev/null +++ b/app/controllers/concerns/bizible_csp.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module BizibleCSP + extend ActiveSupport::Concern + + included do + content_security_policy do |policy| + next unless helpers.bizible_enabled? || policy.directives.present? + + default_script_src = policy.directives['script-src'] || policy.directives['default-src'] + script_src_values = Array.wrap(default_script_src) | ["'unsafe-eval'", 'https://cdn.bizible.com/scripts/bizible.js'] + policy.script_src(*script_src_values) + end + end +end diff --git a/app/controllers/projects/badges_controller.rb b/app/controllers/projects/badges_controller.rb index 8023e51b552..42bd87e1c01 100644 --- a/app/controllers/projects/badges_controller.rb +++ b/app/controllers/projects/badges_controller.rb @@ -8,6 +8,7 @@ class Projects::BadgesController < Projects::ApplicationController feature_category :continuous_integration, [:index, :pipeline] feature_category :code_testing, [:coverage] + feature_category :release_orchestration, [:release] def pipeline pipeline_status = Gitlab::Ci::Badge::Pipeline::Status @@ -34,6 +35,17 @@ class Projects::BadgesController < Projects::ApplicationController render_badge coverage_report end + def release + latest_release = Gitlab::Ci::Badge::Release::LatestRelease + .new(project, current_user, opts: { + key_text: params[:key_text], + key_width: params[:key_width], + order_by: params[:order_by] + }) + + render_badge latest_release + end + private def badge_layout diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index c71134e0547..dd2fb57f7ac 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -160,6 +160,8 @@ module Projects @badges.map! do |badge| badge.new(@project, @ref).metadata end + + @badges.append(Gitlab::Ci::Badge::Release::LatestRelease.new(@project, current_user).metadata) end def define_auto_devops_variables diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 7b688c0ccc2..057c451ace2 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -6,6 +6,7 @@ class RegistrationsController < Devise::RegistrationsController include RecaptchaHelper include InvisibleCaptchaOnSignup include OneTrustCSP + include BizibleCSP layout 'devise' diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 7e8e3ea8789..e907e291eeb 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -10,6 +10,7 @@ class SessionsController < Devise::SessionsController include KnownSignIn include Gitlab::Utils::StrongMemoize include OneTrustCSP + include BizibleCSP skip_before_action :check_two_factor_requirement, only: [:destroy] skip_before_action :check_password_expiration, only: [:destroy] diff --git a/app/graphql/mutations/concerns/mutations/can_mutate_spammable.rb b/app/graphql/mutations/concerns/mutations/can_mutate_spammable.rb deleted file mode 100644 index f1ae54aa014..00000000000 --- a/app/graphql/mutations/concerns/mutations/can_mutate_spammable.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -module Mutations - # This concern is deprecated and will be deleted in 14.6 - # - # Use the SpamProtection concern instead. - module CanMutateSpammable - extend ActiveSupport::Concern - - DEPRECATION_NOTICE = { - reason: 'Use spam protection with HTTP headers instead', - milestone: '13.11' - }.freeze - - included do - argument :captcha_response, GraphQL::Types::String, - required: false, - deprecated: DEPRECATION_NOTICE, - description: 'Valid CAPTCHA response value obtained by using the provided captchaSiteKey with a CAPTCHA API to present a challenge to be solved on the client. Required to resubmit if the previous operation returned "NeedsCaptchaResponse: true".' - - argument :spam_log_id, GraphQL::Types::Int, - required: false, - deprecated: DEPRECATION_NOTICE, - description: 'Spam log ID which must be passed along with a valid CAPTCHA response for the operation to be completed. Required to resubmit if the previous operation returned "NeedsCaptchaResponse: true".' - - field :spam, - GraphQL::Types::Boolean, - null: true, - deprecated: DEPRECATION_NOTICE, - description: 'Indicates whether the operation was detected as definite spam. There is no option to resubmit the request with a CAPTCHA response.' - - field :needs_captcha_response, - GraphQL::Types::Boolean, - null: true, - deprecated: DEPRECATION_NOTICE, - description: 'Indicates whether the operation was detected as possible spam and not completed. If CAPTCHA is enabled, the request must be resubmitted with a valid CAPTCHA response and spam_log_id included for the operation to be completed. Included only when an operation was not completed because "NeedsCaptchaResponse" is true.' - - field :spam_log_id, - GraphQL::Types::Int, - null: true, - deprecated: DEPRECATION_NOTICE, - description: 'Spam log ID which must be passed along with a valid CAPTCHA response for an operation to be completed. Included only when an operation was not completed because "NeedsCaptchaResponse" is true.' - - field :captcha_site_key, - GraphQL::Types::String, - null: true, - deprecated: DEPRECATION_NOTICE, - description: 'CAPTCHA site key which must be used to render a challenge for the user to solve to obtain a valid captchaResponse value. Included only when an operation was not completed because "NeedsCaptchaResponse" is true.' - end - end -end diff --git a/app/graphql/mutations/snippets/create.rb b/app/graphql/mutations/snippets/create.rb index 850e05b52c1..2921a77b86d 100644 --- a/app/graphql/mutations/snippets/create.rb +++ b/app/graphql/mutations/snippets/create.rb @@ -6,7 +6,6 @@ module Mutations graphql_name 'CreateSnippet' include ServiceCompatibility - include CanMutateSpammable include Mutations::SpamProtection authorize :create_snippet diff --git a/app/graphql/mutations/snippets/update.rb b/app/graphql/mutations/snippets/update.rb index aa0fa5d5330..2a2941c5328 100644 --- a/app/graphql/mutations/snippets/update.rb +++ b/app/graphql/mutations/snippets/update.rb @@ -6,7 +6,6 @@ module Mutations graphql_name 'UpdateSnippet' include ServiceCompatibility - include CanMutateSpammable include Mutations::SpamProtection argument :id, ::Types::GlobalIDType[::Snippet], diff --git a/app/helpers/bizible_helper.rb b/app/helpers/bizible_helper.rb new file mode 100644 index 00000000000..970cc6558da --- /dev/null +++ b/app/helpers/bizible_helper.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module BizibleHelper + def bizible_enabled? + Feature.enabled?(:ecomm_instrumentation, type: :ops) && + Gitlab.config.extra.has_key?('bizible') && + Gitlab.config.extra.bizible.present? && + Gitlab.config.extra.bizible == true + end +end diff --git a/app/views/devise/confirmations/almost_there.haml b/app/views/devise/confirmations/almost_there.haml index 1d46a43e5bd..ef19ac33a15 100644 --- a/app/views/devise/confirmations/almost_there.haml +++ b/app/views/devise/confirmations/almost_there.haml @@ -4,6 +4,7 @@ - content_for :page_specific_javascripts do = render "layouts/google_tag_manager_head" = render "layouts/one_trust" + = render "layouts/bizible" = render "layouts/google_tag_manager_body" .well-confirmation.gl-text-center.gl-mb-6 diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 87108c8ea78..60c3df718a1 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -3,6 +3,7 @@ - content_for :page_specific_javascripts do = render "layouts/google_tag_manager_head" = render "layouts/one_trust" + = render "layouts/bizible" = render "layouts/google_tag_manager_body" .signup-page diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 175b45dbbfa..c669f3efec6 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,6 +1,7 @@ - page_title _("Sign in") - content_for :page_specific_javascripts do = render "layouts/one_trust" + = render "layouts/bizible" #signin-container - if any_form_based_providers_enabled? diff --git a/app/views/layouts/_bizible.html.haml b/app/views/layouts/_bizible.html.haml new file mode 100644 index 00000000000..a2b28c138e5 --- /dev/null +++ b/app/views/layouts/_bizible.html.haml @@ -0,0 +1,14 @@ +- if bizible_enabled? + <!-- Bizible --> + = javascript_include_tag "https://cdn.bizible.com/scripts/bizible.js" + = javascript_tag nonce: content_security_policy_nonce do + :plain + const bizibleScript = document.createElement('script'); + bizibleScript.src = 'https://cdn.bizible.com/scripts/bizible.js'; + bizibleScript.nonce = '#{content_security_policy_nonce}' + bizibleScript.charset = 'UTF-8'; + bizibleScript.defer = true; + document.head.appendChild(bizibleScript); + + function OptanonWrapper() { } + diff --git a/app/views/registrations/welcome/show.html.haml b/app/views/registrations/welcome/show.html.haml index ca2f225a2d8..44dffdbf70a 100644 --- a/app/views/registrations/welcome/show.html.haml +++ b/app/views/registrations/welcome/show.html.haml @@ -5,6 +5,7 @@ - content_for :page_specific_javascripts do = render "layouts/google_tag_manager_head" = render "layouts/one_trust" + = render "layouts/bizible" = render "layouts/google_tag_manager_body" .row.gl-flex-grow-1 diff --git a/app/views/users/terms/index.html.haml b/app/views/users/terms/index.html.haml index c461250fc9b..afe257c2fc2 100644 --- a/app/views/users/terms/index.html.haml +++ b/app/views/users/terms/index.html.haml @@ -1,6 +1,7 @@ - content_for :page_specific_javascripts do = render "layouts/google_tag_manager_head" = render "layouts/one_trust" + = render "layouts/bizible" = render "layouts/google_tag_manager_body" #js-terms-of-service{ data: { terms_data: terms_data(@term, @redirect) } } |
