|
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :config_site
before_filter :check_admin_mode
before_filter :configure_permitted_parameters, if: :devise_controller?
before_filter :analytics
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name, :email, :current_password, :avatar, :password, :password_confirmation, :avatar_tmp, :avatar_processing, :bio) }
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password) }
end
def config_site
@config = Info.first
if cookies[:avalanche_locale] && I18n.available_locales.include?(cookies[:avalanche_locale].to_sym)
l = cookies[:avalanche_locale].to_sym
else
begin
http_accept_language = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
if http_accept_language != ''
["pt-BR", "pt-br", "pt", "br"].include?(http_accept_language) ? l = :"pt-BR" : l = @config.default_language
else
l = @config.default_language # use default locale if cannot retrieve this info
end
rescue
l = @config.default_language
ensure
cookies.permanent[:avalanche_locale] = l
end
end
I18n.locale = l
if @config.open_for_public == false && user_signed_in? == false
page = params[:controller]
if page != 'start' && page != 'users/sessions' && page != 'users/registrations' && page != 'users/invitations' && page != 'devise/passwords' && page != 'devise/unlocks' && page != 'devise/confirmations' && page != 'contact_messages' && page != 'subscription' && page != 'settings'
#@analytics.track('Access Denied')
redirect_to root_path, notice: (t 'admin_panel.closed_for_public')
return
end
end
end
def analytics
if current_user != nil
@id_analytics = current_user.full_name
cookies[:avalanche_user_id] = @id_analytics
else
if cookies[:avalanche_user_id]
@id_analytics = cookies[:avalanche_user_id].to_sym
else
@id_analytics = 'Guest_'+ Time.now.to_i.to_s
cookies[:avalanche_user_id] = @id_analytics
end
end
@analytics ||= Analytics.new(@id_analytics)
end
def after_sign_in_path_for(resource_or_scope)
if @analytics == nil
analytics
end
stored_location_for(resource_or_scope) || dashboard_path
end
protected
def check_admin_mode
if @config.maintenance_mode && controller_name != 'sessions' && !user_signed_in? && action_name != 'maintenance_mode'
render 'admin_panel/maintenance_mode'
elsif !@config.maintenance_mode && !user_signed_in? && action_name == 'maintenance_mode'
redirect_to root_path
end
end
end
|