phi_attrs 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c95e0078a0816fa79591bab794e8c423d70d8792354cbb09cb69cda60b93d4b
4
- data.tar.gz: 7af031bbc1cc1aa2ba308dc778611b590faf33b4e572e9e264477dde4fb24ace
3
+ metadata.gz: 1cc2ab95144c51b9ce2322864983ff9302d65d3e585c8ced98f1fe3098761173
4
+ data.tar.gz: 377a9e45f0069b4817a9156a66969b3056553707ae0f6a61716c16cbdc978a8a
5
5
  SHA512:
6
- metadata.gz: a13b688097f56ad46044a7da0f91402565e582383e80f522f6ef3829fc75e677a5518a3190e261114713177ab6ab746783eb10bec4cc83215cf8089ca17cbc35
7
- data.tar.gz: 323f3337e8d687e5e8e781324fd284008344a9ee8c15ff737840b736908face774331b762783076ffd5bb9e37a150452e4d712129a4a30fc169a33edde3abec9
6
+ metadata.gz: 78aa212eceac4e6b0ef10289ac0517b3d9943add98550fcffbc374e9d3d773ab3395d0cfae792161b6793f05fd7a08347e60b76201a6c719954956c902396fb2
7
+ data.tar.gz: 8fed8925c193caf3c169dff50800766d0abd9b45e6dd652de31b93b8219a2c3d425ac111a9c4b8608fbbfbc23a2e038f13bda2d89004a65fa801eb15dfcdbb37
@@ -11,15 +11,14 @@ jobs:
11
11
  ruby: [2.5, 2.6, 2.7]
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v2
14
+ - uses: actions/checkout@v3
15
15
  - name: Set up Ruby ${{ matrix.ruby }}
16
- uses: actions/setup-ruby@v1
16
+ uses: ruby/setup-ruby@v1
17
17
  with:
18
18
  ruby-version: ${{ matrix.ruby }}
19
+ bundler-cache: true
19
20
  - name: Install dependencies
20
21
  run: |
21
- gem install bundler
22
- bundle install
23
22
  bundle exec appraisal install
24
23
  - name: Run rspec
25
24
  run: bundler exec appraisal rspec
@@ -11,18 +11,15 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v2
15
- - uses: actions/setup-ruby@v1
14
+ - uses: actions/checkout@v3
15
+ - uses: ruby/setup-ruby@v1
16
16
  with:
17
17
  ruby-version: '2.6'
18
- - name: Install dependencies
19
- run: |
20
- gem install bundler:2.1.4
21
- bundle install
18
+ bundler-cache: true
22
19
  - name: Release Gem
23
20
  if: contains(github.ref, 'refs/tags/v')
24
21
  uses: cadwallion/publish-rubygems-action@master
25
22
  env:
26
23
  GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
27
24
  RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
28
- RELEASE_COMMAND: bundle exec rake release
25
+ RELEASE_COMMAND: bundle exec rake release
data/README.md CHANGED
@@ -39,7 +39,7 @@ Or install it yourself as:
39
39
 
40
40
  ## Initialize
41
41
 
42
- Create an initializer to configure the PHI log file location.
42
+ Create an initializer to configure the PHI log file location. Log rotation can be configured with log_shift_age and log_shift_size (disabled by default).
43
43
 
44
44
  Example:
45
45
 
@@ -48,6 +48,8 @@ Example:
48
48
  ```ruby
49
49
  PhiAttrs.configure do |conf|
50
50
  conf.log_path = Rails.root.join("log", "phi_access_#{Rails.env}.log")
51
+ conf.log_shift_age = 10 # how many logs to keep of `log_shift_size` or frequency to rotate ('daily', 'weekly' or 'monthly'). Disable rotation with 0 (default).
52
+ conf.log_shift_size = 100.megabytes # size in bytes when using `log_shift_age` as a number
51
53
  end
52
54
  ```
53
55
 
