Sha256: 2f4fd62a8c25f5bc60120a9031e94066fa5b21813b6ba3f1577c53211cbf886d

Contents?: true

Size: 1017 Bytes

Versions: 48

Compression:

Stored size: 1017 Bytes

Contents

module Ddr::Auth
  # @abstract
  class AbstractAbility
    include CanCan::Ability

    class_attribute :ability_definitions
    self.ability_definitions = []

    # CanCan default aliases:
    #
    #   alias_action :index, :show, :to => :read
    #   alias_action :new, :to => :create
    #   alias_action :edit, :to => :update
    #
    class_attribute :exclude_default_aliases
    self.exclude_default_aliases = false

    attr_reader :auth_context

    delegate :anonymous?, :authenticated?, :user, :groups, :agents, :member_of?,
             :authorized_to_act_as_superuser?,
             to: :auth_context

    def initialize(auth_context)
      @auth_context = auth_context
      if exclude_default_aliases
        clear_aliased_actions
      end
      apply_ability_definitions
    end

    def cache
      @cache ||= {}
    end

    private

    def apply_ability_definitions
      ability_definitions.reduce(self, :apply)
    end

    def apply(ability_def)
      ability_def.call(self)
    end

  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
ddr-models-2.4.15 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.14 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.13 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.12 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.11 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.10 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.9 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.8 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.7 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.6 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.5 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.4 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.3 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.2 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.1 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.0 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.0.rc6 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.0.rc5 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.0.rc4 lib/ddr/auth/abstract_ability.rb
ddr-models-2.4.0.rc3 lib/ddr/auth/abstract_ability.rb