29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'app/controllers/sessions_controller.rb', line 29
def oauth_callback
unless session[:request_token] && session[:request_token_secret]
authentication_failed('No authentication information was found in the session. Please try again.') and return
end
unless params[:oauth_token].blank? || session[:request_token] == params[:oauth_token]
authentication_failed('Authentication information does not match session information. Please try again.') and return
end
@request_token = OAuth::RequestToken.new(TwitterAuth.consumer, session[:request_token], session[:request_token_secret])
oauth_verifier = params["oauth_verifier"]
@access_token = @request_token.get_access_token(:oauth_verifier => oauth_verifier)
session[:request_token] = nil
session[:request_token_secret] = nil
@user = User.identify_or_create_from_access_token(@access_token)
if @user.onboard_status == 0
authentication_failed_need_vowch("You need to be vowched for before you can sign up.")
elsif @user.onboard_status == 1
@user.update_attributes(:onboard_status => 2)
session[:user_id] = @user.id
cookies[:remember_token] = { :value => @user.remember_me, :expires => 1.year.from_now}
onboard_user
else
session[:user_id] = @user.id
cookies[:remember_token] = { :value => @user.remember_me, :expires => 1.year.from_now}
if @user.onboard_status == 2
onboard_user
else
authentication_succeeded
end
end
rescue Net::HTTPServerException => e
case e.message
when '401 "Unauthorized"'
authentication_failed('This authentication request is no longer valid. Please try again.') and return
else
authentication_failed('There was a problem trying to authenticate you. Please try again.') and return
end
end
|