@@ -275,7 +277,7 @@ There is also a block syntax of `disallow_phi` for temporary suppression phi acc
275
277
  ```ruby
276
278
  patient = PatientInfo.find(params[:id])
277
279
  patient.allow_phi!('allowed_user@example.com', 'Display Patient Data')
278
- patient.diallow_phi do
280
+ patient.disallow_phi do
279
281
  @data = patient.to_json # PHIAccessException
280
282
  end # Access is allowed again beyond this point
281
283
  ```
@@ -284,7 +286,7 @@ or a block level on a class:
284
286
 
285
287
  ```ruby
286
288
  PatientInfo.allow_phi!('allowed_user@example.com', 'Display Patient Data')
287
- PatientInfo.diallow_phi do
289
+ PatientInfo.disallow_phi do
288
290
  @data = PatientInfo.find(params[:id]).to_json # PHIAccessException
289
291
  end # Access is allowed again beyond this point
290
292
  ```
@@ -391,6 +393,27 @@ person_phi.allow_phi(nil, "Because I felt like looking at PHI") do
391
393
  end
392
394
  ```
393
395
 
396
+ ### Request UUID
397
+
398
+ It can be helpful to include the Rails request UUID to match up your general application
399
+ logs to your PHI access logs. The following snippet will prepend your PHI access logs
400
+ with the request UUID.
401
+
402
+ #### `app/controllers/application_controller.rb`
403
+
404
+ ```ruby
405
+ around_action :tag_phi_log_with_request_id
406
+
407
+ ...
408
+
409
+ private
410
+
411
+ def tag_phi_log_with_request_id
412
+ PhiAttrs::Logger.logger.tagged("Request ID: #{request.uuid}") do
413
+ yield
414
+ end
415
+ end
416
+ ```
394
417
  ## Best Practices
395
418
 
396
419
  * Mix and matching `instance`, `class` and `block` syntaxes for allowing/denying PHI is not recommended.
@@ -2,6 +2,8 @@
2
2
 
3
3
  module PhiAttrs
4
4
  @@log_path = nil
5
+ @@log_shift_age = 0 # Default to disabled
6
+ @@log_shift_size = 1048576 # 1MB - Default from logger class
5
7
  @@current_user_method = nil
6
8
  @@translation_prefix = 'phi'
7
9
 
@@ -17,6 +19,22 @@ module PhiAttrs
17
19
  @@log_path = value
18
20
  end
19
21
 
22
+ def self.log_shift_age
23
+ @@log_shift_age
24
+ end
25
+
26
+ def self.log_shift_age=(value)
27
+ @@log_shift_age = value
28
+ end
29
+
30
+ def self.log_shift_size
31
+ @@log_shift_size
32
+ end
33
+
34
+ def self.log_shift_size=(value)
35
+ @@log_shift_size = value
36
+ end
37
+
20
38
  def self.translation_prefix
21
39
  @@translation_prefix
22
40
  end
@@ -7,7 +7,7 @@ module PhiAttrs
7
7
  class << self
8
8
  def logger
9
9
  unless @logger
10
- logger = ActiveSupport::Logger.new(PhiAttrs.log_path)
10
+ logger = ActiveSupport::Logger.new(PhiAttrs.log_path, PhiAttrs.log_shift_age, PhiAttrs.log_shift_size)
11
11
  logger.formatter = Formatter.new
12
12
  @logger = ActiveSupport::TaggedLogging.new(logger)
13
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhiAttrs
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phi_attrs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wyatt Kirby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-20 00:00:00.000000000 Z
11
+ date: 2022-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -285,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
285
285
  - !ruby/object:Gem::Version
286
286
  version: '0'
287
287
  requirements: []
288
- rubygems_version: 3.0.3
288
+ rubygems_version: 3.3.26
289
289
  signing_key:
290
290
  specification_version: 4
291
291
  summary: PHI Access Restriction & Logging for Rails ActiveRecord