# frozen_string_literal: true # Gestiona las excepciones que lanzamos desde los controladores module ExceptionHandler extend ActiveSupport::Concern class SiteNotFound < StandardError; end class PageNotFound < StandardError; end included do rescue_from SiteNotFound, with: :site_not_found rescue_from PageNotFound, with: :page_not_found rescue_from Pundit::Error, with: :page_not_found rescue_from Pundit::NotAuthorizedError, with: :page_unauthorized rescue_from Pundit::NilPolicyError, with: :page_not_found rescue_from ActionController::RoutingError, with: :page_not_found rescue_from ActionController::ParameterMissing, with: :page_not_found end def site_not_found(exception) reset_response! flash[:error] = I18n.t('errors.site_not_found') ExceptionNotifier.notify_exception(exception) redirect_to sites_path end def page_unauthorized(exception) reset_response! flash[:error] = I18n.t('errors.page_unauthorized') ExceptionNotifier.notify_exception(exception, data: { usuarie: current_usuarie.id, path: request.fullpath }) redirect_to site_path(site) end def page_not_found(exception) reset_response! flash[:error] = I18n.t('errors.page_not_found') ExceptionNotifier.notify_exception(exception) redirect_to site_path(site) end private def reset_response! self.response_body = nil @_response_body = nil headers.delete('Location') end end