Class: DoorMat::AttrAsymmetricStore::AttrAsymmetricStoreWrapper
- Inherits:
-
Object
- Object
- DoorMat::AttrAsymmetricStore::AttrAsymmetricStoreWrapper
- Defined in:
- lib/door_mat/attr_asymmetric_store.rb
Instance Method Summary collapse
- #after_find(record) ⇒ Object
- #around_save(record) ⇒ Object
-
#initialize(attribute, actor_column) ⇒ AttrAsymmetricStoreWrapper
constructor
A new instance of AttrAsymmetricStoreWrapper.
Constructor Details
#initialize(attribute, actor_column) ⇒ AttrAsymmetricStoreWrapper
Returns a new instance of AttrAsymmetricStoreWrapper.
5 6 7 8 |
# File 'lib/door_mat/attr_asymmetric_store.rb', line 5 def initialize(attribute, actor_column) @attribute = attribute @actor_column = actor_column end |
Instance Method Details
#after_find(record) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/door_mat/attr_asymmetric_store.rb', line 10 def after_find(record) return if DoorMat::Crypto.current_skip_crypto_callback.skip? # leave attribute as-is if blank or the actor is not set encrypted_attribute = record.send("#{@attribute}") actor = record.send("#{@actor_column}") return if encrypted_attribute.blank? || actor.blank? clear_attribute = nil DoorMat::Session.current_session.autoload_sesion_for(actor) DoorMat::Session.current_session.with_session_for_actor(actor) do |session| clear_attribute = actor.decrypt_shared_key(encrypted_attribute, session) end if clear_attribute.nil? clear_attribute = '[ENCRYPTED SHARED KEY]' end record.send("#{@attribute}=", clear_attribute) DoorMat.configuration.logger.debug "DEBUG: Decrypt #{@attribute}: #{encrypted_attribute} -> #{clear_attribute}" if Rails.env.development? end |
#around_save(record) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/door_mat/attr_asymmetric_store.rb', line 33 def around_save(record) return yield if DoorMat::Crypto.current_skip_crypto_callback.skip? clear_attribute = record.send("#{@attribute}") actor = record.send("#{@actor_column}") # leave attribute as-is if blank or the actor is not set if clear_attribute.blank? || actor.blank? yield else encrypted_attribute = actor.encrypt_shared_key(clear_attribute) DoorMat.configuration.logger.debug "DEBUG: Encrypt #{@attribute}: #{clear_attribute} -> #{encrypted_attribute}" if Rails.env.development? record.send("#{@attribute}=", encrypted_attribute) yield record.send("#{@attribute}=", clear_attribute) DoorMat.configuration.logger.debug "DEBUG: Decrypt #{@attribute}: #{encrypted_attribute} -> #{clear_attribute}" if Rails.env.development? end end |