Sha256: 1b3e33597d88a124a5b4962ccdbc4f3ac6ac39458621c70ba7c6ccf157f7d5a9

Contents?: true

Size: 1.47 KB

Versions: 7

Compression:

Stored size: 1.47 KB

Contents

module CanTango
  class PermitEngine < Engine
    class Factory
      include CanTango::Helpers::Debug

      attr_accessor :ability

      # creates the factory for the ability
      # note that the ability contains the roles and role groups of the user (or account)
      # @param [Permits::Ability] the ability
      def initialize ability
        @ability = ability
      end

      def build!
        debug "PermitEngine Factory: No permits could be built" if permits.empty?
        permits
      end

      # return hash of permits built, keyed by name of builder
      def permits
        @permits ||= builders.inject({}) do |permits, builder|
          debug "++ Permit Builder: #{builder_class builder}"
          built_permits = permits_built_with(builder)

          if built_permits
            debug "== Permits built: #{built_permits.size}"
            permits[builder] = built_permits
          end

          permits
        end
      end

      def permits_built_with builder
        create_builder(builder).build
      end

      def create_builder builder
        clazz = builder_class(builder)
        clazz.constantize.new(ability)
      end

      def builder_class builder
        return "CanTango::PermitEngine::Builder::SpecialPermits" if builder == :special
        "CanTango::Permits::#{builder.to_s.camelize}Permit::Builder"
      end

      def builders
        CanTango.config.permits.enabled
      end

      def options
        ability.options
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cantango-0.9.4.7 lib/cantango/permit_engine/factory.rb
cantango-0.9.4.6 lib/cantango/permit_engine/factory.rb
cantango-0.9.4.5 lib/cantango/permit_engine/factory.rb
cantango-0.9.4.3 lib/cantango/permit_engine/factory.rb
cantango-0.9.4.2 lib/cantango/permit_engine/factory.rb
cantango-0.9.4.1 lib/cantango/permit_engine/factory.rb
cantango-0.9.4 lib/cantango/permit_engine/factory.rb