rodauth-oauth 0.5.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|