Spec-Zone.ru › Ruby on Rails 8.1

module ActiveRecord::Encryption::Contexts

ActiveRecord::Encryption использует контексты шифрования для настройки различных сущностей, применяемых для шифрования и расшифровки в данный момент времени.

По умолчанию библиотека использует контекст шифрования по умолчанию. Это Context, который изначально настраивается с помощью параметров config.active_record.encryption. Пользователи библиотеки могут определять вложенные контексты шифрования при выполнении блоков кода.

См. Context.

Открытые методы экземпляра

context () Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 62
def context
  self.current_custom_context || self.default_context
end

Возвращает текущий контекст. По умолчанию возвращается текущий контекст.

current_custom_context () Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 66
def current_custom_context
  self.custom_contexts&.last
end
protecting_encrypted_data (&block) Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 57
def protecting_encrypted_data(&block)
  with_encryption_context encryptor: ActiveRecord::Encryption::EncryptingOnlyEncryptor.new, frozen_encryption: true, &block
end

Выполняет переданный блок в контексте шифрования, в котором:

  • При чтении зашифрованного содержимого возвращается его шифротекст.

  • Запись зашифрованного содержимого завершится ошибкой.

reset_default_context () Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 70
def reset_default_context
  self.default_context = Context.new
end
with_encryption_context (properties) { || ... } Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 33
def with_encryption_context(properties)
  self.custom_contexts ||= []
  self.custom_contexts << default_context.dup
  properties.each do |key, value|
    self.current_custom_context.send("#{key}=", value)
  end

  yield
ensure
  self.custom_contexts.pop
end

Настраивает пользовательский контекст шифрования, который будет использоваться при выполнении переданного блока кода.

Поддерживается переопределение всех свойств, определённых в Context.

Пример:

ActiveRecord::Encryption.with_encryption_context(encryptor: ActiveRecord::Encryption::NullEncryptor.new) do
  ...
end

Encryption контексты могут быть вложенными.

without_encryption (&block) Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 49
def without_encryption(&block)
  with_encryption_context encryptor: ActiveRecord::Encryption::NullEncryptor.new, &block
end

Выполняет переданный блок в контексте шифрования, в котором шифрование отключено:

  • При чтении зашифрованного содержимого возвращается его шифротекст.

  • При записи зашифрованного содержимого записывается открытый текст.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API