Sha256: 8fd1cc61a39b356775980fb40f182118973b89f816726463d89154ef8a69165c

Contents?: true

Size: 789 Bytes

Versions: 1

Compression:

Stored size: 789 Bytes

Contents

# frozen_string_literal: true

module Masks
  module Credentials
    # Checks :key given a valid Authorization header.
    class Key < Masks::Credential
      checks :key

      attribute :accessed

      def lookup
        secret = session.request.authorization&.split&.last
        key = session.config.find_key(session, secret:)

        return unless key

        session.extras(key:)
        session.scoped = key
        self.accessed = true
        key.actor
      end

      def maskup
        key = session.extra(:key)

        if key&.actor == session&.actor && session.scoped == key
          approve!
        else
          deny!
        end
      end

      def backup
        session.extra(:key).touch(:accessed_at) if session&.passed? && accessed
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
masks-0.4.0 app/models/masks/credentials/key.rb