osso 0.0.5.pre.zeta → 0.0.8
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/.buildkite/pipeline.yml +6 -4
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/automerge.yml +19 -0
- data/.rubocop.yml +4 -1
- data/Gemfile +2 -2
- data/Gemfile.lock +69 -51
- data/LICENSE +21 -23
- data/Rakefile +2 -0
- data/bin/annotate +3 -1
- data/db/schema.rb +41 -3
- data/lib/osso.rb +0 -1
- data/lib/osso/db/migrate/20200929154117_add_users_count_to_identity_providers_and_enterprise_accounts.rb +6 -0
- data/lib/osso/db/migrate/20201023142158_add_rodauth_tables.rb +47 -0
- data/lib/osso/db/migrate/20201105122026_add_token_index_to_access_tokens.rb +5 -0
- data/lib/osso/db/migrate/20201106154936_add_requested_to_authorization_codes_and_access_tokens.rb +6 -0
- data/lib/osso/db/migrate/20201109160851_add_sso_issuer_to_identity_providers.rb +12 -0
- data/lib/osso/db/migrate/20201110190754_remove_oauth_client_id_from_enterprise_accounts.rb +9 -0
- data/lib/osso/db/migrate/20201112160120_add_ping_to_identity_provider_service_enum.rb +28 -0
- data/lib/osso/db/migrate/20201125143501_add_salesforce_to_provider_service_enum.rb +28 -0
- data/lib/osso/error/account_configuration_error.rb +1 -0
- data/lib/osso/error/oauth_error.rb +6 -3
- data/lib/osso/graphql/mutation.rb +2 -0
- data/lib/osso/graphql/mutations.rb +2 -0
- data/lib/osso/graphql/mutations/create_enterprise_account.rb +0 -7
- data/lib/osso/graphql/mutations/create_identity_provider.rb +7 -6
- data/lib/osso/graphql/mutations/delete_identity_provider.rb +24 -0
- data/lib/osso/graphql/mutations/invite_admin_user.rb +43 -0
- data/lib/osso/graphql/query.rb +8 -0
- data/lib/osso/graphql/resolvers/enterprise_accounts.rb +3 -3
- data/lib/osso/graphql/types.rb +2 -2
- data/lib/osso/graphql/types/admin_user.rb +9 -0
- data/lib/osso/graphql/types/base_object.rb +1 -1
- data/lib/osso/graphql/types/enterprise_account.rb +1 -0
- data/lib/osso/graphql/types/identity_provider.rb +3 -0
- data/lib/osso/graphql/types/identity_provider_service.rb +3 -1
- data/lib/osso/lib/app_config.rb +1 -1
- data/lib/osso/lib/route_map.rb +0 -15
- data/lib/osso/lib/saml_handler.rb +5 -0
- data/lib/osso/models/access_token.rb +4 -2
- data/lib/osso/models/account.rb +34 -0
- data/lib/osso/models/authorization_code.rb +2 -1
- data/lib/osso/models/enterprise_account.rb +3 -1
- data/lib/osso/models/identity_provider.rb +24 -5
- data/lib/osso/models/models.rb +1 -0
- data/lib/osso/models/oauth_client.rb +0 -1
- data/lib/osso/models/user.rb +2 -2
- data/lib/osso/routes/admin.rb +39 -33
- data/lib/osso/routes/auth.rb +9 -9
- data/lib/osso/routes/oauth.rb +42 -18
- data/lib/osso/version.rb +1 -1
- data/lib/osso/views/admin.erb +5 -0
- data/lib/osso/views/error.erb +1 -0
- data/lib/osso/views/layout.erb +0 -0
- data/lib/osso/views/multiple_providers.erb +1 -0
- data/lib/osso/views/welcome.erb +0 -0
- data/lib/tasks/bootstrap.rake +25 -4
- data/osso-rb.gemspec +5 -0
- data/spec/factories/account.rb +24 -0
- data/spec/factories/enterprise_account.rb +11 -3
- data/spec/factories/identity_providers.rb +10 -2
- data/spec/factories/user.rb +4 -0
- data/spec/graphql/mutations/configure_identity_provider_spec.rb +1 -1
- data/spec/graphql/mutations/create_enterprise_account_spec.rb +0 -14
- data/spec/graphql/mutations/create_identity_provider_spec.rb +59 -8
- data/spec/graphql/query/identity_provider_spec.rb +3 -2
- data/spec/models/enterprise_account_spec.rb +18 -0
- data/spec/models/identity_provider_spec.rb +36 -1
- data/spec/routes/admin_spec.rb +7 -41
- data/spec/routes/auth_spec.rb +17 -18
- data/spec/routes/oauth_spec.rb +102 -5
- data/spec/spec_helper.rb +3 -3
- data/spec/support/views/hosted_login.erb +1 -0
- data/spec/support/views/layout.erb +1 -0
- data/spec/support/views/multiple_providers.erb +1 -0
- metadata +108 -7
- data/lib/osso/helpers/auth.rb +0 -94
- data/lib/osso/helpers/helpers.rb +0 -8
- data/spec/helpers/auth_spec.rb +0 -97
data/spec/routes/admin_spec.rb
CHANGED
@@ -3,56 +3,22 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Osso::Admin do
|
6
|
-
let(:jwt_url) { 'https://foo.com/jwt' }
|
7
|
-
let(:jwt_hmac_secret) { SecureRandom.hex(32) }
|
8
|
-
|
9
|
-
before do
|
10
|
-
ENV['JWT_URL'] = jwt_url
|
11
|
-
ENV['JWT_HMAC_SECRET'] = jwt_hmac_secret
|
12
|
-
described_class.set(:views, spec_views)
|
13
|
-
end
|
14
|
-
|
15
6
|
describe 'get /admin' do
|
16
|
-
it 'redirects to
|
7
|
+
it 'redirects to /login without a session' do
|
17
8
|
get('/admin')
|
18
9
|
|
19
10
|
expect(last_response).to be_redirect
|
20
11
|
follow_redirect!
|
21
|
-
expect(last_request.url).to
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'redirects to JWT_URL with an invalid token' do
|
25
|
-
get('/admin', token: SecureRandom.hex(32))
|
26
|
-
|
27
|
-
expect(last_response).to be_redirect
|
28
|
-
|
29
|
-
follow_redirect!
|
30
|
-
|
31
|
-
expect(last_request.url).to eq(jwt_url)
|
12
|
+
expect(last_request.url).to match('/login')
|
32
13
|
end
|
33
14
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
jwt_hmac_secret,
|
38
|
-
'HS256',
|
39
|
-
)
|
40
|
-
|
41
|
-
get('/admin', { admin_token: token })
|
42
|
-
|
43
|
-
expect(last_response).to be_redirect
|
44
|
-
follow_redirect!
|
45
|
-
expect(last_request.url).to match('/admin')
|
46
|
-
end
|
15
|
+
xit 'renders the admin page for a valid session token' do
|
16
|
+
password = SecureRandom.urlsafe_base64(16)
|
17
|
+
account = create(:verified_account, password: password)
|
47
18
|
|
48
|
-
|
49
|
-
token = JWT.encode(
|
50
|
-
{ email: 'admin@saas.com', scope: 'admin' },
|
51
|
-
jwt_hmac_secret,
|
52
|
-
'HS256',
|
53
|
-
)
|
19
|
+
post('/login', { email: account.email, password: password })
|
54
20
|
|
55
|
-
get('/admin'
|
21
|
+
get('/admin')
|
56
22
|
|
57
23
|
expect(last_response).to be_ok
|
58
24
|
end
|
data/spec/routes/auth_spec.rb
CHANGED
@@ -182,29 +182,28 @@ describe Osso::Auth do
|
|
182
182
|
it 'raises an error when email is missing' do
|
183
183
|
mock_saml_omniauth(email: nil, id: SecureRandom.uuid)
|
184
184
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
end
|
185
|
+
response = post(
|
186
|
+
"/auth/saml/#{azure_provider.id}/callback",
|
187
|
+
nil,
|
188
|
+
{
|
189
|
+
'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
|
190
|
+
},
|
191
|
+
)
|
192
|
+
|
193
|
+
expect(response.body).to eq('Osso::Error::MissingSamlEmailAttributeError')
|
194
|
+
end
|
196
195
|
|
197
196
|
it 'raises an error when id is missing' do
|
198
197
|
mock_saml_omniauth(email: Faker::Internet.email, id: nil)
|
199
198
|
|
200
199
|
response = post(
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
200
|
+
"/auth/saml/#{azure_provider.id}/callback",
|
201
|
+
nil,
|
202
|
+
{
|
203
|
+
'omniauth.auth' => OmniAuth.config.mock_auth[:saml],
|
204
|
+
},
|
205
|
+
)
|
206
|
+
|
208
207
|
expect(response.body).to eq('Osso::Error::MissingSamlIdAttributeError')
|
209
208
|
end
|
210
209
|
end
|
data/spec/routes/oauth_spec.rb
CHANGED
@@ -3,15 +3,16 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Osso::Oauth do
|
6
|
+
before do
|
7
|
+
described_class.set(:views, spec_views)
|
8
|
+
end
|
9
|
+
|
6
10
|
let(:client) { create(:oauth_client) }
|
7
11
|
|
8
12
|
describe 'get /oauth/authorize' do
|
9
13
|
describe 'with a valid client ID and redirect URI' do
|
10
14
|
describe 'for a domain that does not belong to an enterprise' do
|
11
|
-
# TODO: better error handling and test
|
12
15
|
it 'renders an error page' do
|
13
|
-
described_class.set(:views, spec_views)
|
14
|
-
|
15
16
|
create(:enterprise_with_okta, domain: 'foo.com')
|
16
17
|
|
17
18
|
get(
|
@@ -26,6 +27,20 @@ describe Osso::Oauth do
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
30
|
+
describe 'for a request without email or domain' do
|
31
|
+
it 'redirects to /auth/saml/:provider_id' do
|
32
|
+
get(
|
33
|
+
'/oauth/authorize',
|
34
|
+
client_id: client.identifier,
|
35
|
+
response_type: 'code',
|
36
|
+
redirect_uri: client.redirect_uri_values.sample,
|
37
|
+
)
|
38
|
+
|
39
|
+
expect(last_response).to be_ok
|
40
|
+
expect(last_response.body).to eq('HOSTED LOGIN')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
29
44
|
describe 'for an enterprise domain with one SAML provider' do
|
30
45
|
it 'redirects to /auth/saml/:provider_id' do
|
31
46
|
enterprise = create(:enterprise_with_okta, oauth_client: client)
|
@@ -48,7 +63,7 @@ describe Osso::Oauth do
|
|
48
63
|
|
49
64
|
describe 'for an enterprise domain with multiple SAML providers' do
|
50
65
|
it 'renders the multiple providers screen' do
|
51
|
-
enterprise = create(:enterprise_with_multiple_providers)
|
66
|
+
enterprise = create(:enterprise_with_multiple_providers, oauth_client: client)
|
52
67
|
|
53
68
|
get(
|
54
69
|
'/oauth/authorize',
|
@@ -59,6 +74,64 @@ describe Osso::Oauth do
|
|
59
74
|
)
|
60
75
|
|
61
76
|
expect(last_response).to be_ok
|
77
|
+
expect(last_response.body).to eq('MULITPLE PROVIDERS')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "for an existing user's email address" do
|
82
|
+
it 'redirects to /auth/saml/:provider_id' do
|
83
|
+
enterprise = create(:enterprise_with_okta, oauth_client: client)
|
84
|
+
provider_id = enterprise.identity_providers.first.id
|
85
|
+
user = create(:user, email: "user@#{enterprise.domain}", identity_provider_id: provider_id)
|
86
|
+
|
87
|
+
get(
|
88
|
+
'/oauth/authorize',
|
89
|
+
email: user.email,
|
90
|
+
client_id: client.identifier,
|
91
|
+
response_type: 'code',
|
92
|
+
redirect_uri: client.redirect_uri_values.sample,
|
93
|
+
)
|
94
|
+
|
95
|
+
expect(last_response).to be_redirect
|
96
|
+
follow_redirect!
|
97
|
+
expect(last_request.url).to match("auth/saml/#{provider_id}")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "for a new user's email address belonging to an enterprise with one SAML provider" do
|
102
|
+
it 'redirects to /auth/saml/:provider_id' do
|
103
|
+
enterprise = create(:enterprise_with_okta, oauth_client: client)
|
104
|
+
|
105
|
+
get(
|
106
|
+
'/oauth/authorize',
|
107
|
+
email: "user@#{enterprise.domain}",
|
108
|
+
client_id: client.identifier,
|
109
|
+
response_type: 'code',
|
110
|
+
redirect_uri: client.redirect_uri_values.sample,
|
111
|
+
)
|
112
|
+
|
113
|
+
provider_id = enterprise.identity_providers.first.id
|
114
|
+
|
115
|
+
expect(last_response).to be_redirect
|
116
|
+
follow_redirect!
|
117
|
+
expect(last_request.url).to match("auth/saml/#{provider_id}")
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "for a new user's email address belonging to an enterprise with multiple SAML providers" do
|
122
|
+
it 'renders the multiple providers screen' do
|
123
|
+
enterprise = create(:enterprise_with_multiple_providers, oauth_client: client)
|
124
|
+
|
125
|
+
get(
|
126
|
+
'/oauth/authorize',
|
127
|
+
email: "user@#{enterprise.domain}",
|
128
|
+
client_id: client.identifier,
|
129
|
+
response_type: 'code',
|
130
|
+
redirect_uri: client.redirect_uri_values.sample,
|
131
|
+
)
|
132
|
+
|
133
|
+
expect(last_response).to be_ok
|
134
|
+
expect(last_response.body).to eq('MULITPLE PROVIDERS')
|
62
135
|
end
|
63
136
|
end
|
64
137
|
end
|
@@ -90,7 +163,7 @@ describe Osso::Oauth do
|
|
90
163
|
end
|
91
164
|
|
92
165
|
describe 'get /oauth/me' do
|
93
|
-
describe 'with a valid unexpired access token' do
|
166
|
+
describe 'with a valid unexpired access token in params' do
|
94
167
|
it 'returns the user' do
|
95
168
|
user = create(:user)
|
96
169
|
code = user.authorization_codes.valid.first
|
@@ -105,6 +178,30 @@ describe Osso::Oauth do
|
|
105
178
|
email: user.email,
|
106
179
|
id: user.id,
|
107
180
|
idp: 'Okta',
|
181
|
+
requested: code.requested.symbolize_keys,
|
182
|
+
)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe 'with a valid unexpired access token in headers' do
|
187
|
+
it 'returns the user' do
|
188
|
+
user = create(:user)
|
189
|
+
code = user.authorization_codes.valid.first
|
190
|
+
|
191
|
+
get(
|
192
|
+
'/oauth/me',
|
193
|
+
nil,
|
194
|
+
{
|
195
|
+
'HTTP_AUTHORIZATION' => "Bearer: #{code.access_token.to_bearer_token}",
|
196
|
+
},
|
197
|
+
)
|
198
|
+
|
199
|
+
expect(last_response.status).to eq(200)
|
200
|
+
expect(last_json_response).to eq(
|
201
|
+
email: user.email,
|
202
|
+
id: user.id,
|
203
|
+
idp: 'Okta',
|
204
|
+
requested: code.requested.symbolize_keys,
|
108
205
|
)
|
109
206
|
end
|
110
207
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -15,9 +15,9 @@ require 'webmock/rspec'
|
|
15
15
|
ENV['RACK_ENV'] = 'test'
|
16
16
|
ENV['SESSION_SECRET'] = 'supersecret'
|
17
17
|
ENV['BASE_URL'] = 'https://example.com'
|
18
|
+
ENV['RODAUTH_VIEWS'] = "#{File.dirname(__FILE__)}/support/views"
|
18
19
|
|
19
20
|
require File.expand_path '../lib/osso.rb', __dir__
|
20
|
-
|
21
21
|
require File.expand_path 'support/spec_app', __dir__
|
22
22
|
|
23
23
|
module RSpecMixin
|
@@ -47,11 +47,11 @@ module RSpecMixin
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def spec_views
|
50
|
-
File.dirname(__FILE__)
|
50
|
+
"#{File.dirname(__FILE__)}/support/views"
|
51
51
|
end
|
52
52
|
|
53
53
|
def valid_x509_pem
|
54
|
-
raw = File.read(File.dirname(__FILE__)
|
54
|
+
raw = File.read("#{File.dirname(__FILE__)}/support/fixtures/test.pem")
|
55
55
|
OpenSSL::X509::Certificate.new(raw).to_pem
|
56
56
|
end
|
57
57
|
|
@@ -0,0 +1 @@
|
|
1
|
+
HOSTED LOGIN
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yield %>
|
@@ -0,0 +1 @@
|
|
1
|
+
MULITPLE PROVIDERS
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Bauch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 6.0.3.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bcrypt
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.1.13
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.1.13
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: graphql
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mail
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.7.1
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.7.1
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: omniauth-multi-provider
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +164,60 @@ dependencies:
|
|
136
164
|
- - ">="
|
137
165
|
- !ruby/object:Gem::Version
|
138
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rodauth
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 2.6.0
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 2.6.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: sequel
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '5.37'
|
188
|
+
- - "<"
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '5.40'
|
191
|
+
type: :runtime
|
192
|
+
prerelease: false
|
193
|
+
version_requirements: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '5.37'
|
198
|
+
- - "<"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '5.40'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: sequel-activerecord_connection
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0.3'
|
208
|
+
- - "<"
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '2.0'
|
211
|
+
type: :runtime
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - ">="
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0.3'
|
218
|
+
- - "<"
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '2.0'
|
139
221
|
- !ruby/object:Gem::Dependency
|
140
222
|
name: sinatra
|
141
223
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,6 +317,8 @@ files:
|
|
235
317
|
- ".buildkite/hooks/pre-command"
|
236
318
|
- ".buildkite/pipeline.yml"
|
237
319
|
- ".buildkite/template.yml"
|
320
|
+
- ".github/dependabot.yml"
|
321
|
+
- ".github/workflows/automerge.yml"
|
238
322
|
- ".gitignore"
|
239
323
|
- ".rspec"
|
240
324
|
- ".rubocop.yml"
|
@@ -273,6 +357,14 @@ files:
|
|
273
357
|
- lib/osso/db/migrate/20200826201852_create_app_config.rb
|
274
358
|
- lib/osso/db/migrate/20200913154919_add_one_login_to_identity_provider_service_enum.rb
|
275
359
|
- lib/osso/db/migrate/20200916125543_add_google_to_identity_provider_service_enum.rb
|
360
|
+
- lib/osso/db/migrate/20200929154117_add_users_count_to_identity_providers_and_enterprise_accounts.rb
|
361
|
+
- lib/osso/db/migrate/20201023142158_add_rodauth_tables.rb
|
362
|
+
- lib/osso/db/migrate/20201105122026_add_token_index_to_access_tokens.rb
|
363
|
+
- lib/osso/db/migrate/20201106154936_add_requested_to_authorization_codes_and_access_tokens.rb
|
364
|
+
- lib/osso/db/migrate/20201109160851_add_sso_issuer_to_identity_providers.rb
|
365
|
+
- lib/osso/db/migrate/20201110190754_remove_oauth_client_id_from_enterprise_accounts.rb
|
366
|
+
- lib/osso/db/migrate/20201112160120_add_ping_to_identity_provider_service_enum.rb
|
367
|
+
- lib/osso/db/migrate/20201125143501_add_salesforce_to_provider_service_enum.rb
|
276
368
|
- lib/osso/error/account_configuration_error.rb
|
277
369
|
- lib/osso/error/error.rb
|
278
370
|
- lib/osso/error/missing_saml_attribute_error.rb
|
@@ -287,7 +379,9 @@ files:
|
|
287
379
|
- lib/osso/graphql/mutations/create_identity_provider.rb
|
288
380
|
- lib/osso/graphql/mutations/create_oauth_client.rb
|
289
381
|
- lib/osso/graphql/mutations/delete_enterprise_account.rb
|
382
|
+
- lib/osso/graphql/mutations/delete_identity_provider.rb
|
290
383
|
- lib/osso/graphql/mutations/delete_oauth_client.rb
|
384
|
+
- lib/osso/graphql/mutations/invite_admin_user.rb
|
291
385
|
- lib/osso/graphql/mutations/regenerate_oauth_credentials.rb
|
292
386
|
- lib/osso/graphql/mutations/set_redirect_uris.rb
|
293
387
|
- lib/osso/graphql/mutations/update_app_config.rb
|
@@ -313,13 +407,12 @@ files:
|
|
313
407
|
- lib/osso/graphql/types/oauth_client.rb
|
314
408
|
- lib/osso/graphql/types/redirect_uri.rb
|
315
409
|
- lib/osso/graphql/types/redirect_uri_input.rb
|
316
|
-
- lib/osso/helpers/auth.rb
|
317
|
-
- lib/osso/helpers/helpers.rb
|
318
410
|
- lib/osso/lib/app_config.rb
|
319
411
|
- lib/osso/lib/oauth2_token.rb
|
320
412
|
- lib/osso/lib/route_map.rb
|
321
413
|
- lib/osso/lib/saml_handler.rb
|
322
414
|
- lib/osso/models/access_token.rb
|
415
|
+
- lib/osso/models/account.rb
|
323
416
|
- lib/osso/models/app_config.rb
|
324
417
|
- lib/osso/models/authorization_code.rb
|
325
418
|
- lib/osso/models/enterprise_account.rb
|
@@ -334,8 +427,14 @@ files:
|
|
334
427
|
- lib/osso/routes/oauth.rb
|
335
428
|
- lib/osso/routes/routes.rb
|
336
429
|
- lib/osso/version.rb
|
430
|
+
- lib/osso/views/admin.erb
|
431
|
+
- lib/osso/views/error.erb
|
432
|
+
- lib/osso/views/layout.erb
|
433
|
+
- lib/osso/views/multiple_providers.erb
|
434
|
+
- lib/osso/views/welcome.erb
|
337
435
|
- lib/tasks/bootstrap.rake
|
338
436
|
- osso-rb.gemspec
|
437
|
+
- spec/factories/account.rb
|
339
438
|
- spec/factories/authorization_code.rb
|
340
439
|
- spec/factories/enterprise_account.rb
|
341
440
|
- spec/factories/identity_providers.rb
|
@@ -352,8 +451,8 @@ files:
|
|
352
451
|
- spec/graphql/query/enterprise_accounts_spec.rb
|
353
452
|
- spec/graphql/query/identity_provider_spec.rb
|
354
453
|
- spec/graphql/query/oauth_clients_spec.rb
|
355
|
-
- spec/helpers/auth_spec.rb
|
356
454
|
- spec/lib/saml_handler_spec.rb
|
455
|
+
- spec/models/enterprise_account_spec.rb
|
357
456
|
- spec/models/identity_provider_spec.rb
|
358
457
|
- spec/routes/admin_spec.rb
|
359
458
|
- spec/routes/app_spec.rb
|
@@ -364,6 +463,8 @@ files:
|
|
364
463
|
- spec/support/spec_app.rb
|
365
464
|
- spec/support/views/admin.erb
|
366
465
|
- spec/support/views/error.erb
|
466
|
+
- spec/support/views/hosted_login.erb
|
467
|
+
- spec/support/views/layout.erb
|
367
468
|
- spec/support/views/multiple_providers.erb
|
368
469
|
homepage: https://github.com/enterprise-oss/osso-rb
|
369
470
|
licenses:
|
@@ -380,9 +481,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
380
481
|
version: 2.3.0
|
381
482
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
483
|
requirements:
|
383
|
-
- - "
|
484
|
+
- - ">="
|
384
485
|
- !ruby/object:Gem::Version
|
385
|
-
version:
|
486
|
+
version: '0'
|
386
487
|
requirements: []
|
387
488
|
rubygems_version: 3.0.3
|
388
489
|
signing_key:
|