@user = User.find(session[:user], :conditions => {:status => ["active", "confirmed", "suspended"]})
if @user.status == "suspended"
- session[:user] = nil
+ session.delete(:user)
session_expires_automatically
redirect_to :controller => "user", :action => "suspended"
+
+ # don't allow access to any auth-requiring part of the site unless
+ # the new CTs have been seen (and accept/decline chosen).
+ elsif !@user.terms_seen and flash[:skip_terms].nil?
+ flash[:notice] = t 'user.terms.you need to accept or decline'
+ if params[:referer]
+ redirect_to :controller => "user", :action => "terms", :referer => params[:referer]
+ else
+ redirect_to :controller => "user", :action => "terms", :referer => request.request_uri
+ end
end
elsif session[:token]
@user = User.authenticate(:token => session[:token])
def require_cookies
if request.cookies["_osm_session"].to_s == ""
if params[:cookie_test].nil?
+ session[:cookie_test] = true
redirect_to params.merge(:cookie_test => "true")
return false
else
flash.now[:warning] = t 'application.require_cookies.cookies_needed'
end
+ else
+ session.delete(:cookie_test)
end
end
# check if the user has been banned
if not @user.active_blocks.empty?
# NOTE: need slightly more helpful message than this.
- render :text => t('application.setup_user_auth.blocked'), :status => :forbidden
+ report_error t('application.setup_user_auth.blocked'), :forbidden
end
# if the user hasn't seen the contributor terms then don't
# allow editing - they have to go to the web site and see
# (but can decline) the CTs to continue.
- if REQUIRE_TERMS_SEEN and not @user.terms_seen
+ if REQUIRE_TERMS_SEEN and not @user.terms_seen and flash[:skip_terms].nil?
set_locale
- render :text => t('application.setup_user_auth.need_to_see_terms'), :status => :forbidden
+ report_error t('application.setup_user_auth.need_to_see_terms'), :forbidden
end
end
end