diff --git a/app/controllers/application.rb b/app/controllers/application.rb index 607ac091..306ebc03 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -28,18 +28,23 @@ class ApplicationController < ActionController::Base end def user_setup + # Check the settings cache for each request Setting.check_cache + # Find the current user + User.current = find_current_user + end + + # Returns the current user or nil if no user is logged in + def find_current_user if session[:user_id] # existing session - User.current = User.find(session[:user_id]) + (User.find_active(session[:user_id]) rescue nil) elsif cookies[:autologin] && Setting.autologin? # auto-login feature - User.current = User.find_by_autologin_key(cookies[:autologin]) + User.find_by_autologin_key(cookies[:autologin]) elsif params[:key] && accept_key_auth_actions.include?(params[:action]) # RSS key authentication - User.current = User.find_by_rss_key(params[:key]) - else - User.current = User.anonymous + User.find_by_rss_key(params[:key]) end end