@@ -24,19 +24,27 @@ class OpenID
24
24
option :name , :open_id
25
25
option :required , [ AX [ :email ] , AX [ :name ] , AX [ :first_name ] , AX [ :last_name ] , 'email' , 'fullname' ]
26
26
option :optional , [ AX [ :nickname ] , AX [ :city ] , AX [ :state ] , AX [ :website ] , AX [ :image ] , 'postcode' , 'nickname' ]
27
+ option :immediate , false
28
+ option :trust_root , proc { |root_uri | nil }
27
29
option :store , ::OpenID ::Store ::Memory . new
28
30
option :identifier , nil
29
31
option :identifier_param , 'openid_url'
30
32
option :trust_root , nil
31
33
32
34
def dummy_app
33
- lambda { |env | [ 401 , { "WWW-Authenticate" => Rack ::OpenID . build_header (
35
+ lambda { |env |
36
+ req = Rack ::Request . new ( env )
37
+ root_uri = "#{ req . scheme } ://#{ req . host_with_port } /"
38
+
39
+ [ 401 , { "WWW-Authenticate" => Rack ::OpenID . build_header (
34
40
:identifier => identifier ,
35
41
:return_to => callback_url ,
36
42
:trust_root => options . trust_root || %r{^(https?://[^/]+)} . match ( callback_url ) { |m | m [ 1 ] } ,
37
43
:required => options . required ,
38
44
:optional => options . optional ,
39
- :method => 'post'
45
+ :method => 'post' ,
46
+ :immediate => options . immediate ,
47
+ :trust_root => options . trust_root . call ( root_uri )
40
48
) } , [ ] ] }
41
49
end
42
50
0 commit comments