foobara-auth 0.0.2 → 0.0.4

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: 29222c9e1b4418b49c88107de989af8ad1f082e26416cb9ce0e51de8f1625b17
4
- data.tar.gz: a729451915a9baf22f982f2488677b3695cf7d08b2184a42d11ffaaaafc4b75d
3
+ metadata.gz: 2294ad68967bcfb48ae829b39b3926d163c6652c918d9fc2b68e5df2f4b74cff
4
+ data.tar.gz: a0203c7d78f6720fb988779fa0ce7a8d72102a8dea69d91347b7b2eead8c6c6e
5
5
  SHA512:
6
- metadata.gz: 30b806538de1cd5202fd979cbb10dc235841bb8c9cf358ffacdafcee8f7f3b2f9db5857ff4c54efd70e8002a1b73ccfefc8e1e7876e9327a79113c744240160a
7
- data.tar.gz: f17ef76c86bd23b76019b90bcbad937e98719deb896b2e2499e4aa86fc6737cbd8f07240b81018074f75b90e403629aff75ec22bdb15b192e3917725e5ce8435
6
+ metadata.gz: 11827d66647dc3ccc4c8ed5a9aa77b4d6ffeb92d17d43cf286c2bcc3b5ddcb1bb85b287621e44f761b5aa95e765dc3f0e4f6c32299099ea8cab9ccdda55a5bee
7
+ data.tar.gz: d006943c733372ddbed6cd7d5714dc7f968c4bb69ccd376691d9f260575813ff70c503beedfdb0e0d310606c8c113b107fd4f29c4e553dd1307e23f9f18037a3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.0.4] - 2025-03-29
2
+
3
+ - Do not pass user into RefreshLogin
4
+
5
+ ## [0.0.3] - 2025-03-28
6
+
7
+ - Allow not having an email
8
+
1
9
  ## [0.0.2] - 2025-03-21
2
10
 
3
11
  - Implement/test lots of basic auth behavior such as
data/src/refresh_login.rb CHANGED
@@ -18,10 +18,10 @@ module Foobara
18
18
  end
19
19
 
20
20
  depends_on CreateToken, VerifyToken
21
+ depends_on_entities Types::Token
21
22
 
22
23
  inputs do
23
- user Types::User, :required
24
- refresh_token_text :string, :required, :sensitive
24
+ refresh_token :string, :required, :sensitive
25
25
  # Can we get these TTLs off of the refresh token?
26
26
  token_ttl :integer, default: 30 * 60
27
27
  refresh_token_ttl :integer, default: 7 * 24 * 60 * 60
@@ -34,8 +34,7 @@ module Foobara
34
34
 
35
35
  def execute
36
36
  determine_refresh_token_id_and_secret
37
- load_refresh_token
38
- validate_refresh_token_belongs_to_user
37
+ load_refresh_token_record
39
38
  verify_refresh_token
40
39
  # Delete it instead maybe?
41
40
  mark_refresh_token_as_used
@@ -49,25 +48,19 @@ module Foobara
49
48
  tokens
50
49
  end
51
50
 
52
- attr_accessor :access_token, :new_refresh_token, :now, :expires_at, :refresh_token,
51
+ attr_accessor :access_token, :new_refresh_token, :now, :expires_at, :refresh_token_record,
53
52
  :refresh_token_id, :refresh_token_secret, :token_group
54
53
 
55
54
  def determine_refresh_token_id_and_secret
56
- self.refresh_token_id, self.refresh_token_secret = refresh_token_text.split("_")
55
+ self.refresh_token_id, self.refresh_token_secret = refresh_token.split("_")
57
56
  end
58
57
 
59
- def load_refresh_token
60
- self.refresh_token = Types::Token.load(refresh_token_id)
61
- end
62
-
63
- def validate_refresh_token_belongs_to_user
64
- unless user.refresh_tokens.any? { |token| token.id == refresh_token_id }
65
- add_runtime_error(RefreshTokenNotOwnedByUser.new(context: { refresh_token_id: }))
66
- end
58
+ def load_refresh_token_record
59
+ self.refresh_token_record = Types::Token.load(refresh_token_id)
67
60
  end
68
61
 
69
62
  def verify_refresh_token
70
- valid = run_subcommand!(VerifyToken, token_string: refresh_token_text)
63
+ valid = run_subcommand!(VerifyToken, token_string: refresh_token)
71
64
 
72
65
  unless valid[:verified]
73
66
  add_runtime_error(InvalidRefreshTokenError.new(context: { refresh_token_id: }))
@@ -75,7 +68,7 @@ module Foobara
75
68
  end
76
69
 
77
70
  def mark_refresh_token_as_used
78
- refresh_token.use_up!
71
+ refresh_token_record.use_up!
79
72
  end
80
73
 
81
74
  def determine_timestamps
@@ -93,6 +86,10 @@ module Foobara
93
86
  self.access_token = JWT.encode(payload, jwt_secret, "HS256")
94
87
  end
95
88
 
89
+ def user
90
+ @user ||= Types::User.that_owns(refresh_token_record, "refresh_tokens")
91
+ end
92
+
96
93
  def jwt_secret
97
94
  jwt_secret_text = ENV.fetch("JWT_SECRET", nil)
98
95
 
@@ -106,7 +103,7 @@ module Foobara
106
103
  end
107
104
 
108
105
  def determine_token_group
109
- self.token_group = refresh_token&.token_group || SecureRandom.uuid
106
+ self.token_group = refresh_token_record&.token_group || SecureRandom.uuid
110
107
  end
111
108
 
112
109
  def generate_new_refresh_token
data/src/register.rb CHANGED
@@ -7,7 +7,7 @@ module Foobara
7
7
 
8
8
  inputs do
9
9
  username :string, :required
10
- email :email, :required
10
+ email :email, :allow_nil
11
11
  plaintext_password :string, :allow_nil, :sensitive_exposed
12
12
  end
13
13
 
@@ -15,6 +15,7 @@ module Foobara
15
15
 
16
16
  def execute
17
17
  create_user
18
+
18
19
  if password?
19
20
  set_password
20
21
  end
data/src/types/user.rb CHANGED
@@ -8,7 +8,7 @@ module Foobara
8
8
  attributes do
9
9
  id :integer
10
10
  username :string, :required
11
- email :email, :required
11
+ email :email, :allow_nil
12
12
  roles [Types::Role], default: []
13
13
  api_keys [Types::Token], :sensitive, default: []
14
14
  refresh_tokens [Types::Token], :sensitive, default: []
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.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-21 00:00:00.000000000 Z
10
+ date: 2025-03-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: argon2
@@ -41,16 +41,16 @@ dependencies:
41
41
  name: foobara
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: 0.0.1
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 0.0.1
54
54
  email:
55
55
  - azimux@gmail.com
56
56
  executables: []