foobara-auth 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: 868223dc8a31d7809c6171e29ad115f95c0ac94492a0c3c0bd796018c7bb7381
4
- data.tar.gz: 7fe650602a7e14240beab2bdbb1a38f9d756947fd5e8c4fe77a665fc00abed8d
3
+ metadata.gz: 1a40375ebe8e9f9689ea358e55c4e8e00122cd84c4ddcff9a44ad0fbdd9f8138
4
+ data.tar.gz: 0a79985c2914d66cff7fc4c0f8325757b3ff4863667bcc5f957cda868063d17d
5
5
  SHA512:
6
- metadata.gz: 1779710b7f67ab3982b4c06875bc60c91068efd1e1ad0a7393c0da3a881006b5a725ffdee15233d8e5cf6c1d376ec3fdacb5ad944c4cf5e99b61bc1878f65ae1
7
- data.tar.gz: 124db35580d5409e11d59a418db86c5bd630601ef465f49ee9c21320ffb3a5c3230f8b71fe734efa341fa1439e58a15509cd0945e8ae38ed40a09a20dc18f62a
6
+ metadata.gz: 65b59bfb16f16c5ffb8c03c795977031be02d5458c472571c2781ba6b3e3173a8397c09917781a29b8696f8c7f4f3c3992030d764586cfdfbd024db55c25657c
7
+ data.tar.gz: 7b887fc6f7cc7945fd04d65b4f43d31a6f5191004f775edb863e62adf9232f921de75c075173a5392e1842e917d94450db0cee3cf1fa5a9862f81e40db3db0eb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.1.1] - 2025-10-02
2
+
3
+ - Add DeleteApiKey command
4
+ - Add GetApiKeySummary command
5
+
1
6
  ## [0.1.0] - 2025-08-22
2
7
 
3
8
  - Mark as compatible with Foobara 0.1.0
@@ -0,0 +1,46 @@
1
+ require "securerandom"
2
+ require "base64"
3
+
4
+ require_relative "build_secret"
5
+ require_relative "create_token"
6
+
7
+ module Foobara
8
+ module Auth
9
+ class DeleteApiKey < Foobara::Command
10
+ inputs do
11
+ token Types::Token, :required
12
+ end
13
+
14
+ def execute
15
+ remove_api_key_from_user
16
+ delete_token
17
+
18
+ nil
19
+ end
20
+
21
+ def load_records
22
+ super
23
+ self.user = Types::User.that_owns(token, :api_keys)
24
+ end
25
+
26
+ attr_accessor :user
27
+
28
+ # should Foobara do this automatically? Or at least support it? Similar to CASCADE in SQL
29
+ def remove_api_key_from_user
30
+ api_keys = user.api_keys
31
+
32
+ if api_keys.include?(token)
33
+ user.api_keys = api_keys - [token]
34
+ else
35
+ # :nocov:
36
+ raise "User has no such api key"
37
+ # :nocov:
38
+ end
39
+ end
40
+
41
+ def delete_token
42
+ token.hard_delete!
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,30 @@
1
+ module Foobara
2
+ module Auth
3
+ class GetApiKeySummaries < Foobara::Command
4
+ inputs do
5
+ user Types::User, :required
6
+ end
7
+
8
+ result [Types::ApiKeySummary]
9
+
10
+ def execute
11
+ build_summaries
12
+
13
+ summaries
14
+ end
15
+
16
+ attr_accessor :api_keys, :summaries
17
+
18
+ def build_summaries
19
+ self.summaries = user.api_keys.map do |api_key|
20
+ Types::ApiKeySummary.new(
21
+ token_id: api_key.id,
22
+ state: api_key.state,
23
+ expires_at: api_key.expires_at,
24
+ created_at: api_key.created_at
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ module Foobara
2
+ module Auth
3
+ module Types
4
+ class ApiKeySummary < Foobara::Model
5
+ attributes do
6
+ token_id :string, :required
7
+ state :token_state, :required, default: :needs_approval
8
+ expires_at :datetime, :allow_nil
9
+ created_at :datetime, :required
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-auth
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
  - Miles Georgi
@@ -79,13 +79,16 @@ files:
79
79
  - src/create_role.rb
80
80
  - src/create_token.rb
81
81
  - src/create_user.rb
82
+ - src/delete_api_key.rb
82
83
  - src/find_user.rb
84
+ - src/get_api_key_summaries.rb
83
85
  - src/login.rb
84
86
  - src/logout.rb
85
87
  - src/refresh_login.rb
86
88
  - src/register.rb
87
89
  - src/reset_password.rb
88
90
  - src/set_password.rb
91
+ - src/types/api_key_summary.rb
89
92
  - src/types/role.rb
90
93
  - src/types/secret.rb
91
94
  - src/types/token.rb