Sha256: 745d0958ce89f85471a57b528af3047aaec6d79fbf7979ecf27b739b8fdad860

Contents?: true

Size: 1.32 KB

Versions: 35

Compression:

Stored size: 1.32 KB

Contents

class Card
  module Auth
    # mechanism for assuming permissions of another user.
    module Proxy
      # operate with the permissions of another "proxy" user
      def as given_user
        tmp_id   = @as_id
        tmp_card = @as_card

        @as_id   = get_user_id(given_user)
        @as_card = nil
        # we could go ahead and set as_card if given a card...

        @current_id = @as_id if @current_id.nil?

        return unless block_given?
        yield
      ensure
        if block_given?
          @as_id   = tmp_id
          @as_card = tmp_card
        end
      end

      # operate with the permissions of WagnBot (administrator)
      def as_bot &block
        as Card::WagnBotID, &block
      end

      # id of proxy user
      # @return [Integer]
      def as_id
        @as_id || current_id
      end

      # proxy user card
      # @return [Card]
      def as_card
        if @as_card && @as_card.id == as_id
          @as_card
        else
          @as_card = Card[as_id]
        end
      end

      # get card id from args of unknown type
      # @todo replace with general mechanism, eg #quick_fetch
      def get_user_id user
        case user
        when NilClass then nil
        when Card     then user.id
        when Integer   then user
        else Card.fetch_id(user)
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
card-1.96.8 lib/card/auth/proxy.rb
card-1.96.7 lib/card/auth/proxy.rb
card-1.96.6 lib/card/auth/proxy.rb
card-1.96.5 lib/card/auth/proxy.rb
card-1.96.4 lib/card/auth/proxy.rb
card-1.96.3 lib/card/auth/proxy.rb
card-1.96.2 lib/card/auth/proxy.rb
card-1.96.1 lib/card/auth/proxy.rb
card-1.96.0 lib/card/auth/proxy.rb
card-1.95.3 lib/card/auth/proxy.rb
card-1.95.2 lib/card/auth/proxy.rb
card-1.95.1 lib/card/auth/proxy.rb
card-1.95.0 lib/card/auth/proxy.rb
card-1.94.1 lib/card/auth/proxy.rb
card-1.94.0 lib/card/auth/proxy.rb
card-1.93.13 lib/card/auth/proxy.rb
card-1.93.12 lib/card/auth/proxy.rb
card-1.93.11 lib/card/auth/proxy.rb
card-1.93.10 lib/card/auth/proxy.rb
card-1.93.9 lib/card/auth/proxy.rb