foobara-auth 0.0.9 → 0.0.10

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: 625eea5256db4cac1d98cb6b0483b8cbc9c47d91225f0f0736581df8a5a1636c
4
- data.tar.gz: 0a51402e5ec2ce711ad7c62ef18aadbe23ff03f2ecb775516be35514e78ef89f
3
+ metadata.gz: 45cdb3b28235c09c136eb81a09662517dd017afef86cb5fd11b1c966a264685d
4
+ data.tar.gz: 65b323560c3469fa6b1c29e20d39f4ecf4c6e42011da3a7244876863f87057ab
5
5
  SHA512:
6
- metadata.gz: 922de34a2a3343f55152a5d754b0e6a0c1b7e97bc868891e607018f73dcb8aec5dbee9408e3886a100057764de42039676204b5ffac48d2377e2ad5af777695f
7
- data.tar.gz: 056a01756020a541633ea7467792079f8841c4c8135f7d84054efbab62c0360888b61e9ddf817c8ad67af4ef7a61e9feefae60e348d7c95cbfd0087a2d31c35f
6
+ metadata.gz: 48db1658d6fa78ae0cfe733c7bb58288519399311007851d03c5253f2ebd44f089027820f788c1bfe7af012372520639a56594471d6f50269e75e75c47c884a7
7
+ data.tar.gz: c6c486c5f4a408177e6a534169bea9d0a77068d8208ed99f5c4217ca37d6f247ffc00743041ff4306f858c5963592ebf9bbd857b6422412a8618cb4157d29df6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.0.10] - 2025-04-28
2
+
3
+ - Add AuthenticateWithApiKey command
4
+
1
5
  ## [0.0.9] - 2025-04-22
2
6
 
3
7
  - Handle malformed jwt tokens
@@ -0,0 +1,59 @@
1
+ require_relative "verify_token"
2
+
3
+ module Foobara
4
+ module Auth
5
+ class AuthenticateWithApiKey < Foobara::Command
6
+ class InvalidApiKeyError < Foobara::RuntimeError
7
+ context api_key_id: :string
8
+ message "Invalid api key"
9
+ end
10
+
11
+ depends_on VerifyToken
12
+ depends_on_entities Types::Token
13
+
14
+ inputs do
15
+ api_key :string, :required, :sensitive
16
+ access_token_ttl :integer, default: 30 * 60
17
+ api_key_ttl :integer, default: 7 * 24 * 60 * 60
18
+ end
19
+
20
+ result [Types::User, Types::Token]
21
+
22
+ def execute
23
+ determine_api_key_id_and_secret
24
+ load_api_key_record
25
+ verify_api_key
26
+
27
+ load_user
28
+
29
+ user_and_credential
30
+ end
31
+
32
+ attr_accessor :expires_at, :api_key_record, :api_key_id, :api_key_secret, :user
33
+
34
+ def determine_api_key_id_and_secret
35
+ self.api_key_id, self.api_key_secret = api_key.split("_")
36
+ end
37
+
38
+ def load_api_key_record
39
+ self.api_key_record = Types::Token.load(api_key_id)
40
+ end
41
+
42
+ def verify_api_key
43
+ valid = run_subcommand!(VerifyToken, token_string: api_key)
44
+
45
+ unless valid[:verified]
46
+ add_runtime_error(InvalidApiKeyError.new(context: { api_key_id: }))
47
+ end
48
+ end
49
+
50
+ def load_user
51
+ self.user ||= Types::User.that_owns(api_key_record, "api_keys")
52
+ end
53
+
54
+ def user_and_credential
55
+ [user, api_key_record]
56
+ end
57
+ end
58
+ end
59
+ end
data/src/refresh_login.rb CHANGED
@@ -6,11 +6,6 @@ module Foobara
6
6
  message "Invalid refresh token"
7
7
  end
8
8
 
9
- class RefreshTokenNotOwnedByUser < Foobara::RuntimeError
10
- context refresh_token_id: :string
11
- message "This refresh token is not owned by this user"
12
- end
13
-
14
9
  depends_on CreateRefreshToken, VerifyToken, BuildAccessToken
15
10
  depends_on_entities Types::Token
16
11
 
@@ -32,6 +27,8 @@ module Foobara
32
27
  # Delete it instead maybe?
33
28
  mark_refresh_token_as_used
34
29
 
30
+ load_user
31
+
35
32
  generate_access_token
36
33
  generate_new_refresh_token
37
34
 
@@ -39,7 +36,7 @@ module Foobara
39
36
  end
40
37
 
41
38
  attr_accessor :access_token, :new_refresh_token, :expires_at, :refresh_token_record,
42
- :refresh_token_id, :refresh_token_secret
39
+ :refresh_token_id, :refresh_token_secret, :user
43
40
 
44
41
  def determine_refresh_token_id_and_secret
45
42
  self.refresh_token_id, self.refresh_token_secret = refresh_token.split("_")
@@ -65,8 +62,8 @@ module Foobara
65
62
  self.access_token = run_subcommand!(BuildAccessToken, user:, token_ttl: access_token_ttl)
66
63
  end
67
64
 
68
- def user
69
- @user ||= Types::User.that_owns(refresh_token_record, "refresh_tokens")
65
+ def load_user
66
+ self.user ||= Types::User.that_owns(refresh_token_record, "refresh_tokens")
70
67
  end
71
68
 
72
69
  def generate_new_refresh_token
data/src/register.rb CHANGED
@@ -2,6 +2,7 @@ require_relative "types/user"
2
2
 
3
3
  module Foobara
4
4
  module Auth
5
+ # TODO: should raise error if username or email already in use!
5
6
  class Register < Foobara::Command
6
7
  depends_on CreateUser, SetPassword
7
8
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 2025-05-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: argon2
@@ -64,6 +64,7 @@ files:
64
64
  - README.md
65
65
  - lib/foobara/auth.rb
66
66
  - src/approve_token.rb
67
+ - src/authenticate_with_api_key.rb
67
68
  - src/build_access_token.rb
68
69
  - src/build_secret.rb
69
70
  - src/create_api_key.rb
@@ -111,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
112
  - !ruby/object:Gem::Version
112
113
  version: '0'
113
114
  requirements: []
114
- rubygems_version: 3.6.7
115
+ rubygems_version: 3.6.2
115
116
  specification_version: 4
116
117
  summary: Provides various auth domain commands and models
117
118
  test_files: []