diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 098a608..83ead4d 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,6 +1,6 @@ class SessionsController < ApplicationController skip_before_filter :ensure_authenticated - protect_from_forgery except: [:new, :create, :failure] + protect_from_forgery except: [:new, :create, :failure, :destroy] def new redirect_to '/auth/g' @@ -20,6 +20,11 @@ def create end end + def destroy + logout + redirect_to root_path + end + def failure render :inline => 'Snowman says no.
' end diff --git a/config/routes.rb b/config/routes.rb index 327ac42..b7898f6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,4 +2,5 @@ get '/login', :to => 'sessions#new', :as => :login post '/auth/g/callback', :to => 'sessions#create' post '/auth/failure', :to => 'sessions#failure' + delete '/logout', :to => 'sessions#destroy', :as => :logout end diff --git a/lib/google_auth/controller.rb b/lib/google_auth/controller.rb index 70e2e14..bd834b8 100644 --- a/lib/google_auth/controller.rb +++ b/lib/google_auth/controller.rb @@ -19,5 +19,10 @@ def ensure_authenticated end end + def logout + session[:user_id] = nil + @current_user = nil + end + end end