rodauth-oauth 0.5.0 → 0.7.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/CHANGELOG.md +52 -0
- data/README.md +14 -7
- data/lib/generators/{roda → rodauth}/oauth/install_generator.rb +0 -0
- data/lib/generators/{roda → rodauth}/oauth/templates/app/models/oauth_application.rb +0 -0
- data/lib/generators/{roda → rodauth}/oauth/templates/app/models/oauth_grant.rb +0 -0
- data/lib/generators/{roda → rodauth}/oauth/templates/app/models/oauth_token.rb +0 -0
- data/lib/generators/{roda → rodauth}/oauth/templates/db/migrate/create_rodauth_oauth.rb +1 -1
- data/lib/generators/{roda → rodauth}/oauth/views_generator.rb +1 -1
- data/lib/rodauth/features/oauth.rb +51 -29
- data/lib/rodauth/features/oauth_http_mac.rb +1 -1
- data/lib/rodauth/features/oauth_jwt.rb +12 -3
- data/lib/rodauth/features/oauth_saml.rb +1 -1
- data/lib/rodauth/features/oidc.rb +23 -2
- data/lib/rodauth/oauth/version.rb +1 -1
- data/lib/rodauth/oauth.rb +2 -0
- data/locales/en.yml +34 -0
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91f66a3575e9f63b13eac64e44c3ce768fb5904ce5e77e0239e3f1f437c21fbf
|
4
|
+
data.tar.gz: bb80d8836f4ad0b99b8e75458861c36526b9a60e623f6d799ff88a751bfe9bc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09a5d103d91e13b011456259b255ddd930692e5f50b9ebc892fa86c8ac48006e2815f7339cb10cf1d710eefd5ae18da56a08e43aedd47002bcbaa1cf82c59c6d'
|
7
|
+
data.tar.gz: 745409245789cb8e77a50724192b126e047a5258827bdec765bd2ff07ff3ff4c77bb44463bc513f384f35a3e470f67496a1f12a56777cb27c6af36e903febb7f
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,58 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
### 0.7.0 (02/12/2021)
|
6
|
+
|
7
|
+
#### Features
|
8
|
+
|
9
|
+
* Internationalization (i18n) support by hooking on [rodauth-oauth](https://github.com/janko/rodauth-i18n).
|
10
|
+
* Sets all text using `translatable_method`.
|
11
|
+
* Provides english translations for all `rodauth-oauth` related user facing text.
|
12
|
+
|
13
|
+
#### Improvements
|
14
|
+
|
15
|
+
* Enable CORS requests for OpenID configuration endpoint (@ianks)
|
16
|
+
* Introspect endpoint now exposes the `exp` token property (@gmanley)
|
17
|
+
|
18
|
+
#### Bugfixes
|
19
|
+
|
20
|
+
* on rotation policy, although the first refresh token was invalidated, a new one wasn't being provided. This change allows a new refresh token to be generated and exposed in the response (@gmanley)
|
21
|
+
|
22
|
+
#### Chore
|
23
|
+
|
24
|
+
Setting `rodauth` minimal supported version to `2.0.0`.
|
25
|
+
|
26
|
+
### 0.6.1 (08/09/2021)
|
27
|
+
|
28
|
+
#### Bugfixes
|
29
|
+
|
30
|
+
* Fixed rails view templates escaping.
|
31
|
+
* Fixed declaration of authorize template in the generator.
|
32
|
+
|
33
|
+
### 0.6.0 (21/05/2021)
|
34
|
+
|
35
|
+
### Improvements
|
36
|
+
|
37
|
+
* RBS signatures
|
38
|
+
|
39
|
+
### Chore
|
40
|
+
|
41
|
+
* Ruby 3 and Truffleruby are now officially supported and tested in CI.
|
42
|
+
|
43
|
+
### 0.5.1 (19/03/2021)
|
44
|
+
|
45
|
+
#### Improvements
|
46
|
+
|
47
|
+
* Changing "Callback URL" to "Redirect URL" in default templates;
|
48
|
+
|
49
|
+
#### Bugfixes
|
50
|
+
|
51
|
+
* (rails integration) Fixed templates location;
|
52
|
+
* (rails integration) Fixed migration name from generator;
|
53
|
+
* (rails integration) fixed links, html tags, styling and unassigned variables from a few view templates;
|
54
|
+
* `oauth_application_path` is now compliant with prefixes and other url helpers, while now having a `oauth_application_url` counterpart;
|
55
|
+
* (rails integration) skipping csrf checks for "/userinfo" request (OIDC)
|
56
|
+
|
5
57
|
### 0.5.0 (08/02/2021)
|
6
58
|
|
7
59
|
#### RP-Initiated Logout
|
data/README.md
CHANGED
@@ -516,7 +516,7 @@ payload = json.parse(response.to_s)
|
|
516
516
|
puts payload #=> {
|
517
517
|
# "access_token" => ....
|
518
518
|
# "mac_key" => ....
|
519
|
-
# "mac_algorithm" =>
|
519
|
+
# "mac_algorithm" =>
|
520
520
|
```
|
521
521
|
|
522
522
|
which you'll be able to use to generate the mac signature to send in the "Authorization" header.
|
@@ -565,7 +565,7 @@ plugin :rodauth do
|
|
565
565
|
enable :oauth_jwt
|
566
566
|
oauth_jwt_key rsa_private
|
567
567
|
oauth_jwt_public_key rsa_public
|
568
|
-
oauth_jwt_algorithm "RS256"
|
568
|
+
oauth_jwt_algorithm "RS256"
|
569
569
|
end
|
570
570
|
```
|
571
571
|
|
@@ -581,7 +581,7 @@ plugin :rodauth do
|
|
581
581
|
enable :oauth_jwt
|
582
582
|
oauth_jwt_jwk_key rsa_private
|
583
583
|
oauth_jwt_jwk_public_key rsa_public
|
584
|
-
oauth_jwt_jwk_algorithm "RS256"
|
584
|
+
oauth_jwt_jwk_algorithm "RS256"
|
585
585
|
end
|
586
586
|
```
|
587
587
|
|
@@ -627,17 +627,25 @@ puts payload #=> {
|
|
627
627
|
|
628
628
|
You'll still need the "oauth_tokens" table, however you can remove the "token" column.
|
629
629
|
|
630
|
+
#### Internationalization (i18n)
|
631
|
+
|
632
|
+
`rodauth-oauth` supports translating all user-facing text found in all pages and forms, by integrating with [rodauth-i18n](https://github.com/janko/rodauth-i18n). Just set it up in your application and `rodauth` configuration.
|
633
|
+
|
634
|
+
Default translations shipping with `rodauth-oauth` can be found [in this directory](https://gitlab.com/honeyryderchuck/rodauth-oauth/-/tree/master/locales). If they're not available for the languages you'd like to support, consider getting them translated from the english text, and contributing them to this repository via a Merge Request.
|
635
|
+
|
636
|
+
(This feature is available since `v0.7`.)
|
637
|
+
|
630
638
|
#### Caveats
|
631
639
|
|
632
640
|
Although very handy for the mentioned use case, one can't revoke a JWT token on demand (it must expire first).
|
633
641
|
|
634
642
|
## Ruby support policy
|
635
643
|
|
636
|
-
The minimum Ruby version required to run `rodauth-oauth` is 2.3 . Besides that, it should support all rubies that rodauth and roda support, including JRuby and
|
644
|
+
The minimum Ruby version required to run `rodauth-oauth` is 2.3 . Besides that, it should support all rubies that rodauth and roda support, including JRuby and truffleruby.
|
637
645
|
|
638
|
-
###
|
646
|
+
### Rails
|
639
647
|
|
640
|
-
If you're interested in using this library
|
648
|
+
If you're interested in using this library with rails, be sure to check `rodauth-rails` policy, as it supports rails 5.2 upwards.
|
641
649
|
|
642
650
|
## Development
|
643
651
|
|
@@ -646,4 +654,3 @@ After checking out the repo, run `bundle install` to install dependencies. Then,
|
|
646
654
|
## Contributing
|
647
655
|
|
648
656
|
Bug reports and pull requests are welcome on Gitlab at https://gitlab.com/honeyryderchuck/rodauth-oauth.
|
649
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -9,7 +9,7 @@ module Rodauth::OAuth
|
|
9
9
|
source_root "#{__dir__}/templates"
|
10
10
|
namespace "rodauth:oauth:views"
|
11
11
|
|
12
|
-
DEFAULT = %w[
|
12
|
+
DEFAULT = %w[authorize].freeze
|
13
13
|
VIEWS = {
|
14
14
|
oauth_authorize: DEFAULT,
|
15
15
|
oauth_applications: %w[oauth_applications oauth_application new_oauth_application]
|
@@ -9,7 +9,7 @@ require "rodauth/oauth/ttl_store"
|
|
9
9
|
require "rodauth/oauth/database_extensions"
|
10
10
|
|
11
11
|
module Rodauth
|
12
|
-
Feature.define(:oauth) do
|
12
|
+
Feature.define(:oauth, :Oauth) do
|
13
13
|
# RUBY EXTENSIONS
|
14
14
|
unless Regexp.method_defined?(:match?)
|
15
15
|
# If you wonder why this is there: the oauth feature uses a refinement to enhance the
|
@@ -139,7 +139,15 @@ module Rodauth
|
|
139
139
|
auth_value_method :already_in_use_response_status, 409
|
140
140
|
|
141
141
|
# OAuth Applications
|
142
|
-
auth_value_method :
|
142
|
+
auth_value_method :oauth_applications_route, "oauth-applications"
|
143
|
+
def oauth_applications_path(opts = {})
|
144
|
+
route_path(oauth_applications_route, opts)
|
145
|
+
end
|
146
|
+
|
147
|
+
def oauth_applications_url(opts = {})
|
148
|
+
route_url(oauth_applications_route, opts)
|
149
|
+
end
|
150
|
+
|
143
151
|
auth_value_method :oauth_applications_table, :oauth_applications
|
144
152
|
|
145
153
|
auth_value_method :oauth_applications_id_column, :id
|
@@ -160,24 +168,24 @@ module Rodauth
|
|
160
168
|
auth_value_method :oauth_token_type, "bearer"
|
161
169
|
auth_value_method :oauth_refresh_token_protection_policy, "none" # can be: none, sender_constrained, rotation
|
162
170
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
171
|
+
translatable_method :invalid_client_message, "Invalid client"
|
172
|
+
translatable_method :invalid_grant_type_message, "Invalid grant type"
|
173
|
+
translatable_method :invalid_grant_message, "Invalid grant"
|
174
|
+
translatable_method :invalid_scope_message, "Invalid scope"
|
167
175
|
|
168
|
-
|
169
|
-
|
176
|
+
translatable_method :invalid_url_message, "Invalid URL"
|
177
|
+
translatable_method :unsupported_token_type_message, "Invalid token type hint"
|
170
178
|
|
171
|
-
|
172
|
-
|
173
|
-
|
179
|
+
translatable_method :unique_error_message, "is already in use"
|
180
|
+
translatable_method :null_error_message, "is not filled"
|
181
|
+
translatable_method :already_in_use_message, "error generating unique token"
|
174
182
|
auth_value_method :already_in_use_error_code, "invalid_request"
|
175
183
|
|
176
184
|
# PKCE
|
177
185
|
auth_value_method :code_challenge_required_error_code, "invalid_request"
|
178
|
-
|
186
|
+
translatable_method :code_challenge_required_message, "code challenge required"
|
179
187
|
auth_value_method :unsupported_transform_algorithm_error_code, "invalid_request"
|
180
|
-
|
188
|
+
translatable_method :unsupported_transform_algorithm_message, "transform algorithm not supported"
|
181
189
|
|
182
190
|
# METADATA
|
183
191
|
auth_value_method :oauth_metadata_service_documentation, nil
|
@@ -192,6 +200,7 @@ module Rodauth
|
|
192
200
|
auth_value_method :oauth_unique_id_generation_retries, 3
|
193
201
|
|
194
202
|
auth_value_methods(
|
203
|
+
:oauth_application_path,
|
195
204
|
:fetch_access_token,
|
196
205
|
:oauth_unique_id_generator,
|
197
206
|
:secret_matches?,
|
@@ -363,9 +372,13 @@ module Rodauth
|
|
363
372
|
end
|
364
373
|
end
|
365
374
|
|
375
|
+
def oauth_application_path(id)
|
376
|
+
"#{oauth_applications_path}/#{id}"
|
377
|
+
end
|
378
|
+
|
366
379
|
# /oauth-applications routes
|
367
380
|
def oauth_applications
|
368
|
-
request.on(
|
381
|
+
request.on(oauth_applications_route) do
|
369
382
|
require_account
|
370
383
|
|
371
384
|
request.get "new" do
|
@@ -422,16 +435,20 @@ module Rodauth
|
|
422
435
|
false
|
423
436
|
when revoke_path
|
424
437
|
!json_request?
|
425
|
-
when authorize_path,
|
438
|
+
when authorize_path, oauth_applications_path
|
426
439
|
only_json? ? false : super
|
427
440
|
else
|
428
441
|
super
|
429
442
|
end
|
430
443
|
end
|
431
444
|
|
432
|
-
# Overrides
|
433
|
-
def
|
434
|
-
super ||
|
445
|
+
# Overrides session_value, so that a valid authorization token also authenticates a request
|
446
|
+
def session_value
|
447
|
+
super || begin
|
448
|
+
return unless authorization_token
|
449
|
+
|
450
|
+
authorization_token[oauth_tokens_account_id_column]
|
451
|
+
end
|
435
452
|
end
|
436
453
|
|
437
454
|
def accepts_json?
|
@@ -449,10 +466,6 @@ module Rodauth
|
|
449
466
|
end
|
450
467
|
end
|
451
468
|
|
452
|
-
def initialize(scope)
|
453
|
-
@scope = scope
|
454
|
-
end
|
455
|
-
|
456
469
|
def scopes
|
457
470
|
scope = request.params["scope"]
|
458
471
|
case scope
|
@@ -551,12 +564,11 @@ module Rodauth
|
|
551
564
|
self.class.__send__(:include, Rodauth::OAuth::ExtendDatabase(db))
|
552
565
|
|
553
566
|
# Check whether we can reutilize db entries for the same account / application pair
|
554
|
-
one_oauth_token_per_account =
|
555
|
-
|
556
|
-
definition[:
|
557
|
-
definition[:columns] == oauth_tokens_unique_columns
|
558
|
-
end
|
567
|
+
one_oauth_token_per_account = db.indexes(oauth_tokens_table).values.any? do |definition|
|
568
|
+
definition[:unique] &&
|
569
|
+
definition[:columns] == oauth_tokens_unique_columns
|
559
570
|
end
|
571
|
+
|
560
572
|
self.class.send(:define_method, :__one_oauth_token_per_account) { one_oauth_token_per_account }
|
561
573
|
end
|
562
574
|
|
@@ -1091,6 +1103,14 @@ module Rodauth
|
|
1091
1103
|
oauth_tokens_scopes_column => oauth_token[oauth_tokens_scopes_column]
|
1092
1104
|
}
|
1093
1105
|
|
1106
|
+
refresh_token = oauth_unique_id_generator
|
1107
|
+
|
1108
|
+
if oauth_tokens_refresh_token_hash_column
|
1109
|
+
insert_params[oauth_tokens_refresh_token_hash_column] = generate_token_hash(refresh_token)
|
1110
|
+
else
|
1111
|
+
insert_params[oauth_tokens_refresh_token_column] = refresh_token
|
1112
|
+
end
|
1113
|
+
|
1094
1114
|
# revoke the refresh token
|
1095
1115
|
oauth_tokens_ds.where(oauth_tokens_id_column => oauth_token[oauth_tokens_id_column])
|
1096
1116
|
.update(oauth_tokens_revoked_at_column => Sequel::CURRENT_TIMESTAMP)
|
@@ -1104,6 +1124,7 @@ module Rodauth
|
|
1104
1124
|
end
|
1105
1125
|
|
1106
1126
|
oauth_token[oauth_tokens_token_column] = token
|
1127
|
+
oauth_token[oauth_tokens_refresh_token_column] = refresh_token if refresh_token
|
1107
1128
|
oauth_token
|
1108
1129
|
end
|
1109
1130
|
end
|
@@ -1129,7 +1150,8 @@ module Rodauth
|
|
1129
1150
|
scope: token[oauth_tokens_scopes_column],
|
1130
1151
|
client_id: oauth_application[oauth_applications_client_id_column],
|
1131
1152
|
# username
|
1132
|
-
token_type: oauth_token_type
|
1153
|
+
token_type: oauth_token_type,
|
1154
|
+
exp: token[oauth_tokens_expires_in_column].to_i
|
1133
1155
|
}
|
1134
1156
|
end
|
1135
1157
|
|
@@ -1350,7 +1372,7 @@ module Rodauth
|
|
1350
1372
|
issuer: issuer,
|
1351
1373
|
authorization_endpoint: authorize_url,
|
1352
1374
|
token_endpoint: token_url,
|
1353
|
-
registration_endpoint:
|
1375
|
+
registration_endpoint: oauth_applications_url,
|
1354
1376
|
scopes_supported: oauth_application_scopes,
|
1355
1377
|
response_types_supported: responses_supported,
|
1356
1378
|
response_modes_supported: response_modes_supported,
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require "rodauth/oauth/ttl_store"
|
4
4
|
|
5
5
|
module Rodauth
|
6
|
-
Feature.define(:oauth_jwt) do
|
6
|
+
Feature.define(:oauth_jwt, :OauthJwt) do
|
7
7
|
depends :oauth
|
8
8
|
|
9
9
|
JWKS = OAuth::TtlStore.new
|
@@ -33,8 +33,8 @@ module Rodauth
|
|
33
33
|
auth_value_method :oauth_jwt_jwe_copyright, nil
|
34
34
|
auth_value_method :oauth_jwt_audience, nil
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
translatable_method :request_uri_not_supported_message, "request uri is unsupported"
|
37
|
+
translatable_method :invalid_request_object_message, "request object is invalid"
|
38
38
|
|
39
39
|
auth_value_methods(
|
40
40
|
:jwt_encode,
|
@@ -62,6 +62,15 @@ module Rodauth
|
|
62
62
|
authorization_required unless scopes.any? { |scope| token_scopes.include?(scope) }
|
63
63
|
end
|
64
64
|
|
65
|
+
# Overrides session_value, so that a valid authorization token also authenticates a request
|
66
|
+
def session_value
|
67
|
+
super || begin
|
68
|
+
return unless authorization_token
|
69
|
+
|
70
|
+
authorization_token["sub"]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
65
74
|
private
|
66
75
|
|
67
76
|
unless method_defined?(:last_account_login_at)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
module Rodauth
|
4
|
-
Feature.define(:oidc) do
|
4
|
+
Feature.define(:oidc, :Oidc) do
|
5
5
|
# https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
|
6
6
|
OIDC_SCOPES_MAP = {
|
7
7
|
"profile" => %i[name family_name given_name middle_name nickname preferred_username
|
@@ -68,7 +68,7 @@ module Rodauth
|
|
68
68
|
auth_value_method :oauth_grants_nonce_column, :nonce
|
69
69
|
auth_value_method :oauth_tokens_nonce_column, :nonce
|
70
70
|
|
71
|
-
|
71
|
+
translatable_method :invalid_scope_message, "The Access Token expired"
|
72
72
|
|
73
73
|
auth_value_method :webfinger_relation, "http://openid.net/specs/connect/1.0/issuer"
|
74
74
|
|
@@ -186,6 +186,8 @@ module Rodauth
|
|
186
186
|
|
187
187
|
def openid_configuration(alt_issuer = nil)
|
188
188
|
request.on(".well-known/openid-configuration") do
|
189
|
+
allow_cors(request)
|
190
|
+
|
189
191
|
request.get do
|
190
192
|
json_response_success(openid_configuration_body(alt_issuer), cache: true)
|
191
193
|
end
|
@@ -215,6 +217,15 @@ module Rodauth
|
|
215
217
|
end
|
216
218
|
end
|
217
219
|
|
220
|
+
def check_csrf?
|
221
|
+
case request.path
|
222
|
+
when userinfo_path
|
223
|
+
false
|
224
|
+
else
|
225
|
+
super
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
218
229
|
private
|
219
230
|
|
220
231
|
def require_authorizable_account
|
@@ -484,5 +495,15 @@ module Rodauth
|
|
484
495
|
(val.respond_to?(:empty?) && val.empty?)
|
485
496
|
end
|
486
497
|
end
|
498
|
+
|
499
|
+
def allow_cors(request)
|
500
|
+
return unless request.request_method == "OPTIONS"
|
501
|
+
|
502
|
+
response["Access-Control-Allow-Origin"] = "*"
|
503
|
+
response["Access-Control-Allow-Methods"] = "GET, OPTIONS"
|
504
|
+
response["Access-Control-Max-Age"] = "3600"
|
505
|
+
response.status = 200
|
506
|
+
request.halt
|
507
|
+
end
|
487
508
|
end
|
488
509
|
end
|
data/lib/rodauth/oauth.rb
CHANGED
data/locales/en.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
en:
|
2
|
+
rodauth:
|
3
|
+
require_authorization_error_flash: "Please authorize to continue"
|
4
|
+
create_oauth_application_error_flash: "There was an error registering your oauth application"
|
5
|
+
create_oauth_application_notice_flash: "Your oauth application has been registered"
|
6
|
+
revoke_oauth_token_notice_flash: "The oauth token has been revoked"
|
7
|
+
oauth_authorize_title: "Authorize"
|
8
|
+
oauth_oauth_applications_page_title: "Oauth Applications"
|
9
|
+
oauth_oauth_application_page_title: "Oauth Application"
|
10
|
+
oauth_new_oauth_application_page_title: "New Oauth Application"
|
11
|
+
oauth_oauth_tokens_page_title: "Oauth Tokens"
|
12
|
+
name_label: "Name"
|
13
|
+
description_label: "Description"
|
14
|
+
scopes_label: "Scopes"
|
15
|
+
homepage_url_label: "Homepage URL"
|
16
|
+
redirect_uri_label: "Redirect URL"
|
17
|
+
client_secret_label: "Client Secret"
|
18
|
+
client_id_label: "Client ID"
|
19
|
+
oauth_applications_button: "Register"
|
20
|
+
oauth_authorize_button: "Authorize"
|
21
|
+
oauth_token_revoke_button: "Revoke"
|
22
|
+
oauth_authorize_post_button: "Back to Client Application"
|
23
|
+
invalid_grant_message: "Invalid grant"
|
24
|
+
invalid_scope_message: "Invalid scope"
|
25
|
+
invalid_url_message: "Invalid URL"
|
26
|
+
unsupported_token_type_message: "Invalid token type hint"
|
27
|
+
unique_error_message: "is already in use"
|
28
|
+
null_error_message: "is not filled"
|
29
|
+
already_in_use_message: "error generating unique token"
|
30
|
+
code_challenge_required_message: "code challenge required"
|
31
|
+
unsupported_transform_algorithm_message: "transform algorithm not supported"
|
32
|
+
request_uri_not_supported_message: "request uri is unsupported"
|
33
|
+
invalid_request_object_message: "request object is invalid"
|
34
|
+
invalid_scope_message: "The Access Token expired"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodauth-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02
|
11
|
+
date: 2021-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Implementation of the OAuth 2.0 protocol on top of rodauth.
|
14
14
|
email:
|
@@ -23,12 +23,12 @@ files:
|
|
23
23
|
- CHANGELOG.md
|
24
24
|
- LICENSE.txt
|
25
25
|
- README.md
|
26
|
-
- lib/generators/
|
27
|
-
- lib/generators/
|
28
|
-
- lib/generators/
|
29
|
-
- lib/generators/
|
30
|
-
- lib/generators/
|
31
|
-
- lib/generators/
|
26
|
+
- lib/generators/rodauth/oauth/install_generator.rb
|
27
|
+
- lib/generators/rodauth/oauth/templates/app/models/oauth_application.rb
|
28
|
+
- lib/generators/rodauth/oauth/templates/app/models/oauth_grant.rb
|
29
|
+
- lib/generators/rodauth/oauth/templates/app/models/oauth_token.rb
|
30
|
+
- lib/generators/rodauth/oauth/templates/db/migrate/create_rodauth_oauth.rb
|
31
|
+
- lib/generators/rodauth/oauth/views_generator.rb
|
32
32
|
- lib/rodauth/features/oauth.rb
|
33
33
|
- lib/rodauth/features/oauth_http_mac.rb
|
34
34
|
- lib/rodauth/features/oauth_jwt.rb
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- lib/rodauth/oauth/railtie.rb
|
40
40
|
- lib/rodauth/oauth/ttl_store.rb
|
41
41
|
- lib/rodauth/oauth/version.rb
|
42
|
+
- locales/en.yml
|
42
43
|
- templates/authorize.str
|
43
44
|
- templates/client_secret_field.str
|
44
45
|
- templates/description_field.str
|
@@ -71,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
72
|
- !ruby/object:Gem::Version
|
72
73
|
version: '0'
|
73
74
|
requirements: []
|
74
|
-
rubygems_version: 3.2.
|
75
|
+
rubygems_version: 3.2.22
|
75
76
|
signing_key:
|
76
77
|
specification_version: 4
|
77
78
|
summary: Implementation of the OAuth 2.0 protocol on top of rodauth.
|