|
|
|
class ApplicationController < ActionController::Base
|
|
|
|
protect_from_forgery
|
|
|
|
before_filter :check_honeypot
|
|
|
|
around_filter :set_timezone
|
|
|
|
helper_method :client_remote_ip
|
|
|
|
layout :scoped_layout
|
|
|
|
|
|
|
|
rescue_from ActiveScaffold::ActionNotAllowed do |exception|
|
|
|
|
flash.now[:error] = I18n.t("errors.action_not_allowed")
|
|
|
|
render_access_denied
|
|
|
|
end
|
|
|
|
|
|
|
|
protected
|
|
|
|
|
|
|
|
def set_timezone
|
|
|
|
old_time_zone = Time.zone
|
|
|
|
Time.zone = cookies[:time_zone] if cookies[:time_zone].present?
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
Time.zone = old_time_zone
|
|
|
|
end
|
|
|
|
|
|
|
|
def scoped_layout
|
|
|
|
return false if request.xhr?
|
|
|
|
return 'admin' if devise_controller? && resource_name == :admin
|
|
|
|
user_signed_in? ? 'users' : 'public'
|
|
|
|
end
|
|
|
|
|
|
|
|
def render_access_denied
|
|
|
|
layout = request.xhr? ? false : 'errors'
|
|
|
|
render :template => 'errors/access_denied', :layout => layout
|
|
|
|
end
|
|
|
|
|
|
|
|
def client_remote_ip
|
|
|
|
@client_remote_ip ||= Settings.uses_proxy ? request.remote_ip : request.ip
|
|
|
|
end
|
|
|
|
|
|
|
|
def check_honeypot
|
|
|
|
render :nothing => true if params[Settings.honeypot].present?
|
|
|
|
end
|
|
|
|
|
|
|
|
def after_sign_out_path_for(resource_or_scope)
|
|
|
|
page_path('signed_out')
|
|
|
|
end
|
|
|
|
|
|
|
|
def current_ability
|
|
|
|
@current_ability ||= ::UserAbility.new(current_user)
|
|
|
|
end
|
|
|
|
|
|
|
|
class UserParameterSanitizer < Devise::ParameterSanitizer
|
|
|
|
|
|
|
|
def sign_up
|
|
|
|
default_params.permit(:full_name, :email, :password)
|
|
|
|
end
|
|
|
|
|
|
|
|
def account_update
|
|
|
|
default_params.permit(:full_name, :email, :password, :current_password)
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
def devise_parameter_sanitizer
|
|
|
|
super unless resource_class == User
|
|
|
|
UserParameterSanitizer.new(User, :user, params)
|
|
|
|
end
|
|
|
|
|
|
|
|
def user_for_paper_trail
|
|
|
|
if user_signed_in?
|
|
|
|
current_user.to_paper_trail
|
|
|
|
else
|
|
|
|
"Public ip:#{client_remote_ip}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|