forked from saurabh/orbit4-5
144 lines
4.2 KiB
Ruby
144 lines
4.2 KiB
Ruby
class ApplicationController < ActionController::Base
|
|
# Prevent CSRF attacks by raising an exception.
|
|
protect_from_forgery
|
|
# For APIs, you may want to use :null_session instead.
|
|
# protect_from_forgery with: :null_session
|
|
before_action :set_locale, :set_mobile_web
|
|
helper_method :current_site, :current_user
|
|
|
|
def default_url_options(options={})
|
|
{ locale: I18n.locale }
|
|
end
|
|
|
|
def set_locale
|
|
in_use_locales = current_site.in_use_locales
|
|
|
|
if params[:locale].eql?("zh_cn") or (!params[:locale] and session[:zh_cn])
|
|
redirect_to root_path if !current_site.enable_zh_cn
|
|
params[:locale] = "zh_tw"
|
|
I18n.locale = session[:locale]
|
|
session[:zh_cn] = true
|
|
else
|
|
session[:zh_cn] = false
|
|
end
|
|
|
|
if params[:locale]
|
|
session[:locale] = in_use_locales.include?(params[:locale].to_sym) ? params[:locale] : nil
|
|
end
|
|
|
|
if !params[:locale] and !session[:locale]
|
|
if current_site.enable_language_detection
|
|
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].split(',').first.underscore rescue nil
|
|
session[:locale] = in_use_locales.include?(browser_locale.to_sym) ? browser_locale : nil
|
|
elsif current_site.default_locale
|
|
session[:locale] = current_site.default_locale
|
|
end
|
|
end
|
|
|
|
session[:locale] = session[:locale].blank? ? I18n.default_locale : session[:locale]
|
|
|
|
I18n.locale = session[:locale]
|
|
|
|
@site_in_use_locales = [I18n.locale]+(in_use_locales-[I18n.locale])
|
|
@site_valid_locales = [I18n.locale]+(current_site.valid_locales-[I18n.locale])
|
|
end
|
|
|
|
def get_layout
|
|
f = File.join("../../templates/", "#{@key}", '/home/page.html.erb')
|
|
end
|
|
|
|
def get_key
|
|
@key = $mobile.blank? ? current_site.template : "mobile/orbit_mobile"
|
|
end
|
|
|
|
def current_site
|
|
@current_site = @current_site.nil? ? Site.first : @current_site
|
|
end
|
|
|
|
def frontent_allowed
|
|
current_user.nil? and !current_site.frontend_open
|
|
end
|
|
|
|
def set_mobile_web
|
|
path = request.path.split('/')
|
|
is_mobile_path = ( (path[1].eql?("mobile") or path[2].eql?("mobile")) or params[:mobile].eql?("1") )
|
|
|
|
if params[:editmode] == "on"
|
|
$temp_mobile = session[:mobile]
|
|
end
|
|
|
|
if params[:mobile].eql?("0")
|
|
session[:desktop] = true
|
|
session[:mobile] = false
|
|
$mobile= ""
|
|
redirect_to root_path if is_mobile_path
|
|
else
|
|
is_mobile_device = ( (request.user_agent =~ /iPhone|iPod|Android/) and !session[:desktop])
|
|
$mobile = session[:mobile] ? "/mobile" : ""
|
|
|
|
if current_site.mobile_on
|
|
if is_mobile_path or is_mobile_device
|
|
session[:desktop] = false
|
|
session[:mobile] = true
|
|
$mobile = "/mobile"
|
|
end
|
|
else
|
|
session[:mobile] = false
|
|
redirect_to root_path if is_mobile_path
|
|
end
|
|
end
|
|
|
|
if path.include?("page_parts") or path.include?("edit_view")
|
|
$mobile = params[:mobile_view].blank? ? "" : "/mobile"
|
|
end
|
|
|
|
end
|
|
|
|
def log_user_action
|
|
unless (request.filtered_parameters['action'].eql? "system_info") and (request.filtered_parameters['controller'].eql? "admin/sites")
|
|
log = UserAction.new
|
|
log.action = request.filtered_parameters['action']
|
|
log.controller = request.filtered_parameters['controller']
|
|
log.request_path = request.original_fullpath
|
|
log.request_method = request.request_method
|
|
log.remote_ip = request.remote_ip
|
|
log.referer = request.referer
|
|
begin
|
|
current_user.user_actions << log if log.save
|
|
rescue
|
|
end
|
|
end
|
|
end
|
|
|
|
def site_token_present?
|
|
current_site.site_token?
|
|
end
|
|
|
|
def store_session
|
|
api_key = STORE_CONFIG[:store_settings]["api_key"]
|
|
@store = Store.new(current_site.id.to_s, current_site.site_token,api_key) if current_site.site_token
|
|
end
|
|
|
|
private
|
|
|
|
def current_user
|
|
@current_user = @current_user.nil? ? (User.find(session[:user_id]) if session[:user_id] rescue nil) : @current_user
|
|
end
|
|
|
|
protected
|
|
|
|
def authenticate_user
|
|
if session[:user_id]
|
|
# set current user object to @current_user object variable
|
|
@current_user = User.find(session[:user_id]) rescue nil
|
|
|
|
redirect_to new_session_path if @current_user.nil?
|
|
return true
|
|
else
|
|
session[:login_referer] = request.url
|
|
redirect_to new_session_path
|
|
return false
|
|
end
|
|
end
|
|
end
|