1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/app/controllers/application_controller.rb

93 lines
3.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Main controller for the backend application. All controllers inherits from it
2015-05-05 03:10:25 +02:00
class ApplicationController < ActionController::Base
include Pundit
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
after_action :set_csrf_cookie
respond_to :html, :json
before_action :configure_permitted_parameters, if: :devise_controller?
around_action :switch_locale
2015-05-05 03:10:25 +02:00
2016-03-23 18:39:41 +01:00
# Globally rescue Authorization Errors in controller.
# Returning 403 Forbidden if permission is denied
rescue_from Pundit::NotAuthorizedError, with: :permission_denied
def index; end
2015-05-05 03:10:25 +02:00
def sso_redirect
@authorization_token = request.query_parameters[:auth_token]
@authentication_token = form_authenticity_token
@active_provider = AuthProvider.active
end
2015-05-05 03:10:25 +02:00
protected
2015-05-05 03:10:25 +02:00
def set_csrf_cookie
cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
end
def verified_request?
super || valid_authenticity_token?(session, request.headers['X-XSRF-TOKEN'])
end
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up,
keys: [
{
profile_attributes: %i[phone last_name first_name interest software_mastered],
invoicing_profile_attributes: [
2023-02-24 17:26:55 +01:00
organization_attributes: [:name, { address_attributes: [:address] }],
user_profile_custom_fields_attributes: %i[profile_custom_field_id value],
address_attributes: [:address]
],
statistic_profile_attributes: %i[gender birthday]
},
:username, :is_allow_contact, :is_allow_newsletter, :cgu, :group_id
])
2015-05-05 03:10:25 +02:00
end
def default_url_options
{
host: Rails.application.secrets.default_host,
protocol: Rails.application.secrets.default_protocol
}
2015-05-05 03:10:25 +02:00
end
2016-03-23 18:39:41 +01:00
def permission_denied
2023-02-24 17:26:55 +01:00
head :forbidden
2016-03-23 18:39:41 +01:00
end
# Set the configured locale for each action (API call)
# @see https://guides.rubyonrails.org/i18n.html
2023-04-03 11:10:57 +02:00
def switch_locale(&)
locale = params[:locale] || Rails.application.secrets.rails_locale
2023-04-03 11:10:57 +02:00
I18n.with_locale(locale, &)
end
# @return [User]
# This is a placeholder for Devise's current_user.
# As Devise generate the method at runtime, IDEs autocomplete features will complain about 'method not found'
def current_user
super
end
# This is a placeholder for Devise's authenticate_user! method.
def authenticate_user!
super
end
2022-01-11 16:04:14 +01:00
# N+1 query detection (https://github.com/flyerhzm/bullet)
def skip_bullet
previous_value = Bullet.enable?
Bullet.enable = false
yield
ensure
Bullet.enable = previous_value
end
2015-05-05 03:10:25 +02:00
end