prx_auth-rails 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/prx_auth/rails/sessions_controller.rb +35 -43
- data/lib/prx_auth/rails/engine.rb +4 -1
- data/lib/prx_auth/rails/ext/controller.rb +64 -40
- data/lib/prx_auth/rails/version.rb +1 -1
- data/prx_auth-rails.gemspec +3 -7
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/views/application/index.html.erb +1 -0
- data/test/dummy/config/routes.rb +2 -0
- data/test/prx_auth/rails/ext/controller_test.rb +49 -0
- data/test/prx_auth/rails/sessions_controller_test.rb +23 -6
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a687c733815e035f361fbfd4981e3673480311c6d760206b9b1edd4903e084b
|
4
|
+
data.tar.gz: 5b04a0584489415a7b0223342c85e638c8c3ca01c141e4ff46db9269c192f6be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71573dd4f1303e7e2b5fc4ca908c502c74aa986845ddb685613b6e8422c05e136c1952f5bfc2989a607b1a5020f708a06190ebe084a199a46aeefab1f7168706
|
7
|
+
data.tar.gz: dc5685c9e2908ea56c10f577eb2a457167087345f07b09927e8c36c1b0d2df513e2f2367436fe4f637aac648311c75a44ee3f845c63124be7ab4009c45dccb57
|
@@ -4,13 +4,11 @@ module PrxAuth::Rails
|
|
4
4
|
|
5
5
|
skip_before_action :authenticate!
|
6
6
|
|
7
|
-
before_action :set_nonce!, only: :show
|
7
|
+
before_action :set_nonce!, only: [:new, :show]
|
8
8
|
|
9
9
|
ID_NONCE_SESSION_KEY = 'id_prx_openid_nonce'.freeze
|
10
10
|
|
11
11
|
def new
|
12
|
-
set_nonce! unless fetch_nonce.present?
|
13
|
-
|
14
12
|
config = PrxAuth::Rails.configuration
|
15
13
|
|
16
14
|
id_auth_params = {
|
@@ -37,30 +35,27 @@ module PrxAuth::Rails
|
|
37
35
|
end
|
38
36
|
|
39
37
|
def create
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
lookup_and_register_accounts_names
|
49
|
-
after_sign_in_path_for(current_user)
|
50
|
-
else
|
51
|
-
auth_error_sessions_path(error: 'verification_failed')
|
52
|
-
end
|
53
|
-
reset_nonce!
|
54
|
-
|
55
|
-
redirect_to result_path
|
38
|
+
if valid_nonce? && users_match?
|
39
|
+
clear_nonce!
|
40
|
+
sign_in_user(access_token)
|
41
|
+
redirect_to after_sign_in_path_for(current_user)
|
42
|
+
else
|
43
|
+
clear_nonce!
|
44
|
+
redirect_to auth_error_sessions_path(error: 'verification_failed')
|
45
|
+
end
|
56
46
|
end
|
57
47
|
|
58
48
|
private
|
59
49
|
|
60
50
|
def after_sign_in_path_for(_)
|
61
|
-
|
62
|
-
|
63
|
-
|
51
|
+
back_path = after_sign_in_user_redirect
|
52
|
+
if back_path.present?
|
53
|
+
back_path
|
54
|
+
elsif defined?(super)
|
55
|
+
super
|
56
|
+
else
|
57
|
+
'/'
|
58
|
+
end
|
64
59
|
end
|
65
60
|
|
66
61
|
def after_sign_out_path
|
@@ -69,49 +64,46 @@ module PrxAuth::Rails
|
|
69
64
|
"https://#{id_host}/session/sign_out"
|
70
65
|
end
|
71
66
|
|
67
|
+
def id_token
|
68
|
+
params.require('id_token')
|
69
|
+
end
|
70
|
+
|
71
|
+
def access_token
|
72
|
+
params.require('access_token')
|
73
|
+
end
|
74
|
+
|
72
75
|
def id_claims
|
73
|
-
|
74
|
-
validate_token(id_token)
|
76
|
+
@id_claims ||= validate_token(id_token)
|
75
77
|
end
|
76
78
|
|
77
79
|
def access_claims
|
78
|
-
|
79
|
-
validate_token(access_token)
|
80
|
+
@access_claims ||= validate_token(access_token)
|
80
81
|
end
|
81
82
|
|
82
|
-
def
|
83
|
-
session
|
83
|
+
def clear_nonce!
|
84
|
+
session.delete(ID_NONCE_SESSION_KEY)
|
84
85
|
end
|
85
86
|
|
86
87
|
def set_nonce!
|
87
|
-
|
88
|
-
return n if n.present?
|
89
|
-
|
90
|
-
session[ID_NONCE_SESSION_KEY] = SecureRandom.hex
|
88
|
+
session[ID_NONCE_SESSION_KEY] ||= SecureRandom.hex
|
91
89
|
end
|
92
90
|
|
93
91
|
def fetch_nonce
|
94
92
|
session[ID_NONCE_SESSION_KEY]
|
95
93
|
end
|
96
94
|
|
97
|
-
def valid_nonce?
|
98
|
-
|
99
|
-
|
100
|
-
fetch_nonce == nonce
|
95
|
+
def valid_nonce?
|
96
|
+
id_claims['nonce'].present? && id_claims['nonce'] == fetch_nonce
|
101
97
|
end
|
102
98
|
|
103
|
-
def users_match?
|
104
|
-
|
105
|
-
|
106
|
-
claims1['sub'] == claims2['sub']
|
99
|
+
def users_match?
|
100
|
+
id_claims['sub'].present? && id_claims['sub'] == access_claims['sub']
|
107
101
|
end
|
108
102
|
|
109
103
|
def validate_token(token)
|
110
104
|
prx_auth_cert = Rack::PrxAuth::Certificate.new("https://#{id_host}/api/v1/certs")
|
111
105
|
auth_validator = Rack::PrxAuth::AuthValidator.new(token, prx_auth_cert, id_host)
|
112
|
-
auth_validator.
|
113
|
-
claims.
|
114
|
-
with_indifferent_access
|
106
|
+
auth_validator.claims.with_indifferent_access
|
115
107
|
end
|
116
108
|
|
117
109
|
def id_host
|
@@ -2,7 +2,10 @@ module PrxAuth
|
|
2
2
|
module Rails
|
3
3
|
class Engine < ::Rails::Engine
|
4
4
|
config.to_prepare do
|
5
|
-
::ApplicationController.helper_method [
|
5
|
+
::ApplicationController.helper_method [
|
6
|
+
:current_user, :prx_jwt,
|
7
|
+
:account_name_for, :account_for, :accounts_for,
|
8
|
+
]
|
6
9
|
end
|
7
10
|
end
|
8
11
|
end
|
@@ -4,15 +4,24 @@ require 'open-uri'
|
|
4
4
|
module PrxAuth
|
5
5
|
module Rails
|
6
6
|
module Controller
|
7
|
+
class SessionTokenExpiredError < RuntimeError; end
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
PRX_AUTH_ENV_KEY = 'prx.auth'.freeze
|
10
|
+
PRX_JWT_SESSION_KEY = 'prx.auth.jwt'.freeze
|
11
|
+
PRX_JWT_REFRESH_TTL = 300.freeze
|
12
|
+
PRX_ACCOUNT_MAPPING_SESSION_KEY = 'prx.auth.account.mapping'.freeze
|
13
|
+
PRX_REFRESH_BACK_KEY = 'prx.auth.back'.freeze
|
10
14
|
|
11
15
|
def prx_auth_token
|
12
|
-
|
13
|
-
|
16
|
+
env_token || session_token
|
17
|
+
rescue SessionTokenExpiredError
|
18
|
+
reset_session
|
19
|
+
session[PRX_REFRESH_BACK_KEY] = request.fullpath
|
20
|
+
redirect_to PrxAuth::Rails::Engine.routes.url_helpers.new_sessions_path
|
21
|
+
end
|
14
22
|
|
15
|
-
|
23
|
+
def prx_jwt
|
24
|
+
session[PRX_JWT_SESSION_KEY]
|
16
25
|
end
|
17
26
|
|
18
27
|
def prx_authenticated?
|
@@ -26,51 +35,51 @@ module PrxAuth
|
|
26
35
|
end
|
27
36
|
|
28
37
|
def current_user
|
29
|
-
|
30
|
-
|
31
|
-
PrxAuth::Rails::Token.new(prx_auth_token)
|
38
|
+
prx_auth_token
|
32
39
|
end
|
33
40
|
|
34
|
-
def
|
35
|
-
session[
|
36
|
-
|
41
|
+
def sign_in_user(token)
|
42
|
+
session[PRX_JWT_SESSION_KEY] = token
|
43
|
+
accounts_for(current_user.resources)
|
37
44
|
end
|
38
45
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
session[PRX_ACCOUNT_NAME_MAPPING_KEY] ||= {}
|
43
|
-
|
44
|
-
name =
|
45
|
-
if session[PRX_ACCOUNT_NAME_MAPPING_KEY].has_key?(id)
|
46
|
-
session[PRX_ACCOUNT_NAME_MAPPING_KEY][id]
|
47
|
-
else
|
48
|
-
session[PRX_ACCOUNT_NAME_MAPPING_KEY][id] = lookup_account_name_for(id)
|
49
|
-
end
|
46
|
+
def after_sign_in_user_redirect
|
47
|
+
session.delete(PRX_REFRESH_BACK_KEY)
|
48
|
+
end
|
50
49
|
|
51
|
-
|
50
|
+
def sign_out_user
|
51
|
+
reset_session
|
52
|
+
end
|
52
53
|
|
53
|
-
|
54
|
+
def account_name_for(account_id)
|
55
|
+
account_for(account_id)[:name]
|
54
56
|
end
|
55
57
|
|
56
|
-
def
|
57
|
-
|
58
|
+
def account_for(account_id)
|
59
|
+
lookup_accounts([account_id]).first
|
58
60
|
end
|
59
61
|
|
60
|
-
def
|
61
|
-
|
62
|
+
def accounts_for(account_ids)
|
63
|
+
lookup_accounts(account_ids)
|
62
64
|
end
|
63
65
|
|
64
66
|
private
|
65
67
|
|
66
|
-
def
|
67
|
-
|
68
|
+
def lookup_accounts(ids)
|
69
|
+
session[PRX_ACCOUNT_MAPPING_SESSION_KEY] ||= {}
|
70
|
+
|
71
|
+
# fetch any accounts we don't have yet
|
72
|
+
missing = ids - session[PRX_ACCOUNT_MAPPING_SESSION_KEY].keys
|
73
|
+
if missing.present?
|
74
|
+
fetch_accounts(missing).each do |account|
|
75
|
+
session[PRX_ACCOUNT_MAPPING_SESSION_KEY][account['id']] = account.with_indifferent_access
|
76
|
+
end
|
77
|
+
end
|
68
78
|
|
69
|
-
|
70
|
-
res[id]
|
79
|
+
ids.map { |id| session[PRX_ACCOUNT_MAPPING_SESSION_KEY][id] }
|
71
80
|
end
|
72
81
|
|
73
|
-
def
|
82
|
+
def fetch_accounts(ids)
|
74
83
|
id_host = PrxAuth::Rails.configuration.id_host
|
75
84
|
ids_param = ids.map(&:to_s).join(',')
|
76
85
|
|
@@ -79,16 +88,31 @@ module PrxAuth
|
|
79
88
|
|
80
89
|
accounts = URI.open("https://#{id_host}/api/v1/accounts?account_ids=#{ids_param}", options).read
|
81
90
|
|
82
|
-
|
91
|
+
JSON.parse(accounts)['accounts']
|
92
|
+
end
|
83
93
|
|
84
|
-
|
94
|
+
# token from data set by prx_auth rack middleware
|
95
|
+
def env_token
|
96
|
+
@env_token_data ||= if request.env[PRX_AUTH_ENV_KEY]
|
97
|
+
token_data = request.env[PRX_AUTH_ENV_KEY]
|
98
|
+
PrxAuth::Rails::Token.new(token_data)
|
99
|
+
end
|
85
100
|
end
|
86
101
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
102
|
+
# token from jwt stored in session
|
103
|
+
def session_token
|
104
|
+
@session_prx_auth_token ||= if prx_jwt
|
105
|
+
# NOTE: we already validated this jwt - so just decode it
|
106
|
+
validator = Rack::PrxAuth::AuthValidator.new(prx_jwt)
|
107
|
+
|
108
|
+
# try to refresh auth session on GET requests
|
109
|
+
if request.get? && validator.time_to_live < PRX_JWT_REFRESH_TTL
|
110
|
+
raise SessionTokenExpiredError.new
|
111
|
+
end
|
112
|
+
|
113
|
+
# create new data/token from access claims
|
114
|
+
token_data = Rack::PrxAuth::TokenData.new(validator.claims)
|
115
|
+
PrxAuth::Rails::Token.new(token_data)
|
92
116
|
end
|
93
117
|
end
|
94
118
|
end
|
data/prx_auth-rails.gemspec
CHANGED
@@ -8,10 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = PrxAuth::Rails::VERSION
|
9
9
|
spec.authors = ["Chris Rhoden"]
|
10
10
|
spec.email = ["carhoden@gmail.com"]
|
11
|
-
spec.description =
|
12
|
-
|
13
|
-
spec.summary = %q{Rails integration for next generation PRX Authorization system.
|
14
|
-
}
|
11
|
+
spec.description = "Rails integration for next generation PRX Authorization system."
|
12
|
+
spec.summary = "Rails integration for next generation PRX Authorization system."
|
15
13
|
spec.homepage = "https://github.com/PRX/prx_auth-rails"
|
16
14
|
spec.license = "MIT"
|
17
15
|
|
@@ -33,7 +31,5 @@ Gem::Specification.new do |spec|
|
|
33
31
|
spec.add_development_dependency 'pry'
|
34
32
|
spec.add_development_dependency 'sqlite3'
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
spec.add_runtime_dependency 'prx_auth', "~> 1.2"
|
34
|
+
spec.add_runtime_dependency 'prx_auth', ">= 1.7.0"
|
39
35
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
the controller index!
|
data/test/dummy/config/routes.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module PrxAuth::Rails::Ext
|
4
|
+
class ControllerTest < ActionController::TestCase
|
5
|
+
|
6
|
+
setup do
|
7
|
+
@controller = ApplicationController.new
|
8
|
+
@jwt_session_key = ApplicationController::PRX_JWT_SESSION_KEY
|
9
|
+
@stub_claims = {'iat' => Time.now.to_i, 'exp' => Time.now.to_i + 3600}
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'redirects unless you are authenticated' do
|
13
|
+
get :index
|
14
|
+
assert_equal response.code, '302'
|
15
|
+
assert response.headers['Location'].ends_with?('/sessions/new')
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'uses a valid session token' do
|
19
|
+
session[@jwt_session_key] = 'some-jwt'
|
20
|
+
JSON::JWT.stub(:decode, @stub_claims) do
|
21
|
+
get :index
|
22
|
+
assert_equal response.code, '200'
|
23
|
+
assert response.body.include?('the controller index!')
|
24
|
+
assert @controller.current_user.is_a?(PrxAuth::Rails::Token)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
test 'redirects if your token is nearing expiration' do
|
29
|
+
session[@jwt_session_key] = 'some-jwt'
|
30
|
+
@stub_claims['exp'] = Time.now.to_i + 10
|
31
|
+
JSON::JWT.stub(:decode, @stub_claims) do
|
32
|
+
get :index
|
33
|
+
assert_equal response.code, '302'
|
34
|
+
assert response.headers['Location'].ends_with?('/sessions/new')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
test 'does not redirect if your token has expired on a non-GET request' do
|
39
|
+
session[@jwt_session_key] = 'some-jwt'
|
40
|
+
@stub_claims['exp'] = Time.now.to_i + 10
|
41
|
+
JSON::JWT.stub(:decode, @stub_claims) do
|
42
|
+
put :index
|
43
|
+
assert_equal response.code, '200'
|
44
|
+
assert response.body.include?('the controller index!')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -6,8 +6,10 @@ module PrxAuth::Rails
|
|
6
6
|
setup do
|
7
7
|
@routes = PrxAuth::Rails::Engine.routes
|
8
8
|
@nonce_session_key = SessionsController::ID_NONCE_SESSION_KEY
|
9
|
-
@
|
9
|
+
@refresh_back_key = SessionsController::PRX_REFRESH_BACK_KEY
|
10
|
+
@token_params = {id_token: 'idtok', access_token: 'accesstok'}
|
10
11
|
@stub_claims = {'nonce' => '123', 'sub' => '1'}
|
12
|
+
@stub_token = PrxAuth::Rails::Token.new(Rack::PrxAuth::TokenData.new())
|
11
13
|
end
|
12
14
|
|
13
15
|
test "new creates nonce" do
|
@@ -31,11 +33,12 @@ module PrxAuth::Rails
|
|
31
33
|
end
|
32
34
|
|
33
35
|
test 'create should validate a token and set the session variable' do
|
36
|
+
session[SessionsController::PRX_JWT_SESSION_KEY] = nil
|
34
37
|
@controller.stub(:validate_token, @stub_claims) do
|
35
|
-
@controller.stub(:
|
38
|
+
@controller.stub(:session_token, @stub_token) do
|
36
39
|
session[@nonce_session_key] = '123'
|
37
40
|
post :create, params: @token_params, format: :json
|
38
|
-
assert session[
|
41
|
+
assert session[SessionsController::PRX_JWT_SESSION_KEY] == 'accesstok'
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -50,7 +53,7 @@ module PrxAuth::Rails
|
|
50
53
|
|
51
54
|
test 'create should reset the nonce after consumed' do
|
52
55
|
@controller.stub(:validate_token, @stub_claims) do
|
53
|
-
@controller.stub(:
|
56
|
+
@controller.stub(:session_token, @stub_token) do
|
54
57
|
session[@nonce_session_key] = '123'
|
55
58
|
post :create, params: @token_params, format: :json
|
56
59
|
|
@@ -61,6 +64,20 @@ module PrxAuth::Rails
|
|
61
64
|
end
|
62
65
|
end
|
63
66
|
|
67
|
+
test 'redirects to a back-path after refresh' do
|
68
|
+
@controller.stub(:validate_token, @stub_claims) do
|
69
|
+
@controller.stub(:session_token, @stub_token) do
|
70
|
+
session[@nonce_session_key] = '123'
|
71
|
+
session[@refresh_back_key] = '/lets/go/here?okay'
|
72
|
+
post :create, params: @token_params, format: :json
|
73
|
+
|
74
|
+
assert session[@refresh_back_key] == nil
|
75
|
+
assert response.code == '302'
|
76
|
+
assert response.headers['Location'].ends_with?('/lets/go/here?okay')
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
64
81
|
test 'should respond with redirect to the auth error page / code if the nonce does not match' do
|
65
82
|
@controller.stub(:validate_token, @stub_claims) do
|
66
83
|
session[@nonce_session_key] = 'nonce-does-not-match'
|
@@ -96,9 +113,9 @@ module PrxAuth::Rails
|
|
96
113
|
end
|
97
114
|
|
98
115
|
test 'should clear the user token on sign out' do
|
99
|
-
session[
|
116
|
+
session[SessionsController::PRX_JWT_SESSION_KEY] = 'some-token'
|
100
117
|
post :destroy
|
101
|
-
assert session[
|
118
|
+
assert session[SessionsController::PRX_JWT_SESSION_KEY] == nil
|
102
119
|
end
|
103
120
|
end
|
104
121
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prx_auth-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Rhoden
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -140,19 +140,17 @@ dependencies:
|
|
140
140
|
name: prx_auth
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 1.7.0
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
153
|
-
description:
|
154
|
-
|
155
|
-
'
|
152
|
+
version: 1.7.0
|
153
|
+
description: Rails integration for next generation PRX Authorization system.
|
156
154
|
email:
|
157
155
|
- carhoden@gmail.com
|
158
156
|
executables: []
|
@@ -196,6 +194,7 @@ files:
|
|
196
194
|
- test/dummy/app/mailers/application_mailer.rb
|
197
195
|
- test/dummy/app/models/application_record.rb
|
198
196
|
- test/dummy/app/models/concerns/.keep
|
197
|
+
- test/dummy/app/views/application/index.html.erb
|
199
198
|
- test/dummy/app/views/layouts/application.html.erb
|
200
199
|
- test/dummy/app/views/layouts/mailer.html.erb
|
201
200
|
- test/dummy/app/views/layouts/mailer.text.erb
|
@@ -239,6 +238,7 @@ files:
|
|
239
238
|
- test/dummy/storage/.keep
|
240
239
|
- test/log/development.log
|
241
240
|
- test/prx_auth/rails/configuration_test.rb
|
241
|
+
- test/prx_auth/rails/ext/controller_test.rb
|
242
242
|
- test/prx_auth/rails/sessions_controller_test.rb
|
243
243
|
- test/prx_auth/rails/token_test.rb
|
244
244
|
- test/test_helper.rb
|
@@ -246,7 +246,7 @@ homepage: https://github.com/PRX/prx_auth-rails
|
|
246
246
|
licenses:
|
247
247
|
- MIT
|
248
248
|
metadata: {}
|
249
|
-
post_install_message:
|
249
|
+
post_install_message:
|
250
250
|
rdoc_options: []
|
251
251
|
require_paths:
|
252
252
|
- lib
|
@@ -261,9 +261,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
261
261
|
- !ruby/object:Gem::Version
|
262
262
|
version: '0'
|
263
263
|
requirements: []
|
264
|
-
|
265
|
-
|
266
|
-
signing_key:
|
264
|
+
rubygems_version: 3.0.3
|
265
|
+
signing_key:
|
267
266
|
specification_version: 4
|
268
267
|
summary: Rails integration for next generation PRX Authorization system.
|
269
268
|
test_files:
|
@@ -281,6 +280,7 @@ test_files:
|
|
281
280
|
- test/dummy/app/mailers/application_mailer.rb
|
282
281
|
- test/dummy/app/models/application_record.rb
|
283
282
|
- test/dummy/app/models/concerns/.keep
|
283
|
+
- test/dummy/app/views/application/index.html.erb
|
284
284
|
- test/dummy/app/views/layouts/application.html.erb
|
285
285
|
- test/dummy/app/views/layouts/mailer.html.erb
|
286
286
|
- test/dummy/app/views/layouts/mailer.text.erb
|
@@ -324,6 +324,7 @@ test_files:
|
|
324
324
|
- test/dummy/storage/.keep
|
325
325
|
- test/log/development.log
|
326
326
|
- test/prx_auth/rails/configuration_test.rb
|
327
|
+
- test/prx_auth/rails/ext/controller_test.rb
|
327
328
|
- test/prx_auth/rails/sessions_controller_test.rb
|
328
329
|
- test/prx_auth/rails/token_test.rb
|
329
330
|
- test/test_helper.rb
|