| Class | TwitterSessionsController |
| In: |
app/controllers/twitter_sessions_controller.rb
|
| Parent: | ApplicationController |
# File app/controllers/twitter_sessions_controller.rb, line 3
3: def create
4: oauth.set_callback_url(finalize_twitter_session_url)
5:
6: session['rtoken'] = oauth.request_token.token
7: session['rsecret'] = oauth.request_token.secret
8:
9: session[:return_to] = params[:return_to] || request.env['HTTP_REFERER']
10: redirect_to oauth.request_token.authorize_url
11: end
def destroy
reset_session redirect_to new_session_path
end
# File app/controllers/twitter_sessions_controller.rb, line 18
18: def finalize
19: oauth.authorize_from_request(session['rtoken'], session['rsecret'], params[:oauth_verifier])
20: session['rtoken'] = nil
21: session['rsecret'] = nil
22:
23: profile = Twitter::Base.new(oauth).verify_credentials
24: profile_attrs = {:atoken => oauth.access_token.token,
25: :asecret => oauth.access_token.secret,
26: :name => profile.name,
27: :screen_name => profile.screen_name,
28: :raw_location => profile.location,
29: :url => "http://www.twitter.com/#{profile.screen_name}"}
30:
31: user = Person.find_or_initialize_by_screen_name(profile.screen_name)
32:
33: if user.new_record?
34: user.update_attributes(profile_attrs.merge({:status => "aprobado"}))
35: self.current_user = user
36: flash[:notice] = t('session.Has_entrado', :name => current_user.name)
37: redirect_back_or_default(root_path) and return
38: else
39: user.update_attributes(profile_attrs)
40: if user.status.eql?("pendiente")
41: render :template => "/sessions/waiting_for_approval" and return
42: elsif user.status.eql?("vetado")
43: flash[:notice] = "Este usuario ha sido eliminado"
44: redirect_to root_path and return
45: else
46: self.current_user = user
47: flash[:notice] = t('session.Has_entrado', :name => current_user.name)
48: redirect_back_or_default(root_path) and return
49: end
50: session[:return_to] = nil
51: end
52: end