From 5d78bb0f8f0133894b78c3677a1ca95219e61b73 Mon Sep 17 00:00:00 2001 From: Steven Wilkin Date: Fri, 18 Sep 2009 17:48:44 +0100 Subject: [PATCH] can logout --- app/controllers/sessions_controller.rb | 28 ++++++++++++++++++++++++++ config/routes.rb | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index fe0a6f9..1ef738f 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,5 +1,6 @@ class SessionsController < ApplicationController + # get a request token from twitter def new client = TwitterOAuth::Client.new( :consumer_key => CONSUMER_KEY, @@ -11,7 +12,34 @@ def new redirect_to request_token.authorize_url end + # callback from twitter after app has been authorized + # exchange the request token for an access token + def auth + client = TwitterOAuth::Client.new( + :consumer_key => CONSUMER_KEY, + :consumer_secret => CONSUMER_SECRET + ) + access_token = client.authorize( + session[:request_token], + session[:request_token_key], + :oauth_verifier => params[:oauth_verifier] + ) + if client.authorized? + session[:access_token] = access_token.token + session[:access_token_secret] = access_token.secret + session[:user_name] = client.info['name'] + end + redirect_to root_url + end + + # logout def destroy + session[:request_token] = nil + session[:request_token_key] = nil + session[:access_token] = nil + session[:access_token_secret] = nil + session[:user_name] = nil + redirect_to root_url end end diff --git a/config/routes.rb b/config/routes.rb index 8dcc73c..d073a5e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,7 +32,9 @@ map.root :controller => 'pages', :action => 'home' - map.login '/login', :controller => 'sessions', :action => 'new' + map.login '/login', :controller => 'sessions', :action => 'new' + map.logout '/logout', :controller => 'sessions', :action => 'destroy' + map.auth '/auth', :controller => 'sessions', :action => 'auth' # Install the default routes as the lowest priority. # Note: These default routes make all actions in every controller accessible via GET requests. You should