stytch 3.1.1 → 3.3.0
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/stytch/magic_links.rb +9 -3
- data/lib/stytch/oauth.rb +3 -1
- data/lib/stytch/sessions.rb +10 -2
- data/lib/stytch/version.rb +1 -1
- data/stytch.gemspec +3 -1
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8df42027eb062c7be0ddfbe1f1ee11eece832c7ca442391421f7355a072c77e
|
4
|
+
data.tar.gz: 8df5887ad55b4f1c32efdcccf1873ffd371c4d2df3278ffbf290b1868cc56dad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fec2e73072c90bfc9d5d8c0ff7c29ccbb41e9979d117b1f5a91f2492a83a1f576390debf250a4e17d767a65d708799f48a4222ec79d4bddf27b79d3788f5670a
|
7
|
+
data.tar.gz: 77e7d520386a75d66b9aefc5052a93094d297d0764c5d7dc0c08757e9234c63ed0ead8cc17d9dd9160b404ea11c62ace810896e9b8c7dc98fa1a965bf0b7e6b6
|
data/lib/stytch/magic_links.rb
CHANGED
@@ -37,7 +37,8 @@ module Stytch
|
|
37
37
|
options: {},
|
38
38
|
session_token: nil,
|
39
39
|
session_jwt: nil,
|
40
|
-
session_duration_minutes: nil
|
40
|
+
session_duration_minutes: nil,
|
41
|
+
code_verifier: nil
|
41
42
|
)
|
42
43
|
request = {
|
43
44
|
token: token
|
@@ -48,6 +49,7 @@ module Stytch
|
|
48
49
|
request[:session_token] = session_token unless session_token.nil?
|
49
50
|
request[:session_jwt] = session_jwt unless session_jwt.nil?
|
50
51
|
request[:session_duration_minutes] = session_duration_minutes unless session_duration_minutes.nil?
|
52
|
+
request[:code_verifier] = code_verifier unless code_verifier.nil?
|
51
53
|
|
52
54
|
post_request("#{PATH}/authenticate", request)
|
53
55
|
end
|
@@ -67,7 +69,8 @@ module Stytch
|
|
67
69
|
signup_magic_link_url: nil,
|
68
70
|
login_expiration_minutes: nil,
|
69
71
|
signup_expiration_minutes: nil,
|
70
|
-
attributes: {}
|
72
|
+
attributes: {},
|
73
|
+
code_challenge: nil
|
71
74
|
)
|
72
75
|
request = {
|
73
76
|
email: email
|
@@ -78,6 +81,7 @@ module Stytch
|
|
78
81
|
request[:login_expiration_minutes] = login_expiration_minutes unless login_expiration_minutes.nil?
|
79
82
|
request[:signup_expiration_minutes] = signup_expiration_minutes unless signup_expiration_minutes.nil?
|
80
83
|
request[:attributes] = attributes if attributes != {}
|
84
|
+
request[:code_challenge] = code_challenge unless code_challenge.nil?
|
81
85
|
|
82
86
|
post_request("#{PATH}/send", request)
|
83
87
|
end
|
@@ -89,7 +93,8 @@ module Stytch
|
|
89
93
|
login_expiration_minutes: nil,
|
90
94
|
signup_expiration_minutes: nil,
|
91
95
|
attributes: {},
|
92
|
-
create_user_as_pending: false
|
96
|
+
create_user_as_pending: false,
|
97
|
+
code_challenge: nil
|
93
98
|
)
|
94
99
|
request = {
|
95
100
|
email: email,
|
@@ -101,6 +106,7 @@ module Stytch
|
|
101
106
|
request[:login_expiration_minutes] = login_expiration_minutes unless login_expiration_minutes.nil?
|
102
107
|
request[:signup_expiration_minutes] = signup_expiration_minutes unless signup_expiration_minutes.nil?
|
103
108
|
request[:attributes] = attributes if attributes != {}
|
109
|
+
request[:code_challenge] = code_challenge unless code_challenge.nil?
|
104
110
|
|
105
111
|
post_request("#{PATH}/login_or_create", request)
|
106
112
|
end
|
data/lib/stytch/oauth.rb
CHANGED
@@ -16,7 +16,8 @@ module Stytch
|
|
16
16
|
token:,
|
17
17
|
session_token: nil,
|
18
18
|
session_jwt: nil,
|
19
|
-
session_duration_minutes: nil
|
19
|
+
session_duration_minutes: nil,
|
20
|
+
code_verifier: nil
|
20
21
|
)
|
21
22
|
request = {
|
22
23
|
token: token
|
@@ -24,6 +25,7 @@ module Stytch
|
|
24
25
|
request[:session_token] = session_token unless session_token.nil?
|
25
26
|
request[:session_jwt] = session_jwt unless session_jwt.nil?
|
26
27
|
request[:session_duration_minutes] = session_duration_minutes unless session_duration_minutes.nil?
|
28
|
+
request[:code_verifier] = code_verifier unless code_verifier.nil?
|
27
29
|
|
28
30
|
post_request("#{PATH}/authenticate", request)
|
29
31
|
end
|
data/lib/stytch/sessions.rb
CHANGED
@@ -88,6 +88,12 @@ module Stytch
|
|
88
88
|
session_duration_minutes: session_duration_minutes,
|
89
89
|
)
|
90
90
|
end
|
91
|
+
rescue StandardError
|
92
|
+
# JWT could not be verified locally. Check with the Stytch API.
|
93
|
+
return authenticate(
|
94
|
+
session_jwt: session_jwt,
|
95
|
+
session_duration_minutes: session_duration_minutes,
|
96
|
+
)
|
91
97
|
end
|
92
98
|
|
93
99
|
# Parse a JWT and verify the signature locally (without calling /authenticate in the API)
|
@@ -97,7 +103,7 @@ module Stytch
|
|
97
103
|
def authenticate_jwt_local(session_jwt)
|
98
104
|
issuer = "stytch.com/" + @project_id
|
99
105
|
begin
|
100
|
-
decoded_token = JWT.decode session_jwt, nil, true,
|
106
|
+
decoded_token = JWT.decode session_jwt, nil, true,
|
101
107
|
{ jwks: @jwks_loader, iss: issuer, verify_iss: true, aud: @project_id, verify_aud: true, algorithms: ["RS256"]}
|
102
108
|
return decoded_token[0]
|
103
109
|
rescue JWT::InvalidIssuerError
|
@@ -113,12 +119,14 @@ module Stytch
|
|
113
119
|
|
114
120
|
def marshal_jwt_into_session(jwt)
|
115
121
|
stytch_claim = "https://stytch.com/session"
|
122
|
+
expires_at = jwt[stytch_claim]["expires_at"] || Time.at(jwt["exp"]).to_datetime.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
|
116
123
|
return {
|
117
124
|
"session_id" => jwt[stytch_claim]["id"],
|
118
125
|
"user_id" => jwt["sub"],
|
119
126
|
"started_at" => jwt[stytch_claim]["started_at"],
|
120
127
|
"last_accessed_at" => jwt[stytch_claim]["last_accessed_at"],
|
121
|
-
|
128
|
+
# For JWTs that include it, prefer the inner expires_at claim.
|
129
|
+
"expires_at" => expires_at,
|
122
130
|
"attributes" => jwt[stytch_claim]["attributes"],
|
123
131
|
"authentication_factors" => jwt[stytch_claim]["authentication_factors"],
|
124
132
|
}
|
data/lib/stytch/version.rb
CHANGED
data/stytch.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
|
28
28
|
spec.add_dependency 'faraday', '>= 0.17.0', '< 2.0'
|
29
29
|
spec.add_dependency 'faraday_middleware', '>= 0.14.0', '< 2.0'
|
30
|
-
spec.add_dependency 'jwt', '>= 2.3.0'
|
31
30
|
spec.add_dependency 'json-jwt', '>=1.13.0'
|
31
|
+
spec.add_dependency 'jwt', '>= 2.3.0'
|
32
|
+
|
33
|
+
spec.add_development_dependency 'test-unit', '>=3.5.3'
|
32
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stytch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- stytch
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -50,6 +50,20 @@ dependencies:
|
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '2.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: json-jwt
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 1.13.0
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.13.0
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: jwt
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,20 +79,20 @@ dependencies:
|
|
65
79
|
- !ruby/object:Gem::Version
|
66
80
|
version: 2.3.0
|
67
81
|
- !ruby/object:Gem::Dependency
|
68
|
-
name:
|
82
|
+
name: test-unit
|
69
83
|
requirement: !ruby/object:Gem::Requirement
|
70
84
|
requirements:
|
71
85
|
- - ">="
|
72
86
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
74
|
-
type: :
|
87
|
+
version: 3.5.3
|
88
|
+
type: :development
|
75
89
|
prerelease: false
|
76
90
|
version_requirements: !ruby/object:Gem::Requirement
|
77
91
|
requirements:
|
78
92
|
- - ">="
|
79
93
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
81
|
-
description:
|
94
|
+
version: 3.5.3
|
95
|
+
description:
|
82
96
|
email:
|
83
97
|
- support@stytch.com
|
84
98
|
executables: []
|
@@ -118,7 +132,7 @@ licenses:
|
|
118
132
|
metadata:
|
119
133
|
homepage_uri: https://stytch.com
|
120
134
|
source_code_uri: https://github.com/stytchauth/stytch-ruby
|
121
|
-
post_install_message:
|
135
|
+
post_install_message:
|
122
136
|
rdoc_options: []
|
123
137
|
require_paths:
|
124
138
|
- lib
|
@@ -133,8 +147,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
147
|
- !ruby/object:Gem::Version
|
134
148
|
version: '0'
|
135
149
|
requirements: []
|
136
|
-
rubygems_version: 3.1
|
137
|
-
signing_key:
|
150
|
+
rubygems_version: 3.0.3.1
|
151
|
+
signing_key:
|
138
152
|
specification_version: 4
|
139
153
|
summary: Stytch Ruby Gem
|
140
154
|
test_files: []
|