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 +4 -4
- data/CHANGELOG.md +4 -0
- data/src/authenticate_with_api_key.rb +59 -0
- data/src/refresh_login.rb +5 -8
- data/src/register.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45cdb3b28235c09c136eb81a09662517dd017afef86cb5fd11b1c966a264685d
|
4
|
+
data.tar.gz: 65b323560c3469fa6b1c29e20d39f4ecf4c6e42011da3a7244876863f87057ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48db1658d6fa78ae0cfe733c7bb58288519399311007851d03c5253f2ebd44f089027820f788c1bfe7af012372520639a56594471d6f50269e75e75c47c884a7
|
7
|
+
data.tar.gz: c6c486c5f4a408177e6a534169bea9d0a77068d8208ed99f5c4217ca37d6f247ffc00743041ff4306f858c5963592ebf9bbd857b6422412a8618cb4157d29df6
|
data/CHANGELOG.md
CHANGED
@@ -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
|
69
|
-
|
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
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.
|
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:
|
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.
|
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: []
|