hancock-client 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -27,24 +27,25 @@ Application
27
27
  The goal is to make it simple to write sso enabled apps.
28
28
 
29
29
  require 'rubygems'
30
- require 'sinatra'
31
- require 'sinatra/base'
32
30
  require 'hancock-client'
31
+ require 'logger'
33
32
 
34
- run Hancock::Client
35
- class ConsumerApp < Hancock::Client::Default
36
- set :sso_url, 'http://hancock.atmos.org/sso'
33
+ # OpenID writes to STDERR by default. This is closed under passenger so
34
+ # to make this reliable you should have openid write failures somewhere.
35
+ OpenID::Util.logger = Logger.new(Dir.tmpdir + "/openid.log")
37
36
 
38
- set :views, 'views'
39
- set :public, 'public'
40
- set :environment, :production
37
+ class HancockClientDemo < Sinatra::Default
38
+ set :views, File.dirname(__FILE__) + '/views'
39
+ set :public, File.dirname(__FILE__) + '/public'
40
+ use Hancock::Client::Default do |sso|
41
+ sso.sso_url = 'http://hancock.atmos.org/sso'
42
+ end
41
43
 
42
44
  get '/' do
43
- redirect '/login' unless session[:user_id]
44
- haml(%Q{%h3= "#{session[:first_name]} #{session[:last_name]} - #{session[:email]}"})
45
+ haml(%Q{%h3= "#{session[:first_name]} #{session[:last_name]} - #{session[:email]}"})
45
46
  end
46
47
  end
47
48
 
48
- run ConsumerApp
49
+ run HancockClientDemo
49
50
 
50
51
  [sinatra]: http://www.sinatrarb.com
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'spec/rake/spectask'
6
6
  require 'cucumber/rake/task'
7
7
 
8
8
  GEM = "hancock-client"
9
- GEM_VERSION = "0.0.4"
9
+ GEM_VERSION = "0.0.5"
10
10
  AUTHOR = "Corey Donohoe"
11
11
  EMAIL = ['atmos@atmos.org', 'tim@spork.in']
12
12
  HOMEPAGE = "http://github.com/atmos/hancock-client"
@@ -25,8 +25,8 @@ spec = Gem::Specification.new do |s|
25
25
  s.homepage = HOMEPAGE
26
26
 
27
27
  # Uncomment this to add a dependency
28
- s.add_dependency "sinatra", ">=0.9.1.1"
29
- s.add_dependency "ruby-openid", ">=2.1.2"
28
+ s.add_dependency "sinatra", ">=0.9.1.3"
29
+ s.add_dependency "ruby-openid", ">=2.1.6"
30
30
 
31
31
  s.require_path = 'lib'
32
32
  s.autorequire = GEM
@@ -1,10 +1,8 @@
1
- gem 'sinatra', '~>0.9.1'
1
+ gem 'sinatra', '~>0.9.1.3'
2
2
  require 'rack'
3
3
  require 'sinatra/base'
4
- gem 'dm-core', '~>0.9.10'
5
- require 'dm-core'
6
4
 
7
- gem 'ruby-openid', '>=2.1.2'
5
+ gem 'ruby-openid', '>=2.1.6'
8
6
  require 'openid'
9
7
 
10
8
  gem 'haml', '~>2.0.9'
@@ -14,11 +12,26 @@ require File.dirname(__FILE__)+'/sinatra/hancock/sso'
14
12
 
15
13
  module Hancock
16
14
  module Client
17
- class Default < ::Sinatra::Default
15
+ class Default < ::Sinatra::Base
18
16
  enable :sessions
17
+ disable :raise_errors
18
+
19
19
  set :sso_url, nil
20
20
 
21
+ def sso_url=(url)
22
+ options.sso_url = url
23
+ end
24
+
21
25
  register Sinatra::Hancock::SSO
26
+
27
+ get '*' do
28
+ if session[:user_id]
29
+ forward
30
+ else
31
+ session[:return_to] = request.path_info
32
+ redirect "#{options.sso_url}/login?return_to=#{absolute_url('/sso/login')}"
33
+ end
34
+ end
22
35
  end
