Sha256: bf306eba26e99ae3f0f2f7f92eb6589145691fbae5e7bbc41b0b9d4fc6d3e7a5

Contents?: true

Size: 639 Bytes

Versions: 84

Compression:

Stored size: 639 Bytes

Contents

module Ddr::Auth
  class AbilityFactory

    private_class_method :new

    def self.call(user = nil, env = nil)
      new(user, env).call
    end

    attr_reader :auth_context

    delegate :anonymous?, :superuser?, to: :auth_context
    
    def initialize(user, env)
      @auth_context = AuthContextFactory.call(user, env)
    end

    def call
      if anonymous?
        AnonymousAbility.new(auth_context)
      elsif superuser?
        SuperuserAbility.new(auth_context)
      else
        default_ability.new(auth_context)
      end
    end

    def default_ability
      Ddr::Auth::default_ability.constantize
    end

  end
end

Version data entries

84 entries across 84 versions & 1 rubygems

Version Path
ddr-models-2.0.0.pre.4 lib/ddr/auth/ability_factory.rb
ddr-models-2.0.0.pre.3 lib/ddr/auth/ability_factory.rb
ddr-models-2.0.0.pre.2 lib/ddr/auth/ability_factory.rb
ddr-models-2.0.0.pre.1 lib/ddr/auth/ability_factory.rb