Sha256: f9acebb0570303d7e5772160438c57cb1a8320fbf94b7b674da4e8807bcb9504

Contents?: true

Size: 712 Bytes

Versions: 2

Compression:

Stored size: 712 Bytes

Contents

# frozen_string_literal: true

require 'dry/monads/all'
require 'clean_architecture/interfaces/strategy'

module CleanArchitecture
  module Strategies
    class ActorGetsAuthorizedThenDoesWork
      extend Forwardable

      implements_interface Interfaces::Strategy

      def initialize(authorization_check, sub_strategy)
        @authorization_check = authorization_check
        @sub_strategy = sub_strategy
      end

      def_delegator :@sub_strategy, :parameters

      def result
        @result ||= begin
          if @authorization_check.authorized?
            @sub_strategy.result
          else
            Dry::Monads::Failure('Unauthorized')
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clean-architecture-0.1.0 lib/clean_architecture/strategies/actor_gets_authorized_then_does_work.rb
clean-architecture-0.0.5 lib/clean_architecture/strategies/actor_gets_authorized_then_does_work.rb