Sha256: 50c032cc73053ada80ed7d47b155ce5dadd556c84608290079b698278db9a79f

Contents?: true

Size: 930 Bytes

Versions: 2

Compression:

Stored size: 930 Bytes

Contents

class MaitreD::API::SSO
  include Sliver::Action

  def self.guards
    [MaitreD::API::SSOGuard]
  end

  def call
    hash = listener.single_sign_on params['resource_id']

    hash[:session] ||= {}
    hash[:session].each { |key, value| session[key] = value }

    if environment['action_dispatch.cookies']
      environment['action_dispatch.cookies']['heroku-nav-data'] =
        params['nav-data']
    else
      Rack::Utils.set_cookie_header! response.headers, 'heroku-nav-data',
        :value => params['nav-data']
    end

    response.status    = 302
    response.body      = ["Redirect to #{hash[:uri]}"]
    response.headers ||= {}
    response.headers['Location'] = hash[:uri]
  end

  def configuration
    environment['maitre_d.configuration']
  end

  private

  def listener
    configuration.listener.new
  end

  def params
    request.params
  end

  def session
    environment['rack.session'] ||= {}
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maitre_d-0.7.1 lib/maitre_d/api/sso.rb
maitre_d-0.7.0 lib/maitre_d/api/sso.rb