ruby-openid 1.1.3 → 1.1.4

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.
Files changed (33) hide show
  1. data/COPYING +10 -18
  2. data/LICENSE +202 -0
  3. data/README +3 -4
  4. data/examples/README +4 -4
  5. data/examples/active_record_openid_store/README +53 -0
  6. data/examples/active_record_openid_store/XXX_add_open_id_store_to_db.rb +28 -0
  7. data/examples/active_record_openid_store/init.rb +8 -0
  8. data/examples/active_record_openid_store/lib/association.rb +7 -0
  9. data/examples/active_record_openid_store/lib/nonce.rb +3 -0
  10. data/examples/active_record_openid_store/lib/open_id_setting.rb +4 -0
  11. data/examples/active_record_openid_store/lib/openid_ar_store.rb +82 -0
  12. data/examples/active_record_openid_store/test/store_test.rb +182 -0
  13. data/examples/rails_openid_login_generator/gemspec +2 -2
  14. data/examples/rails_openid_login_generator/templates/README +5 -5
  15. data/examples/rails_openid_login_generator/templates/controller.rb +11 -9
  16. data/examples/rails_openid_login_generator/templates/openid_login_system.rb +5 -5
  17. data/examples/rails_server/config/environment.rb +2 -1
  18. data/lib/openid/consumer.rb +1 -1
  19. data/lib/openid/util.rb +1 -0
  20. metadata +16 -19
  21. data/TODO +0 -9
  22. data/examples/rails_active_record_store/README +0 -59
  23. data/examples/rails_active_record_store/XX_add_openidstore.rb +0 -30
  24. data/examples/rails_active_record_store/models/openid_association.rb +0 -17
  25. data/examples/rails_active_record_store/models/openid_nonce.rb +0 -3
  26. data/examples/rails_active_record_store/models/openid_setting.rb +0 -2
  27. data/examples/rails_active_record_store/openid_helper.rb +0 -97
  28. data/examples/rails_active_record_store/openidstore_test.rb +0 -15
  29. data/examples/rails_active_record_store/schema.mysql.sql +0 -22
  30. data/examples/rails_active_record_store/schema.postgresql.sql +0 -21
  31. data/examples/rails_active_record_store/schema.sqlite.sql +0 -21
  32. data/examples/rails_openid_login_generator/templates/controller.rb~ +0 -111
  33. data/test/runtests.rb~ +0 -21
