eventsimple 2.5.0 → 2.6.0

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: c49589e4a0e45a9149f99568927f76b0d17b1e6b22f73bb079edd1b27ea856cd
4
- data.tar.gz: 95794663749d9759b1ddbb6867c6774ffc8df60a30449c408958fb68f7160dc3
3
+ metadata.gz: 64f15c989c426a973f8d1689e098c0ea7947af521742bb8e70badf2b705ed162
4
+ data.tar.gz: 48de4621966b60aa7328e4eb51c383d2cb65a5862ce8301d9d754eca6cbc0d3e
5
5
  SHA512:
6
- metadata.gz: c134a1dfdf5e16e888b2c9018756819417205f924609b095001cbd2802e1c97e27f0268b93c6eada4c036162cf4086b33c72127c2539d9fcd085cca7ca11b24f
7
- data.tar.gz: d8edcf526493068375fc706d04180f206c73fcb4fc57848e1fc6c5cabfcb09690235f3550a5f7b6ac67f230e94deb56f6a5a91097a43476660f8e5b4aabfb84f
6
+ metadata.gz: 6c0a3945fd3e5dc70798933b0058d91c79cea258ecbb895917e6f93a9d6e3cf404bd356f36332d8e072b2dcb7a4bdbb32b560696af4266e592bf34e115200904
7
+ data.tar.gz: d1f53a2cbdbe9f3c951368d52300db2e3fc692f2b9e76d39c179d8f37675e5ff6ff7735643e480b1b68c748bdc2cd8a6c0a2cbbd9e330827f2078b3b253ab5d4
data/CHANGELOG.md CHANGED
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 2.6.0 - 2026-05-01
10
+ ### Added
11
+ - `Eventsimple::Types::*.encrypted` now accepts an optional
12
+ `key_provider:` keyword. When supplied, encryption/decryption goes
13
+ through that `ActiveRecord::Encryption::KeyProvider` instead of the
14
+ default keyed off `config.active_record.encryption.primary_key`.
15
+ Existing call sites (no `key_provider:`) keep using the global
16
+ config. Lets a single Rails app encrypt different event attributes
17
+ against different `KeyProvider`s — e.g. when collapsing a
18
+ microservice that used its own primary key (and possibly its own
19
+ derivation salt) into a host app whose globals are already used for
20
+ its own encrypted events.
21
+
9
22
  ## 2.5.0 - 2026-04-26
10
23
  ### Added
11
24
  - Entities and events now raise `ActiveRecord::ReadOnlyRecord` when persistence methods that bypass ActiveRecord's built-in readonly check are invoked (`delete`, `update_column(s)`, `update_attribute(!)`, `touch`, `toggle!`, `increment!`, `decrement!`). Relation-level bulk SQL (`insert` / `insert_all` / `upsert` / `upsert_all` / `update_all` / `delete_all` / `touch_all`) is guarded the same way.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eventsimple (2.5.0)
4
+ eventsimple (2.6.0)
5
5
  concurrent-ruby (>= 1.2.3)
6
6
  dry-struct (>= 1.8.0)
7
7
  dry-types (>= 1.7.0)
@@ -458,7 +458,7 @@ CHECKSUMS
458
458
  dry-types (1.9.0) sha256=7b656fe0a78d2432500ae1f29fefd6762f5a032ca7000e4f36bc111453d45d4d
459
459
  erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
460
460
  erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
461
- eventsimple (2.5.0)
461
+ eventsimple (2.6.0)
462
462
  factory_bot (6.5.6) sha256=12beb373214dccc086a7a63763d6718c49769d5606f0501e0a4442676917e077
463
463
  factory_bot_rails (6.5.1) sha256=d3cc4851eae4dea8a665ec4a4516895045e710554d2b5ac9e68b94d351bc6d68
464
464
  ffi (1.17.3-aarch64-linux-gnu) sha256=28ad573df26560f0aedd8a90c3371279a0b2bd0b4e834b16a2baa10bd7a97068
@@ -9,16 +9,17 @@ module Eventsimple
9
9
  include Dry::Types::Decorator
10
10
  include Dry::Types::Builder
11
11
 
12
- def initialize(type, **options)
12
+ def initialize(type, key_provider: nil, **options)
13
13
  super
14
14
  @type = type
15
+ @key_provider = key_provider
15
16
  freeze
16
17
  end
17
18
 
18
19
  def meta(data = nil)
19
20
  return { eventsimple: true } if data.nil?
20
21
 
21
- self.class.new(@type.meta(data))
22
+ self.class.new(@type.meta(data), key_provider: @key_provider)
22
23
  end
23
24
 
24
25
  def encrypt(value)
@@ -26,9 +27,13 @@ module Eventsimple
26
27
  return value if value == '' || (value.is_a?(::String) && value.blank?)
27
28
 
28
29
  string_value = serialize_value(value)
29
- return string_value if ActiveRecord::Encryption::Encryptor.new.encrypted?(string_value)
30
+ return string_value if encryptor.encrypted?(string_value)
30
31
 
31
- ActiveRecord::Encryption::Encryptor.new.encrypt(string_value)
32
+ if @key_provider
33
+ encryptor.encrypt(string_value, key_provider: @key_provider)
34
+ else
35
+ encryptor.encrypt(string_value)
36
+ end
32
37
  end
33
38
 
34
39
  def decrypt(value)
@@ -36,7 +41,11 @@ module Eventsimple
36
41
  return value if value == '' || (value.is_a?(::String) && value.blank?)
37
42
 
38
43
  decrypted = begin
39
- ActiveRecord::Encryption::Encryptor.new.decrypt(value)
44
+ if @key_provider
45
+ encryptor.decrypt(value, key_provider: @key_provider)
46
+ else
47
+ encryptor.decrypt(value)
48
+ end
40
49
  rescue StandardError
41
50
  return value # Return original if decryption fails
42
51
  end
@@ -46,6 +55,10 @@ module Eventsimple
46
55
 
47
56
  private
48
57
 
58
+ def encryptor
59
+ ActiveRecord::Encryption::Encryptor.new
60
+ end
61
+
49
62
  def serialize_value(value)
50
63
  case value
51
64
  when Array, Hash
@@ -26,12 +26,12 @@ module Eventsimple
26
26
  end
27
27
  end
28
28
 
29
- def encrypted
29
+ def encrypted(key_provider: nil)
30
30
  if respond_to?(:name) && name.to_s.include?('TrueClass') && name.to_s.include?('FalseClass')
31
31
  raise ArgumentError, 'Bool type does not support encryption'
32
32
  end
33
33
 
34
- EncryptedType.new(self)
34
+ EncryptedType.new(self, key_provider: key_provider)
35
35
  end
36
36
  end
37
37
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Eventsimple
4
- VERSION = '2.5.0'
4
+ VERSION = '2.6.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventsimple
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zulfiqar Ali