Skip to content
Extraits de code Groupes Projets
application_controller.rb 1,27 ko
Newer Older
  • Learn to ignore specific revisions
  • Eugen Rochko's avatar
    Eugen Rochko a validé
    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
    
      force_ssl if: "Rails.env.production? && ENV['LOCAL_HTTPS'] == 'true'"
    
      helper_method :current_account
    
    
      rescue_from ActionController::RoutingError, with: :not_found
      rescue_from ActiveRecord::RecordNotFound, with: :not_found
    
    
      before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      before_action :set_locale
    
      def raise_not_found
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
        raise ActionController::RoutingError, "No route matches #{params[:unmatched_route]}"
    
      private
    
      def store_current_location
        store_location_for(:user, request.url)
      end
    
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      def set_locale
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
        I18n.locale = current_user.try(:locale) || I18n.default_locale
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      rescue I18n::InvalidLocale
        I18n.locale = I18n.default_locale
      end
    
    
      def require_admin!
        redirect_to root_path unless current_user&.admin?
      end
    
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      protected
    
    
      def not_found
        respond_to do |format|
          format.any { head 404 }
        end
      end
    
    
      def gone
        respond_to do |format|
          format.any { head 410 }
        end
      end
    
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      def current_account
    
        @current_account ||= current_user.try(:account)
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
      end
    
    Eugen Rochko's avatar
    Eugen Rochko a validé
    end