@@ -1,30 +0,0 @@
1
- class AddOpenidstore < ActiveRecord::Migration
2
- def self.up
3
- create_table :openid_settings do |t|
4
- t.column :setting, :string
5
- t.column :value, :binary
6
- end
7
-
8
- create_table :openid_associations do |t|
9
- # server_url is blob, because URLs could be longer
10
- # than db can handle as a string
11
- t.column :server_url, :binary
12
- t.column :handle, :string
13
- t.column :secret, :binary
14
- t.column :issued, :integer
15
- t.column :lifetime, :integer
16
- t.column :assoc_type, :string
17
- end
18
-
19
- create_table :openid_nonces do |t|
20
- t.column :nonce, :string
21
- t.column :created, :integer
22
- end
23
- end
24
-
25
- def self.down
26
- drop_table :openid_settings
27
- drop_table :openid_associations
28
- drop_table :openid_nonces
29
- end
30
- end
@@ -1,17 +0,0 @@
1
- begin
2
- require "rubygems"
3
- require_gem "ruby-openid", ">= 1.0"
4
- rescue LoadError
5
- require "openid"
6
- end
7
-
8
- class OpenidAssociation < ActiveRecord::Base
9
-
10
- def from_record
11
- OpenID::Association.new(handle,
12
- secret,
13
- issued,
14
- lifetime,
15
- assoc_type)
16
- end
17
- end
@@ -1,3 +0,0 @@
1
- class OpenidNonce < ActiveRecord::Base
2
- end
3
-
@@ -1,2 +0,0 @@
1
- class OpenidSetting < ActiveRecord::Base
2
- end
@@ -1,97 +0,0 @@
1
- # load the openid library
2
- begin
3
- require "rubygems"
4
- require_gem "ruby-openid", ">= 1.0"
5
- rescue LoadError
6
- require "openid"
7
- end
8
-
9
- module OpenidHelper
10
-
11
- def get_auth_key
12
- setting = OpenidSetting.find :first, :conditions => "setting = 'auth_key'"
13
- if setting.nil?
14
- auth_key = OpenID::Util.random_string(20)
15
- setting = OpenidSetting.create :setting => 'auth_key', :value => auth_key
16
- end
17
- setting.value
18
- end
19
-
20
- def store_association(server_url, assoc)
21
- remove_association(server_url, assoc.handle)
22
- OpenidAssociation.create(:server_url => server_url,
23
- :handle => assoc.handle,
24
- :secret => assoc.secret,
25
- :issued => assoc.issued,
26
- :lifetime => assoc.lifetime,
27
- :assoc_type => assoc.assoc_type)
28
- end
29
-
30
- def get_association(server_url, handle=nil)
31
-
32
- unless handle.nil?
33
- assocs = OpenidAssociation.find(:all, :conditions => ["server_url = ? AND handle = ?", server_url, handle])
34
- else
35
- assocs = OpenidAssociation.find(:all, :conditions => ["server_url = ?", server_url])
36
- end
37
-
38
- return nil if assocs.nil?
39
-
40
- assocs.reverse!
41
-
42
- assocs.each do |assoc|
43
- a = assoc.from_record
44
- if a.expired?
45
- assoc.destroy
46
- else
47
- return a
48
- end
49
- end
50
-
51
- return nil
52
- end
53
-
54
- def remove_association(server_url, handle)
55
- assoc = OpenidAssociation.find(:first, :conditions => ["server_url = ? AND handle = ?", server_url, handle])
56
- unless assoc.nil?
57
- assoc.destroy
58
- return true
59
- end
60
- return false
61
- end
62
-
63
- def store_nonce(nonce)
64
- use_nonce(nonce)
65
- OpenidNonce.create :nonce => nonce, :created => Time.now.to_i
66
- end
67
-
68
- def use_nonce(nonce)
69
- nonce = OpenidNonce.find(:first, :conditions => ["nonce = ?", nonce])
70
- return false if nonce.nil?
71
-
72
- age = Time.now.to_i - nonce.created
73
- nonce.destroy
74
-
75
- return false if age > (6*60*60) # max nonce age of 6 hours
76
- return true
77
- end
78
-
79
- def dumb?
80
- return false
81
- end
82
-
83
- # not part of the api, but useful
84
- def gc
85
- now = Time.now.to_i
86
-
87
- # remove old nonces
88
- nonces = OpenidNonce.find(:all)
89
- nonces.each {|n| n.destroy if now - n.created > (6*60*60)} unless nonces.nil?
90
-
91
- # remove expired assocs
92
- assocs = OpenidAssociation.find(:all)
93
- assocs.each { |a| a.destroy if a.from_record.expired? } unless assocs.nil?
94
- end
95
-
96
-
97
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- # ugly way to get at StoreTestCase module
4
- require File.dirname(__FILE__) + '/../../vendor/openid/test/storetestcase'
5
-
6
- class OpenidTest < Test::Unit::TestCase
7
-
8
- include OpenidHelper
9
- include StoreTestCase
10
-
11
- def setup
12
- @store = self
13
- end
14
-
15
- end
@@ -1,22 +0,0 @@
1
- CREATE TABLE openid_associations (
2
- `id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
3
- `server_url` blob,
4
- `handle` varchar(255),
5
- `secret` blob,
6
- `issued` int(11),
7
- `lifetime` int(11),
8
- `assoc_type` varchar(255)
9
- ) ENGINE=InnoDB;
10
-
11
- CREATE TABLE openid_nonces (
12
- `id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
13
- `nonce` varchar(255),
14
- `created` int(11)
15
- ) ENGINE=InnoDB;
16
-
17
- CREATE TABLE openid_settings (
18
- `id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
19
- `setting` varchar(255),
20
- `value` blob
21
- ) ENGINE=InnoDB;
22
-
@@ -1,21 +0,0 @@
1
- CREATE TABLE openid_associations (
2
- "id" serial primary key,
3
- "server_url" bytea,
4
- "handle" character varying(255),
5
- "secret" bytea,
6
- "issued" integer,
7
- "lifetime" integer,
8
- "assoc_type" character varying(255)
9
- );
10
-
11
- CREATE TABLE openid_nonces (
12
- "id" serial primary key,
13
- "nonce" character varying(255),
14
- "created" integer
15
- );
16
-
17
- CREATE TABLE openid_settings (
18
- "id" serial primary key,
19
- "setting" character varying(255),
20
- "value" bytea
21
- );
@@ -1,21 +0,0 @@
1
- CREATE TABLE openid_associations (
2
- "id" INTEGER PRIMARY KEY NOT NULL,
3
- "server_url" blob,
4
- "handle" varchar(255),
5
- "secret" blob,
6
- "issued" integer,
7
- "lifetime" integer,
8
- "assoc_type" varchar(255)
9
- );
10
-
11
- CREATE TABLE openid_nonces (
12
- "id" INTEGER PRIMARY KEY NOT NULL,
13
- "nonce" varchar(255),
14
- "created" integer
15
- );
16
-
17
- CREATE TABLE openid_settings (
18
- "id" INTEGER PRIMARY KEY NOT NULL,
19
- "setting" varchar(255),
20
- "value" blob
21
- );
@@ -1,111 +0,0 @@
1
- require "pathname"
2
- require "cgi"
3
-
4
- # load the openid library
5
- begin
6
- require "rubygems"
7
- require_gem "ruby-openid", ">= 1.0"
8
- rescue LoadError
9
- require "openid"
10
- end
11
-
12
- class <%= class_name %>Controller < ApplicationController
13
- layout 'scaffold'
14
-
15
- # process the login request, disover the openid server, and
16
- # then redirect.
17
- def login
18
- openid_url = @params[:openid_url]
19
-
20
- if @request.post?
21
- request = consumer.begin(openid_url)
22
-
23
- case request.status
24
- when OpenID::SUCCESS
25
- return_to = url_for(:action=> 'complete')
26
- trust_root = url_for(:controller=>'')
27
-
28
- url = request.redirect_url(trust_root, return_to)
29
- redirect_to(url)
30
- return
31
-
32
- when OpenID::FAILURE
33
- escaped_url = CGI::escape(openid_url)
34
- flash[:notice] = "Could not find OpenID server for #{escaped_url}"
35
-
36
- else
37
- flash[:notice] = "An unknown error occured."
38
-
39
- end
40
- end
41
-
42
- end
43
-
44
- # handle the openid server response
45
- def complete
46
- response = consumer.complete(@params)
47
-
48
- case response.status
49
- when OpenID::SUCCESS
50
-
51
- @user = User.get(response.identity_url)
52
-
53
- # create user object if one does not exist
54
- if @user.nil?
55
- @user = User.new(:openid_url => response.identity_url)
56
- @user.save
57
- end
58
-
59
- # storing both the openid_url and user id in the session for for quick
60
- # access to both bits of information. Change as needed.
61
- @session[:user_id] = @user.id
62
-
63
- flash[:notice] = "Logged in as #{CGI::escape(response.identity_url)}"
64
-
65
- redirect_to :action => "welcome"
66
- return
67
-
68
- when OpenID::FAILURE
69
- if response.identity_url
70
- flash[:notice] = "Verification of #{CGI::escape(response.identity_url)} failed."
71
-
72
- else
73
- flash[:notice] = 'Verification failed.'
74
- end
75
-
76
- when OpenID::CANCEL
77
- flash[:notice] = 'Verification cancelled.'
78
-
79
- else
80
- flash[:notice] = 'Unknown response from OpenID server.'
81
- end
82
-
83
- redirect_to :action => 'login'
84
- end
85
-
86
- def logout
87
- @session[:user_id] = nil
88
- end
89
-
90
- def welcome
91
- end
92
-
93
- private
94
-
95
- # Get the OpenID::Consumer object.
96
- def consumer
97
- # create the OpenID store for storing associations and nonces,
98
- # putting it in your app's db directory
99
- store_dir = Pathname.new(RAILS_ROOT).join('db').join('openid-store')
100
- store = OpenID::FilesystemStore.new(store_dir)
101
-
102
- return OpenID::Consumer.new(@session, store)
103
- end
104
-
105
- # get the logged in user object
106
- def find_user
107
- return nil if session[:user_id].nil?
108
- User.find(session[:user_id])
109
- end
110
-
111
- end
data/test/runtests.rb~ DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- # the tests exploit some corner cases which generate warning messages
4
- # on stderr. try and silence those messages to avoid unnecessarily concerning
5
- # the library user.
6
- begin
7
- STDERR.reopen('/dev/null', 'w')
8
- rescue
9
- print ''
10
- end
11
-
12
- require "teststore"
13
- require "assoc"
14
- require "dh"
15
- require "util"
16
- require "linkparse"
17
- require "trustroot"
18
- require "assoc"
19
- require "server2"
20
- require "consumer"
21
- require "service"