-
Notifications
You must be signed in to change notification settings - Fork 108
/
user_session.rb
34 lines (28 loc) · 957 Bytes
/
user_session.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class UserSession < Authlogic::Session::Base
attr_accessor :openid_identifier
def authenticating_with_openid?
!openid_identifier.blank? || controller.params[:open_id_complete]
end
def save(&block)
if authenticating_with_openid?
raise ArgumentError.new("You must supply a block to authenticate with OpenID") unless block_given?
controller.send(:authenticate_with_open_id, openid_identifier) do |result, openid_identifier|
if !result.successful?
errors.add_to_base(result.message)
yield false
return
end
record = klass.find_by_openid_identifier(openid_identifier)
if !record
errors.add(:openid_identifier, "did not match any users in our database, have you set up your account to use OpenID?")
yield false
return
end
self.unauthorized_record = record
super
end
else
super
end
end
end