class UserController < ApplicationController
- layout 'site', :except => :api_details
+ layout 'site', :except => [:api_details]
before_filter :authorize, :only => [:api_details, :api_gpx_files]
before_filter :authorize_web, :except => [:api_details, :api_gpx_files]
if request.xhr?
render :update do |page|
- page.replace_html "contributorTerms", :partial => "terms", :locals => { :has_decline => params[:has_decline] }
+ page.replace_html "contributorTerms", :partial => "terms"
end
else
@title = t 'user.terms.title'
if Acl.find_by_address(request.remote_ip, :conditions => {:k => "no_account_creation"})
render :action => 'new'
elsif params[:decline]
- redirect_to t('user.terms.declined')
+ if @user
+ @user.terms_seen = true
+ @user.save
+
+ if params[:referer]
+ redirect_to params[:referer]
+ else
+ redirect_to :action => :account, :display_name => @user.display_name
+ end
+ else
+ redirect_to t('user.terms.declined')
+ end
elsif @user
if !@user.terms_agreed?
@user.consider_pd = params[:user][:consider_pd]
@user.terms_agreed = Time.now.getutc
+ @user.terms_seen = true
if @user.save
flash[:notice] = t 'user.new.terms accepted'
end
end
- redirect_to :action => :account, :display_name => @user.display_name
+ if params[:referer]
+ redirect_to params[:referer]
+ else
+ redirect_to :action => :account, :display_name => @user.display_name
+ end
else
@user = User.new(params[:user])
@user.creation_ip = request.remote_ip
@user.languages = request.user_preferred_languages
@user.terms_agreed = Time.now.getutc
-
+ @user.terms_seen = true
+
if @user.save
flash[:notice] = t 'user.new.flash create success message', :email => @user.email
Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => params[:referer]))
@user.home_lat = params[:user][:home_lat]
@user.home_lon = params[:user][:home_lon]
- @user.preferred_editor = params[:user][:preferred_editor]
+ if params[:user][:preferred_editor] == "default"
+ @user.preferred_editor = nil
+ else
+ @user.preferred_editor = params[:user][:preferred_editor]
+ end
if @user.save
set_locale
session[:user] = user.id
session_expires_after 1.month if params[:remember_me]
- # The user is logged in, if the referer param exists, redirect
- # them to that unless they've also got a block on them, in
- # which case redirect them to the block so they can clear it.
- if user.blocked_on_view
- redirect_to user.blocked_on_view, :referer => params[:referer]
- elsif params[:referer]
- redirect_to params[:referer]
+ target = params[:referer] || url_for(:controller => :site, :action => :index)
+
+ # The user is logged in, so decide where to send them:
+ #
+ # - If they haven't seen the contributor terms, send them there.
+ # - If they have a block on them, show them that.
+ # - If they were referred to the login, send them back there.
+ # - Otherwise, send them to the home page.
+ if REQUIRE_TERMS_SEEN and not user.terms_seen
+ redirect_to :controller => :user, :action => :terms, :referer => target
+ elsif user.blocked_on_view
+ redirect_to user.blocked_on_view, :referer => target
else
- redirect_to :controller => 'site', :action => 'index'
+ redirect_to target
end
elsif user = User.authenticate(:username => email_or_display_name, :password => pass, :pending => true)
flash.now[:error] = t 'user.login.account not active', :reconfirm => url_for(:action => 'confirm_resend', :display_name => user.display_name)
elsif flash[:notice].nil?
flash.now[:notice] = t 'user.login.notice'
end
+ render :layout => 'slim'
end
def logout