86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/authlogic_facebook_connect/session.rb', line 86
def validate_by_facebook_connect
facebook_session = controller.facebook_session
self.attempted_record = facebook_user_class.find(:first, :conditions => { facebook_uid_field => facebook_session.user.uid })
if self.attempted_record
self.attempted_record.send(:"#{facebook_session_key_field}=", facebook_session.session_key)
self.attempted_record.save
end
unless self.attempted_record || facebook_skip_new_user_creation
begin
new_user = klass.new
if klass == facebook_user_class
new_user.send(:"#{facebook_uid_field}=", facebook_session.user.uid)
new_user.send(:"#{facebook_session_key_field}=", facebook_session.session_key)
else
new_user.send(:"build_#{facebook_user_class.to_s.underscore}", :"#{facebook_uid_field}" => facebook_session.user.uid, :"#{facebook_session_key_field}" => facebook_session.session_key)
end
new_user.before_connect(facebook_session) if new_user.respond_to?(:before_connect)
self.attempted_record = new_user
if facebook_valid_user
errors.add_to_base(
I18n.t('error_messages.facebook_user_creation_failed',
:default => 'There was a problem creating a new user ' +
'for your Facebook account')) unless self.attempted_record.valid?
self.attempted_record = nil
else
self.attempted_record.save_with_validation(false)
end
rescue Facebooker::Session::SessionExpired
errors.add_to_base(I18n.t('error_messages.facebooker_session_expired',
:default => "Your Facebook Connect session has expired, please reconnect."))
end
end
end
|