project_unauthorized.rb 669 Bytes
Newer Older
1 2 3
# frozen_string_literal: true

module ProjectUnauthorized
4 5 6 7 8 9
  module ControllerActions
    def self.on_routable_not_found
      lambda do |routable|
        return unless routable.is_a?(Project)

        label = routable.external_authorization_classification_label
10 11 12 13 14 15 16
        rejection_reason = nil

        unless ::Gitlab::ExternalAuthorization.access_allowed?(current_user, label)
          rejection_reason = ::Gitlab::ExternalAuthorization.rejection_reason(current_user, label)
          rejection_reason ||= _('External authorization denied access to this project')
        end

17
        access_denied!(rejection_reason) if rejection_reason
18 19
      end
    end
20 21
  end
end