Sha256: 5e0f6b3bb80101046c3d90b004ef5e4a1b6f4e43d5608887363fd1224e06c04c

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

module AdminIt
  #
  module Controller
    def self.included(base)
      base.class_eval do
        include Pundit if AdminIt::Env.pundit?
        before_filter :authenticate_user!

        attr_reader :context
        helper_method :context, :resource
        helper AdminIt::Helpers
        helper AdminIt::Engine.routes.url_helpers

        if AdminIt::Env.pundit?
          collections = @resource.collections.map(&:context_name)
          after_action :verify_authorized, except: collections
          after_action :verify_policy_scoped, only: collections
        end
      end
    end

    def resource
      self.class.instance_variable_get(:@resource)
    end

    def redirect_to_default
      redirect_to(resource[resource.default_context].path)
    end

    private

    def load_context(context_class)
      @context = context_class.new(self)
      yield if block_given?
      layout = ['admin_it', params[:layout]].compact.join('_')
      unless performed?
        if layout == 'admin_it' && !request.query_parameters.empty?
          redirect_to request.path
        else
          render template: "admin_it/#{context.name}", layout: layout
        end
      end
      @context.save
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
admin_it-1.1.0 lib/admin_it/controller.rb