Sha256: 9de223b541745c55fad339b971d4caf489cec05ca6e235d59f34951768add1d0

Contents?: true

Size: 1.03 KB

Versions: 42

Compression:

Stored size: 1.03 KB

Contents

require 'cancan'

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?, :metadata_manager?,
             :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

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

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

  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
ddr-core-1.16.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.15.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.14.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.13.2 lib/ddr/auth/abstract_ability.rb
ddr-core-1.13.1 lib/ddr/auth/abstract_ability.rb
ddr-core-1.13.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.12.2 lib/ddr/auth/abstract_ability.rb
ddr-core-1.12.1 lib/ddr/auth/abstract_ability.rb
ddr-core-1.12.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.11.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.10.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.9.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.8.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.7.0 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.6 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.5 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.4 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.3 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.2 lib/ddr/auth/abstract_ability.rb
ddr-core-1.6.1 lib/ddr/auth/abstract_ability.rb