Sha256: 408292a3fc327ab2f3dff14636c5d0805bd1df6355e7c4fecaa1a235bdc4c392

Contents?: true

Size: 1022 Bytes

Versions: 27

Compression:

Stored size: 1022 Bytes

Contents

module RailsConnector

class WorkspaceSelectionMiddleware
  CURRENT_WORKSPACE_SESSION_KEY = '_rc-ws'
  CURRENT_WORKSPACE_PARAMS_KEY = '_rc-ws'

  def initialize(app)
    @app = app
  end

  def call(env)
    handle_workspace_parameter(env)
    workspace_id = session(env)[CURRENT_WORKSPACE_SESSION_KEY]
    Workspace.current = proc do
      if workspace_id
        begin
          Workspace.find(workspace_id)
        rescue RailsConnector::ResourceNotFound
          Workspace.default
        end
      else
        Workspace.default
      end
    end
    @app.call(env)
  end

  private

  def handle_workspace_parameter(env)
    workspace_id = Rack::Request.new(env).params[CURRENT_WORKSPACE_PARAMS_KEY]
    return unless workspace_id
    if workspace_id.present?
      session(env)[CURRENT_WORKSPACE_SESSION_KEY] = workspace_id
    else
      session(env).delete(CURRENT_WORKSPACE_SESSION_KEY)
    end
  end

  def session(env)
    env[Rack::Session::Abstract::ENV_SESSION_KEY]
  end
end

end # module RailsConnector

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
infopark_cloud_connector-7.0.2 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-7.0.1 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-7.0.0 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.5 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.4 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.3.1.36404185 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.2.1.125136549 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.1.3.22208381 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.9.0.3.197272233 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.174.51542603 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.115.227021242 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.73.75172665 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.2.153416031 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.67.110847540 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.3.1.23895778 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.2.36.82613853 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.2.7.128454143 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.1.26.236500544 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.1 lib/rails_connector/workspace_selection_middleware.rb
infopark_cloud_connector-6.8.0.539.93842523 lib/rails_connector/workspace_selection_middleware.rb