Sha256: 87aecfd5b4c3f8113047b1a091931db4f5e1a021982b458bf6e298ac96b0fed8

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require 'adeia/controller_resource'

module Adeia

  module ControllerMethods

    module ClassMethods

      def load_and_authorize(**args)
        ControllerResource.add_before_filter(self, :load_resoure_or_records_and_authorize, **args)
      end

    end

    def self.included(base)
      base.extend ClassMethods
      base.helper_method :can?
    end

    def load_and_authorize!(**args)
      controller_resource = ControllerResource.new(self, **args)
      resource = controller_resource.load_resource
      controller_resource.authorize!
      return resource
    end

    def authorize_and_load_records!(**args)
      controller_resource = ControllerResource.new(self, **args)
      controller_resource.authorize!
      return controller_resource.load_records
    end

    def authorize!(**args)
      ControllerResource.new(self, **args).authorize!
    end

    def can?(action, controller=nil, resource=nil)
      args = { action: action, controller: controller, resource: resource }
      ControllerResource.new(self, **args).can?
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
adeia-0.1.0 lib/adeia/controller_methods.rb