sideplace_app/app/controllers/application_controller.rb

144 lines
3.9 KiB
Ruby

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 :set_locale
def set_locale
# if params[:locale] is nil then I18n.default_locale will be used
#I18n.locale = params[:locale]#"fr" #
I18n.locale = params[:locale] || "fr"
if true
begin
http_url = "http://sideplace.com:8080/json/#{request.remote_ip}"
http = Curl::Easy.http_get(http_url)
result = JSON.parse(http.body_str)
puts result
if result and result["country_code"] and c = ISO3166::Country[result["country_code"]]
result = Geocoder.search(c.translation("en")).each do |result|
if result.country
@default_country = result
break
end
end
end
rescue
puts "impossible de localiser le pays"
end
if @default_country and @default_country.geometry["location"] and @default_country.geometry["viewport"]
session[:default_country] = {}
session[:default_country][:lat] = @default_country.geometry["location"]["lat"]
session[:default_country][:lng] = @default_country.geometry["location"]["lng"]
session[:default_country][:radius] = Geocoder::Calculations.distance_between([@default_country.geometry["location"]["lat"],@default_country.geometry["location"]["lng"]], [@default_country.geometry["viewport"]["southwest"]["lat"],@default_country.geometry["viewport"]["southwest"]["lng"]], :units => :km).round
session[:default_country][:country] = c.translation(I18n.locale.to_s)
session[:default_country][:country_code] = c.alpha2
else
session[:default_country] = nil
end
end
if session[:default_country] and !params[:place]
params[:place] = session[:default_country][:country]
params[:place_lat] = session[:default_country][:lat]
params[:place_lng] = session[:default_country][:lng]
params[:place_type] = "6"
params[:place_country] = session[:default_country][:country]
params[:with_radius] = "1"
params[:place_dist] = session[:default_country][:radius]
end
end
def default_url_options(options={})
{ :locale => I18n.locale } #
end
def auth_annonce_account
session[:devise_id] = params[:d] if params[:d]
if !current_annonce_account
session[:before_auth_url] = request.url
redirect_to new_public_annonce_accounts_auth_path(:p => params[:p], :for_annonce => (true if params[:controller] == "public/annonces"), :for_mail => (true if params[:controller] == "public/annonce_accounts" and params[:action] == "mail"))
end
end
private
def auth_admin
if !current_admin
redirect_to new_admin_admin_auth_path
end
end
private
def current_admin
if cookies[:admin_remember_token]
if @current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token])
@current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token])
else
cookies[:admin_remember_token] =nil
end
end
end
def current_annonce_account
if cookies[:annonce_account_auth_token] and AnnonceAccount.exists?(:token => cookies[:annonce_account_auth_token])
a_c = AnnonceAccount.find_by_token(cookies[:annonce_account_auth_token])
if a_c.not_blocked
@current_annonce_account = a_c
else
cookies[:annonce_account_auth_token] = nil
nil
end
else
nil
end
end
helper_method :current_admin, :current_annonce_account
end