X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/f0d7c4a8d6373faa02ed941452ef904ee43ec447..5bc3054d61559107868dfa351b25d8f48c571151:/app/controllers/application_controller.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b9f98071c..c2f1e644c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,7 +3,12 @@ class ApplicationController < ActionController::Base protect_from_forgery if STATUS == :database_readonly or STATUS == :database_offline - session :off + after_filter :clear_session + wrap_parameters false + + def clear_session + session.clear + end def self.cache_sweeper(*sweepers) end @@ -13,7 +18,10 @@ class ApplicationController < ActionController::Base if session[:user] @user = User.where(:id => session[:user]).where("status IN ('active', 'confirmed', 'suspended')").first - if @user.status == "suspended" + if @user.display_name != cookies["_osm_username"] + reset_session + @user = nil + elsif @user.status == "suspended" session.delete(:user) session_expires_automatically @@ -30,11 +38,15 @@ class ApplicationController < ActionController::Base end end elsif session[:token] - @user = User.authenticate(:token => session[:token]) - session[:user] = @user.id + if @user = User.authenticate(:token => session[:token]) + session[:user] = @user.id + else + reset_session + end end rescue Exception => ex logger.info("Exception authorizing user: #{ex.to_s}") + reset_session @user = nil end @@ -106,9 +118,7 @@ class ApplicationController < ActionController::Base # is optional. def setup_user_auth # try and setup using OAuth - if Authenticator.new(self, [:token]).allow? - @user = current_token.user - else + if not Authenticator.new(self, [:token]).allow? username, passwd = get_auth_data # parse from headers # authenticate per-scheme if username.nil? @@ -358,6 +368,11 @@ private return [user, pass] end + # used by oauth plugin to set the current user + def current_user=(user) + @user=user + end + # override to stop oauth plugin sending errors def invalid_oauth_response end