booth 0.1.0 → 0.1.1

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: 825454f7f3a05334b3fa0ae5dffa808debf032381a9eca3ecc33c328cd686d30
4
- data.tar.gz: 961e43f55afaa1a41ac5234f56a8848016e89a0d3d5f2a4a3f4a992434894bad
3
+ metadata.gz: dcf27bfc6c4f636766ee1764457f067d7a5c55d081f192735514ba2580e7a5db
4
+ data.tar.gz: 67b1e4f7bb2dbebfca56ffdea115eb1b035bb894f8a2b49ef3afd55312c79211
5
5
  SHA512:
6
- metadata.gz: dfd4cfc102db64fcc7d5c5654565928c095d0075ca743a8bc2ac1ade00e347b4342580a00d4e755ca082f9762f921de3f8405ed55dc8eaa5e86ff85214094207
7
- data.tar.gz: ca078c52a93db8f77d6c46e48c81cee5ca34228606ed72bdad3b0156dc677df5979d367fb47b9f17796cb441449541c49494dff193f0217418861c25a982e4d3
6
+ metadata.gz: 65900f930895224c41eb582731d43b7faad4780a92e4bd319d6a692e4148c6a733620406fa3f295d059e0661c44304a45b87f695e623e48230ef5af3b89c6e4b
7
+ data.tar.gz: c9301b3babf34c6e40b2dc23e2501d2fc0c3d543872fc37614771b0c7fbd75f2d6905fab4a0a4a07d88dc01590fc83083409bf4e070f76326f5ff98f6995ca52
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # main
2
2
 
3
+ # 0.1.1
4
+
5
+ - Replace `Booth::Adminland.issue_incognito_token` with `generate_incognito_secret_key`
6
+
3
7
  # 0.0.10
4
8
 
5
9
  - Schema: add `booth_sessions.incognito_secret_key` (string, unique) and `booth_sessions.impersonator_session_id` (uuid, FK to self)
@@ -14,6 +14,7 @@ module Booth
14
14
  def call
15
15
  do_check_impersonator_logged_in
16
16
  .on_success { do_find_target_credential }
17
+ .on_success { do_revoke_existing_incognito }
17
18
  .on_success { do_create_session }
18
19
  .on_success { do_audit }
19
20
  .on_success { do_return_key }
@@ -42,6 +43,25 @@ module Booth
42
43
  Tron.success :target_credential_found
43
44
  end
44
45
 
46
+ # incognito_credential_id has a unique index — only one active incognito
47
+ # per impersonator. Revoke any existing one before creating a new session.
48
+ def do_revoke_existing_incognito
49
+ existing = ::Booth::Models::Session.find_by(
50
+ incognito_credential_id: impersonator_credential_id,
51
+ revoked_at: nil,
52
+ )
53
+
54
+ return Tron.success(:no_existing_incognito) unless existing
55
+
56
+ log { "Revoking existing incognito session ##{existing.id}" }
57
+ existing.update!(
58
+ incognito_credential_id: nil,
59
+ revoked_at: Time.current,
60
+ revoke_reason: :incognito_replaced,
61
+ )
62
+ Tron.success :existing_incognito_revoked
63
+ end
64
+
45
65
  def do_create_session
46
66
  self.secret_key = SecureRandom.hex(32)
47
67
 
data/lib/booth/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Booth
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: booth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - halo