module ActiveRecord::Encryption::Contexts
ActiveRecord::Encryption использует контексты шифрования для настройки различных сущностей, применяемых для шифрования и расшифровки в данный момент времени.
По умолчанию библиотека использует контекст шифрования по умолчанию. Это Context, который изначально настраивается с помощью параметров config.active_record.encryption. Пользователи библиотеки могут определять вложенные контексты шифрования при выполнении блоков кода.
См. Context.
Открытые методы экземпляра
# File activerecord/lib/active_record/encryption/contexts.rb, line 62 def context self.current_custom_context || self.default_context end
Возвращает текущий контекст. По умолчанию возвращается текущий контекст.
# File activerecord/lib/active_record/encryption/contexts.rb, line 66 def current_custom_context self.custom_contexts&.last end
# 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
Выполняет переданный блок в контексте шифрования, в котором:
-
При чтении зашифрованного содержимого возвращается его шифротекст.
-
Запись зашифрованного содержимого завершится ошибкой.
# File activerecord/lib/active_record/encryption/contexts.rb, line 70 def reset_default_context self.default_context = Context.new end
# 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 контексты могут быть вложенными.
# 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.