openstreetmap-website/app/controllers/accounts/terms_controller.rb

65 lines
1.9 KiB
Ruby

module Accounts
class TermsController < ApplicationController
include SessionMethods
layout "site"
before_action :disable_terms_redirect
before_action :authorize_web
before_action :set_locale
before_action :check_database_readable
authorize_resource :class => :account_terms
def show
@legale = params[:legale] || OSM.ip_to_country(request.remote_ip) || Settings.default_legale
@text = OSM.legal_text_for_country(@legale)
if request.xhr?
render :partial => "terms"
else
@title = t ".title"
if current_user&.terms_agreed?
# Already agreed to terms, so just show settings
redirect_to edit_account_path
elsif current_user.nil?
redirect_to login_path(:referer => request.fullpath)
end
end
end
def update
@title = t "users.new.title"
if params[:decline] || !(params[:read_tou] && params[:read_ct])
if current_user
current_user.terms_seen = true
flash[:notice] = { :partial => "accounts/terms/terms_declined_flash" } if current_user.save
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || edit_account_path
elsif params[:decline]
redirect_to t("users.terms.declined"), :allow_other_host => true
else
redirect_to account_terms_path
end
elsif current_user
unless current_user.terms_agreed?
current_user.consider_pd = params[:user][:consider_pd]
current_user.tou_agreed = Time.now.utc
current_user.terms_agreed = Time.now.utc
current_user.terms_seen = true
flash[:notice] = t "users.new.terms accepted" if current_user.save
end
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || edit_account_path
end
end
end
end