workos 2.16.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|