23
36
  end
24
37
  end
@@ -87,7 +87,7 @@ module Rack
87
87
  return redirect_to(url)
88
88
  rescue ::OpenID::OpenIDError, Timeout::Error => e
89
89
  env[RESPONSE] = MissingResponse.new
90
- return self.call(env)
90
+ return @app.call(env)
91
91
  end
92
92
  end
93
93
 
@@ -19,12 +19,11 @@ module Sinatra
19
19
  def self.registered(app)
20
20
  app.use(Rack::OpenID)
21
21
  app.helpers Hancock::SSO::Helpers
22
- app.enable :sessions
23
- app.disable :raise_errors
24
22
  app.before do
25
- unless request.path_info == '/sso/login'
26
- throw(:halt, [302, {'Location' => '/sso/login'}, '']) unless session[:user_id]
27
- end
23
+ next if request.path_info == '/sso/login'
24
+ next if request.path_info == '/sso/logout'
25
+ next if session[:user_id]
26
+ throw(:halt, [302, {'Location' => '/sso/login'}, ''])
28
27
  end
29
28
 
30
29
  app.get '/sso/login' do
@@ -63,5 +62,4 @@ module Sinatra
63
62
  end
64
63
  end
65
64
  end
66
- register Hancock::SSO
67
65
  end
@@ -1,10 +1,14 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe Sinatra::Hancock::SSO do
4
+
4
5
  it "should protect the root url" do
5
6
  get '/'
6
7
  last_response.headers['Location'].should eql('/sso/login')
8
+ get last_response.headers['Location']
9
+ last_response.headers['Location'].should eql('http://localhost:20000/login?return_to=http://example.org/sso/login')
7
10
  end
11
+
8
12
  it "should greet the user when authenticated" do
9
13
  pending
10
14
  get '/'
@@ -15,15 +15,18 @@ require 'rack/test'
15
15
 
16
16
  require 'hancock-client'
17
17
 
18
- require File.dirname(__FILE__)+'/client'
19
-
20
18
  Spec::Runner.configure do |config|
21
19
  config.include(Rack::Test::Methods)
22
20
  config.include(Webrat::Methods)
23
21
  config.include(Webrat::Matchers)
24
22
  def app
25
23
  @app = Rack::Builder.new do
26
- run Hancock::Spec::Client
24
+ use Hancock::Client::Default do |sso|
25
+ sso.sso_url = 'http://localhost:20000'
26
+ end
27
+ map '/' do
28
+ run Proc.new {|env| [200, {'Content-Type' => 'text/html', 'Content-Length' => '5'}, ['HELLO']] }
29
+ end
27
30
  end
28
31
  end
29
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hancock-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Donohoe
@@ -9,7 +9,7 @@ autorequire: hancock-client
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-23 00:00:00 -06:00
12
+ date: 2009-04-29 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.1.1
23
+ version: 0.9.1.3
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ruby-openid
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.2
33
+ version: 2.1.6
34
34
  version:
35
35
  description: Hancock SSO rack middleware written in sinatra
36
36
  email:
@@ -52,7 +52,6 @@ files:
52
52
  - lib/sinatra
53
53
  - lib/sinatra/hancock
54
54
  - lib/sinatra/hancock/sso.rb
55
- - spec/client.rb
56
55
  - spec/features
57
56
  - spec/features/signing_up.feature
58
57
  - spec/features/step_definitions
@@ -1,24 +0,0 @@
1
- require 'sinatra/base'
2
-
3
- module Hancock
4
- module Spec
5
- class Client < ::Hancock::Client::Default
6
- set :environment, :development
7
- get '/' do
8
- haml(<<-HAML
9
- %table
10
- %thead
11
- %tr
12
- %td Key
13
- %td Value
14
- %tbody
15
- - session.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
16
- %tr
17
- %td= key
18
- %td= session[key]
19
- HAML
20
- )
21
- end
22
- end
23
- end
24
- end