# File lib/omniauth/strategies/saml.rb, line 97
      def other_phase
        if current_path.start_with?(request_path)
          @env['omniauth.strategy'] ||= self
          setup_phase
          settings = OneLogin::RubySaml::Settings.new(options)

          if on_subpath?(:metadata)
            # omniauth does not set the strategy on the other_phase
            response = OneLogin::RubySaml::Metadata.new

            if options.request_attributes.length > 0
              settings.attribute_consuming_service.service_name options.attribute_service_name
              settings.issuer = options.issuer

              options.request_attributes.each do |attribute|
                settings.attribute_consuming_service.add_attribute attribute
              end
            end

            Rack::Response.new(response.generate(settings), 200, { "Content-Type" => "application/xml" }).finish
          elsif on_subpath?(:slo)
            if request.params["SAMLResponse"]
              handle_logout_response(request.params["SAMLResponse"], settings)
            elsif request.params["SAMLRequest"]
              handle_logout_request(request.params["SAMLRequest"], settings)
            else
              raise OmniAuth::Strategies::SAML::ValidationError.new("SAML logout response/request missing")
            end
          elsif on_subpath?(:spslo)
            if options.idp_slo_target_url
              redirect(generate_logout_request(settings))
            else
              Rack::Response.new("Not Implemented", 501, { "Content-Type" => "text/html" }).finish
            end
          else
            call_app!
          end
        else
          call_app!
        end
      end