demarches-normaliennes/app/controllers/application_controller.rb

73 lines
1.7 KiB
Ruby
Raw Normal View History

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
before_action :load_navbar_left_pannel_partial_url
before_action :set_raven_context
before_action :authorize_request_for_profiler
def authorize_request_for_profiler
if 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
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
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