workos 2.16.0 → 3.0.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/.gitignore +2 -0
- data/Gemfile.lock +5 -14
- data/lib/workos/authentication_factor_and_challenge.rb +31 -0
- data/lib/workos/authentication_response.rb +27 -0
- data/lib/workos/client.rb +1 -1
- data/lib/workos/configuration.rb +1 -1
- data/lib/workos/invitation.rb +68 -0
- data/lib/workos/organization_membership.rb +50 -0
- data/lib/workos/sso.rb +1 -1
- data/lib/workos/types/invitation_struct.rb +20 -0
- data/lib/workos/types/magic_auth_challenge_struct.rb +12 -0
- data/lib/workos/types/organization_membership_struct.rb +15 -0
- data/lib/workos/types/provider_enum.rb +1 -0
- data/lib/workos/types/user_struct.rb +17 -0
- data/lib/workos/types.rb +9 -5
- data/lib/workos/user.rb +57 -0
- data/lib/workos/user_and_token.rb +29 -0
- data/lib/workos/user_management.rb +1008 -0
- data/lib/workos/user_response.rb +25 -0
- data/lib/workos/version.rb +1 -1
- data/lib/workos.rb +35 -28
- data/spec/lib/workos/sso_spec.rb +8 -8
- data/spec/lib/workos/user_management_spec.rb +1092 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/invalid.yml +84 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/invalid.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +81 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/invalid.yml +81 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/invalid.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +81 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/invalid.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/create_user_invalid.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/create_user_valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/valid.yml +78 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/valid.yml +78 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/get_organization_membership.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/get_user.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_after.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_before.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_limit.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_no_options.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_organization_id.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/no_options.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/with_options.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_users/no_options.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/list_users/with_options.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_magic_auth_code/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/invalid.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/update_user/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/update_user/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/invalid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/valid.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_code.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_magic_auth_challenge.yml +82 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/valid.yml +82 -0
- data/workos.gemspec +0 -2
- metadata +132 -55
- data/bin/docs +0 -5
- data/docs/WorkOS/APIError.html +0 -160
- data/docs/WorkOS/AuditLog.html +0 -235
- data/docs/WorkOS/AuditTrail.html +0 -235
- data/docs/WorkOS/AuthenticationError.html +0 -160
- data/docs/WorkOS/Base.html +0 -287
- data/docs/WorkOS/Client.html +0 -504
- data/docs/WorkOS/InvalidRequestError.html +0 -160
- data/docs/WorkOS/Profile.html +0 -788
- data/docs/WorkOS/RequestError.html +0 -135
- data/docs/WorkOS/SSO.html +0 -691
- data/docs/WorkOS/Types/ProfileStruct.html +0 -135
- data/docs/WorkOS/Types/Provider.html +0 -135
- data/docs/WorkOS/Types.html +0 -128
- data/docs/WorkOS/WorkOSError.html +0 -447
- data/docs/WorkOS.html +0 -324
- data/docs/class_list.html +0 -51
- data/docs/css/common.css +0 -1
- data/docs/css/full_list.css +0 -58
- data/docs/css/style.css +0 -496
- data/docs/file.README.html +0 -252
- data/docs/file_list.html +0 -56
- data/docs/frames.html +0 -17
- data/docs/index.html +0 -250
- data/docs/js/app.js +0 -314
- data/docs/js/full_list.js +0 -216
- data/docs/js/jquery.js +0 -4
- data/docs/method_list.html +0 -267
- data/docs/top-level-namespace.html +0 -110
- data/lib/workos/audit_trail.rb +0 -111
- data/spec/lib/workos/audit_trail_spec.rb +0 -146
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# typed: true
|
3
|
+
|
4
|
+
module WorkOS
|
5
|
+
# The UserResponse class represents a User as well as an corresponding
|
6
|
+
# response data that can later be appended on.
|
7
|
+
class UserResponse
|
8
|
+
include HashProvider
|
9
|
+
extend T::Sig
|
10
|
+
|
11
|
+
attr_accessor :user
|
12
|
+
|
13
|
+
sig { params(user_response_json: String).void }
|
14
|
+
def initialize(user_response_json)
|
15
|
+
json = JSON.parse(user_response_json, symbolize_names: true)
|
16
|
+
@user = WorkOS::User.new(json[:user].to_json)
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_json(*)
|
20
|
+
{
|
21
|
+
user: user.to_json,
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/workos/version.rb
CHANGED
data/lib/workos.rb
CHANGED
@@ -11,10 +11,25 @@ require 'workos/configuration'
|
|
11
11
|
# requests to the WorkOS API. The gem will read
|
12
12
|
# your API key automatically from the ENV var `WORKOS_API_KEY`.
|
13
13
|
# Alternatively, you can set the key yourself with
|
14
|
-
# `WorkOS.key = [your api key]` somewhere
|
15
|
-
# your application, such as an initializer.
|
14
|
+
# `WorkOS.configure { |config| config.key = [your api key] }` somewhere
|
15
|
+
# in the load path of your application, such as an initializer.
|
16
16
|
module WorkOS
|
17
|
-
|
17
|
+
def self.default_config
|
18
|
+
Configuration.new.tap do |config|
|
19
|
+
config.api_hostname = ENV['WORKOS_API_HOSTNAME'] || 'api.workos.com'
|
20
|
+
# Remove WORKOS_KEY at some point in the future. Keeping it here now for
|
21
|
+
# backwards compatibility.
|
22
|
+
config.key = ENV['WORKOS_API_KEY'] || ENV['WORKOS_KEY']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.config
|
27
|
+
@config ||= default_config
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.configure
|
31
|
+
yield(config)
|
32
|
+
end
|
18
33
|
|
19
34
|
def self.key=(value)
|
20
35
|
warn '`WorkOS.key=` is deprecated. Use `WorkOS.configure` instead.'
|
@@ -28,42 +43,39 @@ module WorkOS
|
|
28
43
|
config.key
|
29
44
|
end
|
30
45
|
|
31
|
-
def self.config
|
32
|
-
@config ||= Configuration.new
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.configure
|
36
|
-
yield(config)
|
37
|
-
end
|
38
|
-
|
39
|
-
autoload :Types, 'workos/types'
|
40
|
-
autoload :Client, 'workos/client'
|
41
|
-
autoload :Configuration, 'workos/configuration'
|
42
46
|
autoload :AuditLogExport, 'workos/audit_log_export'
|
47
|
+
autoload :AuthenticationFactorAndChallenge, 'workos/authentication_factor_and_challenge'
|
48
|
+
autoload :AuthenticationResponse, 'workos/authentication_response'
|
43
49
|
autoload :AuditLogs, 'workos/audit_logs'
|
44
|
-
autoload :
|
50
|
+
autoload :Challenge, 'workos/challenge'
|
51
|
+
autoload :Client, 'workos/client'
|
45
52
|
autoload :Connection, 'workos/connection'
|
46
|
-
autoload :
|
53
|
+
autoload :DeprecatedHashWrapper, 'workos/deprecated_hash_wrapper'
|
47
54
|
autoload :Directory, 'workos/directory'
|
48
55
|
autoload :DirectoryGroup, 'workos/directory_group'
|
56
|
+
autoload :DirectorySync, 'workos/directory_sync'
|
57
|
+
autoload :DirectoryUser, 'workos/directory_user'
|
49
58
|
autoload :Event, 'workos/event'
|
50
59
|
autoload :Events, 'workos/events'
|
60
|
+
autoload :Factor, 'workos/factor'
|
61
|
+
autoload :Invitation, 'workos/invitation'
|
62
|
+
autoload :MFA, 'workos/mfa'
|
51
63
|
autoload :Organization, 'workos/organization'
|
52
64
|
autoload :Organizations, 'workos/organizations'
|
65
|
+
autoload :OrganizationMembership, 'workos/organization_membership'
|
53
66
|
autoload :Passwordless, 'workos/passwordless'
|
54
67
|
autoload :Portal, 'workos/portal'
|
55
68
|
autoload :Profile, 'workos/profile'
|
56
69
|
autoload :ProfileAndToken, 'workos/profile_and_token'
|
57
70
|
autoload :SSO, 'workos/sso'
|
58
|
-
autoload :
|
71
|
+
autoload :Types, 'workos/types'
|
72
|
+
autoload :User, 'workos/user'
|
73
|
+
autoload :UserAndToken, 'workos/user_and_token'
|
74
|
+
autoload :UserManagement, 'workos/user_management'
|
75
|
+
autoload :UserResponse, 'workos/user_response'
|
76
|
+
autoload :VerifyChallenge, 'workos/verify_challenge'
|
59
77
|
autoload :Webhook, 'workos/webhook'
|
60
78
|
autoload :Webhooks, 'workos/webhooks'
|
61
|
-
autoload :MFA, 'workos/mfa'
|
62
|
-
autoload :Factor, 'workos/factor'
|
63
|
-
autoload :Challenge, 'workos/challenge'
|
64
|
-
autoload :VerifyChallenge, 'workos/verify_challenge'
|
65
|
-
autoload :DeprecatedHashWrapper, 'workos/deprecated_hash_wrapper'
|
66
|
-
|
67
79
|
|
68
80
|
# Errors
|
69
81
|
autoload :APIError, 'workos/errors'
|
@@ -71,9 +83,4 @@ module WorkOS
|
|
71
83
|
autoload :InvalidRequestError, 'workos/errors'
|
72
84
|
autoload :SignatureVerificationError, 'workos/errors'
|
73
85
|
autoload :TimeoutError, 'workos/errors'
|
74
|
-
|
75
|
-
# Remove WORKOS_KEY at some point in the future. Keeping it here now for
|
76
|
-
# backwards compatibility.
|
77
|
-
key = ENV['WORKOS_API_KEY'] || ENV['WORKOS_KEY']
|
78
|
-
config.key = key unless key.nil?
|
79
86
|
end
|
data/spec/lib/workos/sso_spec.rb
CHANGED
@@ -26,7 +26,7 @@ describe WorkOS::SSO do
|
|
26
26
|
it 'returns the expected hostname' do
|
27
27
|
authorization_url = described_class.authorization_url(**args)
|
28
28
|
|
29
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
29
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'returns the expected query string' do
|
@@ -60,7 +60,7 @@ describe WorkOS::SSO do
|
|
60
60
|
it 'returns the expected hostname' do
|
61
61
|
authorization_url = described_class.authorization_url(**args)
|
62
62
|
|
63
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
63
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
64
64
|
end
|
65
65
|
|
66
66
|
it 'returns the expected query string' do
|
@@ -94,7 +94,7 @@ describe WorkOS::SSO do
|
|
94
94
|
it 'returns the expected hostname' do
|
95
95
|
authorization_url = described_class.authorization_url(**args)
|
96
96
|
|
97
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
97
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
98
98
|
end
|
99
99
|
|
100
100
|
it 'returns the expected query string' do
|
@@ -128,7 +128,7 @@ describe WorkOS::SSO do
|
|
128
128
|
it 'returns the expected hostname' do
|
129
129
|
authorization_url = described_class.authorization_url(**args)
|
130
130
|
|
131
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
131
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
132
132
|
end
|
133
133
|
|
134
134
|
it 'returns the expected query string' do
|
@@ -163,7 +163,7 @@ describe WorkOS::SSO do
|
|
163
163
|
it 'returns the expected hostname' do
|
164
164
|
authorization_url = described_class.authorization_url(**args)
|
165
165
|
|
166
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
166
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
167
167
|
end
|
168
168
|
|
169
169
|
it 'returns the expected query string' do
|
@@ -198,7 +198,7 @@ describe WorkOS::SSO do
|
|
198
198
|
it 'returns the expected hostname' do
|
199
199
|
authorization_url = described_class.authorization_url(**args)
|
200
200
|
|
201
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
201
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
202
202
|
end
|
203
203
|
|
204
204
|
it 'returns the expected query string' do
|
@@ -232,7 +232,7 @@ describe WorkOS::SSO do
|
|
232
232
|
it 'returns the expected hostname' do
|
233
233
|
authorization_url = described_class.authorization_url(**args)
|
234
234
|
|
235
|
-
expect(URI.parse(authorization_url).host).to eq(WorkOS
|
235
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
|
236
236
|
end
|
237
237
|
|
238
238
|
it 'returns the expected query string' do
|
@@ -282,7 +282,7 @@ describe WorkOS::SSO do
|
|
282
282
|
described_class.authorization_url(**args)
|
283
283
|
end.to raise_error(
|
284
284
|
ArgumentError,
|
285
|
-
'Okta is not a valid value. `provider` must be in ["GoogleOAuth", "MicrosoftOAuth"]',
|
285
|
+
'Okta is not a valid value. `provider` must be in ["GitHubOAuth", "GoogleOAuth", "MicrosoftOAuth"]',
|
286
286
|
)
|
287
287
|
end
|
288
288
|
end
|