foobara-auth 0.0.9 → 0.0.11

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: 39a1c84b35482f06f620033be6d576030c4de3b6d440ecc8d4ecaba90c2cf126
4
+ data.tar.gz: daa37fb14dfcd8be6fc50e9f356f0209fb8a78ee73e741157507f4c700f464af
5
5
  SHA512:
6
- metadata.gz: 922de34a2a3343f55152a5d754b0e6a0c1b7e97bc868891e607018f73dcb8aec5dbee9408e3886a100057764de42039676204b5ffac48d2377e2ad5af777695f
7
- data.tar.gz: 056a01756020a541633ea7467792079f8841c4c8135f7d84054efbab62c0360888b61e9ddf817c8ad67af4ef7a61e9feefae60e348d7c95cbfd0087a2d31c35f
6
+ metadata.gz: 8b90d812a7a6f459a097ebd8602848ab81bab0dfc16f1dbaaa009c3be71aefa5f6c078f167b648333092ae8072f2d8545dd44937d40e12f81f70438a65df36da
7
+ data.tar.gz: 2e7ad097761cd1831bc58762e78e523bd8d50507758f922d34fb4ed2a0b8474fb3d4f77c4bd8993a8c7db6b05d0bc8e6b4f4fef9435fb25fb2a1ed84c6b8d649
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.0.11] - 2025-05-01
2
+
3
+ - Add a runtime error when an api key doesn't exist
4
+
5
+ ## [0.0.10] - 2025-04-28
6
+
7
+ - Add AuthenticateWithApiKey command
8
+
1
9
  ## [0.0.9] - 2025-04-22
2
10
 
3
11
  - Handle malformed jwt tokens
@@ -0,0 +1,66 @@
1
+ require_relative "verify_token"
2
+
3
+ module Foobara
4
+ module Auth
5
+ class AuthenticateWithApiKey < Foobara::Command
6
+ class InvalidApiKeyError < Foobara::RuntimeError
7
+ context({})
8
+ message "Invalid api key"
9
+ end
10
+
11
+ class ApiKeyDoesNotExistError < Foobara::RuntimeError
12
+ context({})
13
+ message "No such key"
14
+ end
15
+
16
+ depends_on VerifyToken
17
+ depends_on_entities Types::Token
18
+
19
+ inputs do
20
+ api_key :string, :required, :sensitive
21
+ access_token_ttl :integer, default: 30 * 60
22
+ api_key_ttl :integer, default: 7 * 24 * 60 * 60
23
+ end
24
+
25
+ result [Types::User, Types::Token]
26
+
27
+ def execute
28
+ determine_api_key_id_and_secret
29
+ load_api_key_record
30
+ verify_api_key
31
+
32
+ load_user
33
+
34
+ user_and_credential
35
+ end
36
+
37
+ attr_accessor :expires_at, :api_key_record, :api_key_id, :api_key_secret, :user
38
+
39
+ def determine_api_key_id_and_secret
40
+ self.api_key_id, self.api_key_secret = api_key.split("_")
41
+ end
42
+
43
+ def load_api_key_record
44
+ self.api_key_record = Types::Token.load(api_key_id)
45
+ rescue Foobara::Entity::NotFoundError
46
+ add_runtime_error(ApiKeyDoesNotExistError)
47
+ end
48
+
49
+ def verify_api_key
50
+ valid = run_subcommand!(VerifyToken, token_string: api_key)
51
+
52
+ unless valid[:verified]
53
+ add_runtime_error(InvalidApiKeyError)
54
+ end
55
+ end
56
+
57
+ def load_user
58
+ self.user ||= Types::User.that_owns(api_key_record, "api_keys")
59
+ end
60
+
61
+ def user_and_credential
62
+ [user, api_key_record]
63
+ end
64
+ end
65
+ end
66
+ 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.11
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: []