Sha256: 97bbce4fa630809590abf5ef2d2da3ba7a39ef28c8a2e446482cb3656972788d

Contents?: true

Size: 1.85 KB

Versions: 23

Compression:

Stored size: 1.85 KB

Contents

require 'rhoconnect/middleware/helpers'

module Rhoconnect
  module Condition
    module SourceRequired
      def self.extended(base)
        base.include_source_required_condition
      end

      def include_source_required_condition
        set(:source_required) do |value|
          condition do
            if value
              catch_all do
                source = nil
                user = current_user
                # TODO - this should be removed when old routes are removed
                if params["cud"]
                  cud_source_name = JSON.parse(params["cud"])["source_name"]
                  params.merge!({:source_name => cud_source_name}) if cud_source_name
                end
                # resource name is the source
                if params[:source_name] and user
                  source = Source.load(params[:source_name],
                    {:user_id => user.login,:app_id => APP_NAME})

                  # if source does not exist create one for dynamic adapter
                  unless source
                    sconfig = Rhoconnect.source_config(params[:source_name])
                    source = Source.create(sconfig.merge!({:name => params[:source_name]}),{:user_id => user.login, :app_id => APP_NAME})
                    current_app.sources << source.name
                  end
                else
                  Rhoconnect.log "ERROR: Can't load source, no source_name provided.\n"
                  raise ArgumentError.new(UNKNOWN_SOURCE)
                end
                #puts "loaded source: #{source.inspect}"
                env[CURRENT_SOURCE] = source
                # by default - all routes should have an access to the model
                # if the route require source
                @model = Rhoconnect::Model::Base.create(source)
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
rhoconnect-7.6.0 lib/rhoconnect/condition/source_required.rb
rhoconnect-7.5.1 lib/rhoconnect/condition/source_required.rb
rhoconnect-7.4.1 lib/rhoconnect/condition/source_required.rb
rhoconnect-7.1.17 lib/rhoconnect/condition/source_required.rb
rhoconnect-6.2.0 lib/rhoconnect/condition/source_required.rb
rhoconnect-6.0.11 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.18 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.17 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.15 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.0.22 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.2 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.0.7 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.0.3 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.5.0 lib/rhoconnect/condition/source_required.rb
rhoconnect-5.1.1 lib/rhoconnect/condition/source_required.rb
rhoconnect-4.0.4 lib/rhoconnect/condition/source_required.rb
rhoconnect-4.0.3 lib/rhoconnect/condition/source_required.rb
rhoconnect-4.0.2 lib/rhoconnect/condition/source_required.rb
rhoconnect-4.0.1 lib/rhoconnect/condition/source_required.rb
rhoconnect-4.0.0 lib/rhoconnect/condition/source_required.rb