workos 0.0.2 → 0.1.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/.rubocop.yml +5 -2
- data/Gemfile.lock +6 -2
- data/README.md +179 -8
- data/bin/docs +2 -2
- data/codecov.yml +1 -0
- data/docs/WorkOS.html +22 -26
- data/docs/WorkOS/APIError.html +160 -0
- data/docs/WorkOS/AuditLog.html +235 -0
- data/docs/WorkOS/AuthenticationError.html +160 -0
- data/docs/WorkOS/Base.html +27 -32
- data/docs/WorkOS/Client.html +493 -0
- data/docs/WorkOS/InvalidRequestError.html +160 -0
- data/docs/WorkOS/Profile.html +80 -17
- data/docs/WorkOS/RequestError.html +6 -6
- data/docs/WorkOS/SSO.html +118 -74
- data/docs/WorkOS/Types.html +9 -10
- data/docs/WorkOS/Types/ProfileStruct.html +6 -6
- data/docs/WorkOS/Types/Provider.html +135 -0
- data/docs/WorkOS/WorkOSError.html +447 -0
- data/docs/class_list.html +3 -3
- data/docs/css/style.css +2 -2
- data/docs/file.README.html +173 -13
- data/docs/file_list.html +2 -2
- data/docs/frames.html +2 -2
- data/docs/index.html +77 -16
- data/docs/js/app.js +14 -3
- data/docs/method_list.html +96 -8
- data/docs/top-level-namespace.html +6 -6
- data/lib/workos.rb +7 -2
- data/lib/workos/audit_log.rb +78 -0
- data/lib/workos/base.rb +5 -6
- data/lib/workos/client.rb +86 -0
- data/lib/workos/errors.rb +48 -0
- data/lib/workos/sso.rb +49 -27
- data/lib/workos/types.rb +2 -1
- data/lib/workos/types/provider_enum.rb +14 -0
- data/lib/workos/version.rb +2 -2
- data/sorbet/rbi/hidden-definitions/errors.txt +22108 -4368
- data/sorbet/rbi/hidden-definitions/hidden.rbi +32490 -6059
- data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +1 -1
- data/sorbet/rbi/todo.rbi +5 -0
- data/spec/lib/workos/audit_log_spec.rb +140 -0
- data/spec/lib/workos/base_spec.rb +30 -0
- data/spec/lib/workos/sso_spec.rb +131 -36
- data/spec/spec_helper.rb +21 -1
- data/spec/support/fixtures/vcr_cassettes/audit_log/create_event.yml +65 -0
- data/spec/support/fixtures/vcr_cassettes/audit_log/create_event_custom_idempotency_key.yml +67 -0
- data/spec/support/fixtures/vcr_cassettes/audit_log/create_event_invalid.yml +68 -0
- data/spec/support/fixtures/vcr_cassettes/audit_log/create_events_duplicate_idempotency_key_and_payload.yml +131 -0
- data/spec/support/fixtures/vcr_cassettes/audit_log/create_events_duplicate_idempotency_key_different_payload.yml +134 -0
- data/spec/support/fixtures/vcr_cassettes/base/execute_request_unauthenticated.yml +66 -0
- data/workos.gemspec +2 -0
- metadata +57 -27
- data/lib/workos/request_error.rb +0 -5
- data/sorbet/rbi/gems/addressable.rbi +0 -198
- data/sorbet/rbi/gems/ast.rbi +0 -47
- data/sorbet/rbi/gems/codecov.rbi +0 -19
- data/sorbet/rbi/gems/crack.rbi +0 -47
- data/sorbet/rbi/gems/docile.rbi +0 -31
- data/sorbet/rbi/gems/hashdiff.rbi +0 -65
- data/sorbet/rbi/gems/jaro_winkler.rbi +0 -14
- data/sorbet/rbi/gems/parallel.rbi +0 -81
- data/sorbet/rbi/gems/parser.rbi +0 -856
- data/sorbet/rbi/gems/public_suffix.rbi +0 -102
- data/sorbet/rbi/gems/rack.rbi +0 -103
- data/sorbet/rbi/gems/rainbow.rbi +0 -117
- data/sorbet/rbi/gems/rake.rbi +0 -632
- data/sorbet/rbi/gems/rspec-core.rbi +0 -1661
- data/sorbet/rbi/gems/rspec-expectations.rbi +0 -388
- data/sorbet/rbi/gems/rspec-mocks.rbi +0 -823
- data/sorbet/rbi/gems/rspec-support.rbi +0 -266
- data/sorbet/rbi/gems/rspec.rbi +0 -14
- data/sorbet/rbi/gems/rubocop.rbi +0 -7083
- data/sorbet/rbi/gems/ruby-progressbar.rbi +0 -304
- data/sorbet/rbi/gems/simplecov-html.rbi +0 -30
- data/sorbet/rbi/gems/simplecov.rbi +0 -225
- data/sorbet/rbi/gems/unicode-display_width.rbi +0 -16
- data/sorbet/rbi/gems/webmock.rbi +0 -526
data/docs/class_list.html
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
5
|
<meta charset="utf-8" />
|
6
6
|
|
7
|
-
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen"
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
|
8
8
|
|
9
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen"
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
<ul id="full_list" class="class">
|
45
45
|
<li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
|
46
|
-
<li id='object_WorkOS' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_WorkOS::
|
46
|
+
<li id='object_WorkOS' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_WorkOS::APIError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/APIError.html" title="WorkOS::APIError (class)">APIError</a></span> < WorkOSError<small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::AuditLog' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/AuditLog.html" title="WorkOS::AuditLog (module)">AuditLog</a></span><small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::AuthenticationError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/AuthenticationError.html" title="WorkOS::AuthenticationError (class)">AuthenticationError</a></span> < WorkOSError<small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::Base' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/Base.html" title="WorkOS::Base (module)">Base</a></span><small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::Client' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/Client.html" title="WorkOS::Client (module)">Client</a></span><small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::InvalidRequestError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/InvalidRequestError.html" title="WorkOS::InvalidRequestError (class)">InvalidRequestError</a></span> < WorkOSError<small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::Profile' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/Profile.html" title="WorkOS::Profile (class)">Profile</a></span> < Object<small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::SSO' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/SSO.html" title="WorkOS::SSO (module)">SSO</a></span><small class='search_info'>WorkOS</small></div></li><li id='object_WorkOS::Types' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="WorkOS/Types.html" title="WorkOS::Types (module)">Types</a></span><small class='search_info'>WorkOS</small></div><ul><li id='object_WorkOS::Types::ProfileStruct' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="WorkOS/Types/ProfileStruct.html" title="WorkOS::Types::ProfileStruct (class)">ProfileStruct</a></span> < Struct<small class='search_info'>WorkOS::Types</small></div></li><li id='object_WorkOS::Types::Provider' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="WorkOS/Types/Provider.html" title="WorkOS::Types::Provider (class)">Provider</a></span> < Enum<small class='search_info'>WorkOS::Types</small></div></li></ul></li><li id='object_WorkOS::WorkOSError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="WorkOS/WorkOSError.html" title="WorkOS::WorkOSError (class)">WorkOSError</a></span> < StandardError<small class='search_info'>WorkOS</small></div></li></ul></li>
|
47
47
|
|
48
48
|
</ul>
|
49
49
|
</div>
|
data/docs/css/style.css
CHANGED
@@ -422,8 +422,8 @@ li.r2 { background: #fafafa; }
|
|
422
422
|
#toc ol { padding-left: 1.8em; }
|
423
423
|
#toc li { font-size: 1.1em; line-height: 1.7em; }
|
424
424
|
#toc > ol > li { font-size: 1.1em; font-weight: bold; }
|
425
|
-
#toc ol > ol { font-size: 0.9em; }
|
426
|
-
#toc ol ol > ol { padding-left: 2.3em; }
|
425
|
+
#toc ol > li > ol { font-size: 0.9em; }
|
426
|
+
#toc ol ol > li > ol { padding-left: 2.3em; }
|
427
427
|
#toc ol + li { margin-top: 0.3em; }
|
428
428
|
#toc.hidden { padding: 10px; background: #fefefe; box-shadow: none; }
|
429
429
|
#toc.hidden:hover { background: #fafafa; }
|
data/docs/file.README.html
CHANGED
@@ -6,15 +6,15 @@
|
|
6
6
|
<title>
|
7
7
|
File: README
|
8
8
|
|
9
|
-
— Documentation by YARD 0.9.
|
9
|
+
— Documentation by YARD 0.9.22
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
13
|
-
<link rel="stylesheet" href="css/style.css" type="text/css"
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
14
14
|
|
15
|
-
<link rel="stylesheet" href="css/common.css" type="text/css"
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
16
16
|
|
17
|
-
<script type="text/javascript"
|
17
|
+
<script type="text/javascript">
|
18
18
|
pathId = "README";
|
19
19
|
relpath = '';
|
20
20
|
</script>
|
@@ -58,33 +58,193 @@
|
|
58
58
|
</div>
|
59
59
|
|
60
60
|
<div id="content"><div id='filecontents'>
|
61
|
-
<h1 id="label-workos-
|
61
|
+
<h1 id="label-workos-ruby+rdoc-image-3Ahttps-3A-2F-2Fcodecov.io-2Fgh-2Fworkos-inc-2Fworkos-ruby-2Fbranch-2Fmaster-2Fgraph-2Fbadge.svg">workos-ruby <a href="https://codecov.io/gh/workos-inc/workos-ruby"><img src="https://codecov.io/gh/workos-inc/workos-ruby/branch/master/graph/badge.svg"></a></h1>
|
62
62
|
|
63
63
|
<p>WorkOS official Ruby gem for interacting with WorkOS APIs</p>
|
64
64
|
|
65
|
+
<h2 id="label-Documentation">Documentation</h2>
|
66
|
+
|
67
|
+
<p>Complete documentation for the latest version of WorkOS Ruby Gem can be found <a href="https://workos-inc.github.io/workos-ruby/">here</a>.</p>
|
68
|
+
|
65
69
|
<h2 id="label-Installation">Installation</h2>
|
66
70
|
|
67
|
-
<p>
|
68
|
-
you just want to use the package, just run:</p>
|
71
|
+
<p>To get started, you can install the WorkOS gem via RubyGems with:</p>
|
69
72
|
|
70
73
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='id identifier rubyid_install'>install</span> <span class='id identifier rubyid_workos'>workos</span>
|
71
74
|
</code></pre>
|
72
75
|
|
73
|
-
<p>If you
|
76
|
+
<p>If you're using Bundler to manage your application's gems, add the WorkOS gem to your Gemfile:</p>
|
77
|
+
|
78
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_source'>source</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https://rubygems.org</span><span class='tstring_end'>'</span></span>
|
79
|
+
|
80
|
+
<span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>workos</span><span class='tstring_end'>'</span></span>
|
81
|
+
</code></pre>
|
82
|
+
|
83
|
+
<h2 id="label-Configuration">Configuration</h2>
|
84
|
+
|
85
|
+
<p>To use the SDK you must first provide your API key from the <a href="https://dashboard.workos.com/api-keys">WorkOS Developer Dashboard</a>.</p>
|
86
|
+
|
87
|
+
<p>You can do this through the <code>WORKOS_KEY</code> environment variable or by calling <code>WorkOS.key = [your API key]</code>.</p>
|
88
|
+
|
89
|
+
<p>The WorkOS Gem will read the environment variable <code>WORKOS_KEY</code>:</p>
|
90
|
+
|
91
|
+
<pre class="code ruby"><code class="ruby">$ WORKOS_KEY=[your api key] ruby app.rb
|
92
|
+
</code></pre>
|
93
|
+
|
94
|
+
<p>Alternatively, you may set the key yourself, such as in an initializer in your application load path:</p>
|
95
|
+
|
96
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># /config/initializers/workos.rb
|
97
|
+
</span>
|
98
|
+
<span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_key'><span class='object_link'><a href="WorkOS.html#key-class_method" title="WorkOS.key (method)">key</a></span></span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>[your api key]</span><span class='tstring_end'>'</span></span>
|
99
|
+
</code></pre>
|
100
|
+
|
101
|
+
<h2 id="label-The+Audit+Log+Module">The Audit Log Module</h2>
|
102
|
+
|
103
|
+
<p>The Audit Log Module provides methods for creating Audit Log events on WorkOS.</p>
|
104
|
+
|
105
|
+
<p>See our <a href="https://dashboard.workos.com/docs/audit-log/quickstart">Audit Log Quickstart</a> for more information.</p>
|
106
|
+
|
107
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
108
|
+
<span class='label'>group:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Foo Corp</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
109
|
+
<span class='label'>location:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
110
|
+
<span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user.created</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
111
|
+
<span class='label'>action_type:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>C</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
112
|
+
<span class='label'>actor_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Foo</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
113
|
+
<span class='label'>actor_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user_12345</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
114
|
+
<span class='label'>target_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Bar</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
115
|
+
<span class='label'>target_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user_67890</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
116
|
+
<span class='label'>occurred_at:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2020-01-10T15:30:00-05:00</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
117
|
+
<span class='label'>metadata:</span> <span class='lbrace'>{</span>
|
118
|
+
<span class='label'>source:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Email</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
119
|
+
<span class='rbrace'>}</span>
|
120
|
+
<span class='rbrace'>}</span>
|
121
|
+
|
122
|
+
<span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="WorkOS/AuditLog.html" title="WorkOS::AuditLog (module)">AuditLog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create_event'><span class='object_link'><a href="WorkOS/AuditLog.html#create_event-class_method" title="WorkOS::AuditLog.create_event (method)">create_event</a></span></span><span class='lparen'>(</span><span class='label'>event:</span> <span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
123
|
+
</code></pre>
|
124
|
+
|
125
|
+
<h3 id="label-Idempotency">Idempotency</h3>
|
126
|
+
|
127
|
+
<p>To perform an idempotent request, provide an additional idempotency_key parameter to the <code>create_event</code> options.</p>
|
128
|
+
|
129
|
+
<pre class="code ruby"><code class="ruby"><span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="WorkOS/AuditLog.html" title="WorkOS::AuditLog (module)">AuditLog</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create_event'><span class='object_link'><a href="WorkOS/AuditLog.html#create_event-class_method" title="WorkOS::AuditLog.create_event (method)">create_event</a></span></span><span class='lparen'>(</span><span class='label'>event:</span> <span class='id identifier rubyid_payload'>payload</span><span class='comma'>,</span> <span class='label'>idempotency_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>key123456</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
130
|
+
</code></pre>
|
131
|
+
|
132
|
+
<p>See our <a href="https://dashboard.workos.com/docs/api-reference#idempotency">API Reference</a> for more information on idempotency keys.</p>
|
133
|
+
|
134
|
+
<h2 id="label-The+SSO+Module">The SSO Module</h2>
|
135
|
+
|
136
|
+
<p>The SSO Module provides convenience methods for authenticating a Single Sign On (SSO) user via WorkOS. WorkOS SSO follows the Oauth 2.0 specification.</p>
|
137
|
+
|
138
|
+
<p>First, you'll direct your SSO users to an <code>authorization_url</code>. They will sign in to their SSO account with their Identity Provider, and be redirected to a callback URL that you set in your WorkOS Dashboard. The user will be redirected with a <code>code</code> URL parameter, which you can then exchange for a WorkOS::Profile using the <code>WorkOS::SSO.get_profile</code> method.</p>
|
139
|
+
|
140
|
+
<p>See our Ruby SSO example app for a <a href="https://github.com/workos-inc/ruby-sso-example">complete example</a>.</p>
|
141
|
+
|
142
|
+
<pre class="code ruby"><code class="ruby">WorkOS::SSO.authorization_url(domain:, project_id:, redirect_uri:, state: {})
|
143
|
+
</code></pre>
|
144
|
+
|
145
|
+
<blockquote>
|
146
|
+
<p>Generate an authorization URL to intitiate the WorkOS OAuth2 workflow.</p>
|
147
|
+
</blockquote>
|
148
|
+
|
149
|
+
<p><code>WorkOS::SSO.authorization_url</code> accepts four arguments:</p>
|
150
|
+
<ul><li>
|
151
|
+
<p><code>domain</code> (string) — the authenticating user's company domain, without protocol (ex. <code>example.com</code>)</p>
|
152
|
+
</li><li>
|
153
|
+
<p><code>project_id</code> (string) — your application's WorkOS <a href="https://dashboard.workos.com/sso/configuration">Project ID</a> (ex. <code>project_01JG3BCPTRTSTTWQR4VSHXGWCQ</code>)</p>
|
154
|
+
</li><li>
|
155
|
+
<p><code>state</code> (optional, hash) — an optional hash used to manage state across authorization transactions (ex. <code>{ next_page: '/docs'}</code>)</p>
|
156
|
+
</li><li>
|
157
|
+
<p><code>redirect_uri</code> (string) — a callback URL where your application redirects the user-agent after an authorization code is granted (ex. <code>workos.dev/callback</code>). This must match one of your configured callback URLs for the associated project on your WorkOS dashboard.</p>
|
158
|
+
</li></ul>
|
159
|
+
|
160
|
+
<p>This method will return an OAuth2 query string of the form:</p>
|
161
|
+
|
162
|
+
<p><code>https://${domain}/sso/authorize?response_type=code&client_id=${projectID}&redirect_uri=${redirectURI}&state=${state}</code></p>
|
74
163
|
|
75
|
-
<
|
164
|
+
<p>For example, when used in a <a href="http://sinatrarb.com/">Sinatra app</a>:</p>
|
165
|
+
|
166
|
+
<pre class="code ruby"><code class="ruby"><span class='const'>DOMAIN</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>example.com</span><span class='tstring_end'>'</span></span>
|
167
|
+
<span class='const'>PROJECT_ID</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>{projectId}</span><span class='tstring_end'>'</span></span>
|
168
|
+
<span class='const'>REDIRECT_URI</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost:4567/callback</span><span class='tstring_end'>'</span></span>
|
169
|
+
|
170
|
+
<span class='id identifier rubyid_get'>get</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/auth</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span>
|
171
|
+
<span class='id identifier rubyid_authorization_url'>authorization_url</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="WorkOS/SSO.html" title="WorkOS::SSO (module)">SSO</a></span></span><span class='period'>.</span><span class='id identifier rubyid_authorization_url'><span class='object_link'><a href="WorkOS/SSO.html#authorization_url-class_method" title="WorkOS::SSO.authorization_url (method)">authorization_url</a></span></span><span class='lparen'>(</span>
|
172
|
+
<span class='label'>domain:</span> <span class='const'>DOMAIN</span><span class='comma'>,</span>
|
173
|
+
<span class='label'>project_id:</span> <span class='const'>PROJECT_ID</span><span class='comma'>,</span>
|
174
|
+
<span class='label'>redirect_uri:</span> <span class='const'>REDIRECT_URI</span><span class='comma'>,</span>
|
175
|
+
<span class='rparen'>)</span>
|
176
|
+
|
177
|
+
<span class='id identifier rubyid_redirect'>redirect</span> <span class='id identifier rubyid_authorization_url'>authorization_url</span>
|
178
|
+
<span class='kw'>end</span>
|
76
179
|
</code></pre>
|
77
180
|
|
78
|
-
<
|
181
|
+
<p>The user would be redirected to:</p>
|
182
|
+
|
183
|
+
<p><code>https://api.workos.com/sso/authorize?response_type=code&client_id={projectID}&redirect_uri=http://localhost:4567/callback</code></p>
|
184
|
+
|
185
|
+
<p>WorkOS takes over from here, sending the user to authenticate with their IDP, and on successful login, returns the user to your callback URL with a <code>code</code> parameter. You'll use <code>WorkOS::SSO.profile</code> to exchange the code for a <code>WorkOS::Profile</code>.</p>
|
186
|
+
|
187
|
+
<pre class="code ruby"><code class="ruby">WorkOS::SSO.profile(code:, project_id:)</h4>
|
188
|
+
</code></pre>
|
189
|
+
|
190
|
+
<blockquote>
|
191
|
+
<p>Fetch a WorkOS::Profile for an authorized user.</p>
|
192
|
+
</blockquote>
|
193
|
+
|
194
|
+
<p><code>WorkOS::SSO.profile</code> accepts two arguments:</p>
|
79
195
|
<ul><li>
|
80
|
-
<p>
|
196
|
+
<p><code>code</code> (string) — an opaque string provided by the authorization server; will be exchanged for an Access Token when the user's profile is sent</p>
|
197
|
+
</li><li>
|
198
|
+
<p><code>project_id</code> (string) — your application's WorkOS <a href="https://dashboard.workos.com/sso/configuration">Project ID</a> (ex. <code>project_01JG3BCPTRTSTTWQR4VSHXGWCQ</code>)</p>
|
81
199
|
</li></ul>
|
200
|
+
|
201
|
+
<p>This method will return an instance of a <code>WorkOS::Profile</code> with the following attributes:</p>
|
202
|
+
|
203
|
+
<pre class="code ruby"><code class="ruby"><WorkOS::Profile:0x00007fb6e4193d20
|
204
|
+
@id="prof_01DRA1XNSJDZ19A31F183ECQW5",
|
205
|
+
@email="demo@workos-okta.com",
|
206
|
+
@first_name="WorkOS",
|
207
|
+
@connection_type="OktaSAML",
|
208
|
+
@last_name="Demo",
|
209
|
+
@idp_id="00u1klkowm8EGah2H357",
|
210
|
+
>
|
211
|
+
</code></pre>
|
212
|
+
|
213
|
+
<p>Our Sintatra app can be extended to use this method:</p>
|
214
|
+
|
215
|
+
<pre class="code ruby"><code class="ruby"><span class='const'>DOMAIN</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>example.com</span><span class='tstring_end'>'</span></span>
|
216
|
+
<span class='const'>PROJECT_ID</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>{projectId}</span><span class='tstring_end'>'</span></span>
|
217
|
+
<span class='const'>REDIRECT_URI</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost:4567/callback</span><span class='tstring_end'>'</span></span>
|
218
|
+
|
219
|
+
<span class='id identifier rubyid_get'>get</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/auth</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span>
|
220
|
+
<span class='id identifier rubyid_authorization_url'>authorization_url</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="WorkOS/SSO.html" title="WorkOS::SSO (module)">SSO</a></span></span><span class='period'>.</span><span class='id identifier rubyid_authorization_url'><span class='object_link'><a href="WorkOS/SSO.html#authorization_url-class_method" title="WorkOS::SSO.authorization_url (method)">authorization_url</a></span></span><span class='lparen'>(</span>
|
221
|
+
<span class='label'>domain:</span> <span class='const'>DOMAIN</span><span class='comma'>,</span>
|
222
|
+
<span class='label'>project_id:</span> <span class='const'>PROJECT_ID</span><span class='comma'>,</span>
|
223
|
+
<span class='label'>redirect_uri:</span> <span class='const'>REDIRECT_URI</span><span class='comma'>,</span>
|
224
|
+
<span class='rparen'>)</span>
|
225
|
+
|
226
|
+
<span class='id identifier rubyid_redirect'>redirect</span> <span class='id identifier rubyid_authorization_url'>authorization_url</span>
|
227
|
+
<span class='kw'>end</span>
|
228
|
+
|
229
|
+
<span class='id identifier rubyid_get'>get</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/callback</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span>
|
230
|
+
<span class='id identifier rubyid_profile'>profile</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="WorkOS.html" title="WorkOS (module)">WorkOS</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="WorkOS/SSO.html" title="WorkOS::SSO (module)">SSO</a></span></span><span class='period'>.</span><span class='id identifier rubyid_profile'><span class='object_link'><a href="WorkOS/SSO.html#profile-class_method" title="WorkOS::SSO.profile (method)">profile</a></span></span><span class='lparen'>(</span>
|
231
|
+
<span class='label'>code:</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>code</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
|
232
|
+
<span class='label'>project_id:</span> <span class='const'>PROJECT_ID</span><span class='comma'>,</span>
|
233
|
+
<span class='rparen'>)</span>
|
234
|
+
|
235
|
+
<span class='id identifier rubyid_session'>session</span><span class='lbracket'>[</span><span class='symbol'>:user</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_profile'>profile</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
|
236
|
+
|
237
|
+
<span class='id identifier rubyid_redirect'>redirect</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span>
|
238
|
+
<span class='kw'>end</span>
|
239
|
+
</code></pre>
|
240
|
+
|
241
|
+
<p>Given the <code>WorkOS::Profile</code>, you can now sign the user in according to your own authentication setup.</p>
|
82
242
|
</div></div>
|
83
243
|
|
84
244
|
<div id="footer">
|
85
|
-
Generated on
|
245
|
+
Generated on Thu Jan 30 09:12:47 2020 by
|
86
246
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
87
|
-
0.9.
|
247
|
+
0.9.22 (ruby-2.6.5).
|
88
248
|
</div>
|
89
249
|
|
90
250
|
</div>
|
data/docs/file_list.html
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
5
|
<meta charset="utf-8" />
|
6
6
|
|
7
|
-
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen"
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
|
8
8
|
|
9
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen"
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
|
10
10
|
|
11
11
|
|
12
12
|
|
data/docs/frames.html
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
|
-
<title>Documentation by YARD 0.9.
|
5
|
+
<title>Documentation by YARD 0.9.22</title>
|
6
6
|
</head>
|
7
|
-
<script type="text/javascript"
|
7
|
+
<script type="text/javascript">
|
8
8
|
var match = unescape(window.location.hash).match(/^#!(.+)/);
|
9
9
|
var name = match ? match[1] : 'index.html';
|
10
10
|
name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
|
data/docs/index.html
CHANGED
@@ -4,15 +4,15 @@
|
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title>
|
7
|
-
Documentation by YARD 0.9.
|
7
|
+
Documentation by YARD 0.9.22
|
8
8
|
|
9
9
|
</title>
|
10
10
|
|
11
|
-
<link rel="stylesheet" href="css/style.css" type="text/css"
|
11
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
12
12
|
|
13
|
-
<link rel="stylesheet" href="css/common.css" type="text/css"
|
13
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
14
14
|
|
15
|
-
<script type="text/javascript"
|
15
|
+
<script type="text/javascript">
|
16
16
|
pathId = null;
|
17
17
|
relpath = '';
|
18
18
|
</script>
|
@@ -52,7 +52,7 @@
|
|
52
52
|
<div class="clear"></div>
|
53
53
|
</div>
|
54
54
|
|
55
|
-
<div id="content"><h1 class="noborder title">Documentation by YARD 0.9.
|
55
|
+
<div id="content"><h1 class="noborder title">Documentation by YARD 0.9.22</h1>
|
56
56
|
<div id="listing">
|
57
57
|
<h1 class="alphaindex">Alphabetic Index</h1>
|
58
58
|
|
@@ -76,12 +76,41 @@
|
|
76
76
|
<td valign='top' width="33%">
|
77
77
|
|
78
78
|
|
79
|
+
<ul id="alpha_A" class="alpha">
|
80
|
+
<li class="letter">A</li>
|
81
|
+
<ul>
|
82
|
+
|
83
|
+
<li>
|
84
|
+
<span class='object_link'><a href="WorkOS/APIError.html" title="WorkOS::APIError (class)">APIError</a></span>
|
85
|
+
|
86
|
+
<small>(WorkOS)</small>
|
87
|
+
|
88
|
+
</li>
|
89
|
+
|
90
|
+
<li>
|
91
|
+
<span class='object_link'><a href="WorkOS/AuditLog.html" title="WorkOS::AuditLog (module)">AuditLog</a></span>
|
92
|
+
|
93
|
+
<small>(WorkOS)</small>
|
94
|
+
|
95
|
+
</li>
|
96
|
+
|
97
|
+
<li>
|
98
|
+
<span class='object_link'><a href="WorkOS/AuthenticationError.html" title="WorkOS::AuthenticationError (class)">AuthenticationError</a></span>
|
99
|
+
|
100
|
+
<small>(WorkOS)</small>
|
101
|
+
|
102
|
+
</li>
|
103
|
+
|
104
|
+
</ul>
|
105
|
+
</ul>
|
106
|
+
|
107
|
+
|
79
108
|
<ul id="alpha_B" class="alpha">
|
80
109
|
<li class="letter">B</li>
|
81
110
|
<ul>
|
82
111
|
|
83
112
|
<li>
|
84
|
-
<span class='object_link'><a href="WorkOS/Base.html" title="WorkOS::Base (
|
113
|
+
<span class='object_link'><a href="WorkOS/Base.html" title="WorkOS::Base (module)">Base</a></span>
|
85
114
|
|
86
115
|
<small>(WorkOS)</small>
|
87
116
|
|
@@ -91,21 +120,29 @@
|
|
91
120
|
</ul>
|
92
121
|
|
93
122
|
|
94
|
-
<ul id="
|
95
|
-
<li class="letter">
|
123
|
+
<ul id="alpha_C" class="alpha">
|
124
|
+
<li class="letter">C</li>
|
96
125
|
<ul>
|
97
126
|
|
98
127
|
<li>
|
99
|
-
<span class='object_link'><a href="WorkOS/
|
128
|
+
<span class='object_link'><a href="WorkOS/Client.html" title="WorkOS::Client (module)">Client</a></span>
|
100
129
|
|
101
130
|
<small>(WorkOS)</small>
|
102
131
|
|
103
132
|
</li>
|
104
133
|
|
134
|
+
</ul>
|
135
|
+
</ul>
|
136
|
+
|
137
|
+
|
138
|
+
<ul id="alpha_I" class="alpha">
|
139
|
+
<li class="letter">I</li>
|
140
|
+
<ul>
|
141
|
+
|
105
142
|
<li>
|
106
|
-
<span class='object_link'><a href="WorkOS/
|
143
|
+
<span class='object_link'><a href="WorkOS/InvalidRequestError.html" title="WorkOS::InvalidRequestError (class)">InvalidRequestError</a></span>
|
107
144
|
|
108
|
-
<small>(WorkOS
|
145
|
+
<small>(WorkOS)</small>
|
109
146
|
|
110
147
|
</li>
|
111
148
|
|
@@ -113,17 +150,31 @@
|
|
113
150
|
</ul>
|
114
151
|
|
115
152
|
|
116
|
-
<ul id="
|
117
|
-
<li class="letter">
|
153
|
+
<ul id="alpha_P" class="alpha">
|
154
|
+
<li class="letter">P</li>
|
118
155
|
<ul>
|
119
156
|
|
120
157
|
<li>
|
121
|
-
<span class='object_link'><a href="WorkOS/
|
158
|
+
<span class='object_link'><a href="WorkOS/Profile.html" title="WorkOS::Profile (class)">Profile</a></span>
|
122
159
|
|
123
160
|
<small>(WorkOS)</small>
|
124
161
|
|
125
162
|
</li>
|
126
163
|
|
164
|
+
<li>
|
165
|
+
<span class='object_link'><a href="WorkOS/Types/ProfileStruct.html" title="WorkOS::Types::ProfileStruct (class)">ProfileStruct</a></span>
|
166
|
+
|
167
|
+
<small>(WorkOS::Types)</small>
|
168
|
+
|
169
|
+
</li>
|
170
|
+
|
171
|
+
<li>
|
172
|
+
<span class='object_link'><a href="WorkOS/Types/Provider.html" title="WorkOS::Types::Provider (class)">Provider</a></span>
|
173
|
+
|
174
|
+
<small>(WorkOS::Types)</small>
|
175
|
+
|
176
|
+
</li>
|
177
|
+
|
127
178
|
</ul>
|
128
179
|
</ul>
|
129
180
|
|
@@ -158,6 +209,9 @@
|
|
158
209
|
</ul>
|
159
210
|
|
160
211
|
|
212
|
+
</td><td valign='top' width="33%">
|
213
|
+
|
214
|
+
|
161
215
|
<ul id="alpha_W" class="alpha">
|
162
216
|
<li class="letter">W</li>
|
163
217
|
<ul>
|
@@ -167,6 +221,13 @@
|
|
167
221
|
|
168
222
|
</li>
|
169
223
|
|
224
|
+
<li>
|
225
|
+
<span class='object_link'><a href="WorkOS/WorkOSError.html" title="WorkOS::WorkOSError (class)">WorkOSError</a></span>
|
226
|
+
|
227
|
+
<small>(WorkOS)</small>
|
228
|
+
|
229
|
+
</li>
|
230
|
+
|
170
231
|
</ul>
|
171
232
|
</ul>
|
172
233
|
|
@@ -179,9 +240,9 @@
|
|
179
240
|
</div>
|
180
241
|
|
181
242
|
<div id="footer">
|
182
|
-
Generated on
|
243
|
+
Generated on Thu Jan 30 09:12:46 2020 by
|
183
244
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
184
|
-
0.9.
|
245
|
+
0.9.22 (ruby-2.6.5).
|
185
246
|
</div>
|
186
247
|
|
187
248
|
</div>
|