ask-auth 0.1.1 → 0.1.2
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/lib/ask/auth/providers/rails_credentials.rb +36 -4
- data/lib/ask/auth/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d839820898bcd001809176b196900faf071717a66b53d70ac4a9605b31b3aa1f
|
|
4
|
+
data.tar.gz: dc3b21d1e383b5c7ee08d9b3798bb966d828b5f8e245c5cd5be036931092c823
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a092a91d436da5623755ca25116c28510921fad524fc7a562305fba76b94e2ec1d273d65264a847454e9e60813c742c930b2710545315c0b8e8790d303a10689
|
|
7
|
+
data.tar.gz: a0e8feee12cadfb082abac95349febe768b8f67e0697a9287dceee9b4a4feacf1d6fcbe141969196afd23055c47675e4cadacc17a285212700f1fb6c55a732f7
|
|
@@ -5,16 +5,48 @@ module Ask
|
|
|
5
5
|
module Providers
|
|
6
6
|
# Resolves credentials from Rails encrypted credentials.
|
|
7
7
|
#
|
|
8
|
-
# Convention: +resolve(:github_token)+ looks up
|
|
9
|
-
#
|
|
8
|
+
# Convention: +resolve(:github_token)+ looks up multiple paths in order:
|
|
9
|
+
#
|
|
10
|
+
# 1. Full name as a single top-level key (flat layout):
|
|
11
|
+
# +Rails.application.credentials.github_token+
|
|
12
|
+
#
|
|
13
|
+
# 2. First segment as namespace, joined rest as sub-key (nested layout):
|
|
14
|
+
# +Rails.application.credentials.github.token+
|
|
15
|
+
#
|
|
16
|
+
# 3. Fully split path (deeply nested layout):
|
|
17
|
+
# +Rails.application.credentials.github.api.key+
|
|
18
|
+
#
|
|
19
|
+
# Strategy 2 handles compound key names like +api_key+ correctly.
|
|
20
|
+
# For +resolve(:opencode_api_key)+, it looks up:
|
|
21
|
+
# +Rails.application.credentials.opencode.api_key+
|
|
22
|
+
# instead of breaking +api_key+ into +api+ and +key+.
|
|
10
23
|
#
|
|
11
24
|
# Safely returns nil when Rails is not loaded.
|
|
12
25
|
class RailsCredentials
|
|
13
26
|
def call(name, user: nil)
|
|
14
27
|
return nil unless defined?(::Rails) && ::Rails.application.respond_to?(:credentials)
|
|
15
28
|
|
|
16
|
-
|
|
17
|
-
|
|
29
|
+
creds = ::Rails.application.credentials
|
|
30
|
+
s = name.to_s
|
|
31
|
+
parts = s.split("_")
|
|
32
|
+
|
|
33
|
+
# 1. Full name as a single top-level key
|
|
34
|
+
return creds.public_send(s) if creds.respond_to?(s)
|
|
35
|
+
|
|
36
|
+
# 2. First segment as namespace, joined rest as sub-key
|
|
37
|
+
# e.g., opencode_api_key → credentials.opencode.api_key
|
|
38
|
+
if parts.length >= 2
|
|
39
|
+
first = parts.first
|
|
40
|
+
rest = parts.drop(1).join("_")
|
|
41
|
+
if creds.respond_to?(first)
|
|
42
|
+
obj = creds.public_send(first)
|
|
43
|
+
return obj.public_send(rest) if obj.respond_to?(rest)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# 3. Fully split path (original behavior)
|
|
48
|
+
# e.g., opencode.go.api_key → credentials.opencode.go.api_key
|
|
49
|
+
value = parts.reduce(creds) do |obj, part|
|
|
18
50
|
break nil unless obj.respond_to?(part)
|
|
19
51
|
obj.public_send(part)
|
|
20
52
|
end
|
data/lib/ask/auth/version.rb
CHANGED