Module: PhiAttrs::PhiRecord
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/phi_attrs/phi_record.rb
Instance Method Summary collapse
- #__phi_wrapped_methods ⇒ Object
- #allow_phi!(user_id, reason) ⇒ Object
- #disallow_phi! ⇒ Object
- #phi_access_reason ⇒ Object
- #phi_allowed? ⇒ Boolean
- #phi_allowed_by ⇒ Object
- #wrap_phi ⇒ Object
Instance Method Details
#__phi_wrapped_methods ⇒ Object
61 62 63 |
# File 'lib/phi_attrs/phi_record.rb', line 61 def __phi_wrapped_methods attribute_names - self.class.__phi_exclude_methods.to_a + self.class.__phi_include_methods.to_a - [self.class.primary_key] end |
#allow_phi!(user_id, reason) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/phi_attrs/phi_record.rb', line 65 def allow_phi!(user_id, reason) PhiAttrs::Logger.tagged( *phi_log_keys ) do @__phi_access_allowed = true @__phi_user_id = user_id @__phi_access_reason = reason PhiAttrs::Logger.info("PHI Access Enabled for '#{user_id}': #{reason}") end end |
#disallow_phi! ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'lib/phi_attrs/phi_record.rb', line 75 def disallow_phi! PhiAttrs::Logger.tagged(*phi_log_keys) do @__phi_access_allowed = false @__phi_user_id = nil @__phi_access_reason = nil PhiAttrs::Logger.info('PHI access disabled') end end |
#phi_access_reason ⇒ Object
93 94 95 |
# File 'lib/phi_attrs/phi_record.rb', line 93 def phi_access_reason @__phi_access_reason || RequestStore.store.dig(:phi_access, self.class.name, :reason) end |
#phi_allowed? ⇒ Boolean
85 86 87 |
# File 'lib/phi_attrs/phi_record.rb', line 85 def phi_allowed? @__phi_access_allowed || RequestStore.store.dig(:phi_access, self.class.name, :phi_access_allowed) end |
#phi_allowed_by ⇒ Object
89 90 91 |
# File 'lib/phi_attrs/phi_record.rb', line 89 def phi_allowed_by @__phi_user_id || RequestStore.store.dig(:phi_access, self.class.name, :user_id) end |
#wrap_phi ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/phi_attrs/phi_record.rb', line 52 def wrap_phi # Disable PHI access by default @__phi_access_allowed = false @__phi_access_logged = false # Wrap attributes with PHI Logger and Access Control __phi_wrapped_methods.each { |attr| phi_wrap_method(attr) } end |