2015-08-10 11:05:06 +02:00
|
|
|
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
|
2016-11-14 17:33:45 +01:00
|
|
|
before_action :check_browser
|
2016-11-22 16:03:32 +01:00
|
|
|
before_action :load_navbar_left_pannel_partial_url
|
2017-06-28 07:08:25 +02:00
|
|
|
before_action :set_raven_context
|
2017-07-24 12:29:09 +02:00
|
|
|
before_action :authorize_request_for_profiler
|
|
|
|
|
|
|
|
def authorize_request_for_profiler
|
|
|
|
if Rails.env.production? && administration_signed_in?
|
|
|
|
Rack::MiniProfiler.authorize_request
|
|
|
|
end
|
|
|
|
end
|
2015-08-10 11:05:06 +02:00
|
|
|
|
2016-07-07 10:13:46 +02:00
|
|
|
def default_url_options
|
2016-12-02 16:04:23 +01:00
|
|
|
return {protocol: 'https'} if Rails.env.staging? || Rails.env.production?
|
2016-07-07 10:13:46 +02:00
|
|
|
{}
|
|
|
|
end
|
2016-09-22 11:31:24 +02:00
|
|
|
|
|
|
|
def check_browser
|
2016-12-02 16:04:23 +01:00
|
|
|
BROWSER.value = BrowserService.get_browser(request)
|
2016-09-22 11:31:24 +02:00
|
|
|
end
|
2016-11-22 16:03:32 +01:00
|
|
|
|
|
|
|
def load_navbar_left_pannel_partial_url
|
|
|
|
controller = request.controller_class
|
|
|
|
method = params[:action]
|
|
|
|
service = RenderPartialService.new(controller, method)
|
|
|
|
@navbar_url = service.navbar
|
|
|
|
@left_pannel_url = service.left_panel
|
|
|
|
@facade_data_view = nil
|
|
|
|
end
|
2017-01-03 11:32:21 +01:00
|
|
|
|
|
|
|
protected
|
|
|
|
|
|
|
|
def authenticate_gestionnaire!
|
|
|
|
if gestionnaire_signed_in?
|
|
|
|
super
|
|
|
|
else
|
|
|
|
redirect_to new_user_session_path
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def authenticate_administrateur!
|
|
|
|
if administrateur_signed_in?
|
|
|
|
super
|
|
|
|
else
|
|
|
|
redirect_to new_user_session_path
|
|
|
|
end
|
|
|
|
end
|
2017-06-28 07:08:25 +02:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def set_raven_context
|
|
|
|
context = { ip_address: request.ip }
|
|
|
|
|
|
|
|
logged_models = [
|
|
|
|
current_user,
|
|
|
|
current_gestionnaire,
|
|
|
|
current_administrateur,
|
|
|
|
current_administration
|
|
|
|
].compact
|
|
|
|
|
|
|
|
context[:email] = logged_models.first&.email
|
|
|
|
context[:id] = logged_models.first&.id
|
|
|
|
|
|
|
|
class_names = logged_models.map { |model| model.class.name }
|
|
|
|
context[:classes] = class_names.any? ? class_names.join(', ') : 'Guest'
|
|
|
|
|
|
|
|
Raven.user_context(context)
|
|
|
|
end
|
2015-08-10 11:05:06 +02:00
|
|
|
end
|