osso 0.0.3.12 → 0.0.3.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ad3a661abfa7e2251cf7244221ad6e28899c490b732e6c9098f5bf91c903c4e
4
- data.tar.gz: 3a691f8537a801d2b7302ac3f34e5ea5b74aae9a60fea18470ac50ec5569ec96
3
+ metadata.gz: 4f73668d92fba6a919487f77d474b948af28e79b33d60a1c1e2cec8104b0dcff
4
+ data.tar.gz: f736cdc806facf653635a037f8b9abb8202cda2e811b3b75a2dc52332b12ddab
5
5
  SHA512:
6
- metadata.gz: 35d25337aff8ad4fd8b6d49d34e20226f61725c8a437da30f70cb393a9078b988a4d10847911d0da10ba34f4940488c059829448c006723a5bafc6187a8c5576
7
- data.tar.gz: 8011819d4ac2c59f0b8fc37470cfd9b2357f9bfeda12e6e4ea1f07c691beba99c2d409b8a2356eb7917edd02c7ae7beaf72860fa70bd3bf31ea5fc4eb6aded79
6
+ metadata.gz: 3ea4d47b42b9d2e0ac48833e37ed3375d41d60eefac31166ba81dd86ae3b38f059518beeae625324af095f9c4da4433c83aefd92cb7038cc5e924293e26956e4
7
+ data.tar.gz: 36969b24b9047a0ab3920e206590697083a314618765dbe7352a5563b4bd93aaca7b50524f442eb994052db594393500a4a157a527d483049f49765367495b39
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- osso (0.0.3.12)
4
+ osso (0.0.3.13)
5
5
  activesupport (>= 6.0.3.2)
6
6
  graphql
7
7
  jwt
@@ -14,7 +14,7 @@ module Osso
14
14
  field :delete_enterprise_account, mutation: Mutations::DeleteEnterpriseAccount
15
15
  field :delete_oauth_client, mutation: Mutations::DeleteOauthClient
16
16
  field :delete_redirect_uri, mutation: Mutations::DeleteRedirectUri
17
- field :mark_redirect_uri_primary, mutation: Mutations::MarkRedirectUriPrimary
17
+ field :set_redirect_uris, mutation: Mutations::SetRedirectUris
18
18
  field :regenerate_oauth_credentials, mutation: Mutations::RegenerateOauthCredentials
19
19
  end
20
20
  end
@@ -6,13 +6,11 @@ module Osso
6
6
  end
7
7
 
8
8
  require_relative 'mutations/base_mutation'
9
- require_relative 'mutations/add_redirect_uris_to_oauth_client'
10
9
  require_relative 'mutations/configure_identity_provider'
11
10
  require_relative 'mutations/create_identity_provider'
12
11
  require_relative 'mutations/create_enterprise_account'
13
12
  require_relative 'mutations/create_oauth_client'
14
13
  require_relative 'mutations/delete_enterprise_account'
15
14
  require_relative 'mutations/delete_oauth_client'
16
- require_relative 'mutations/delete_redirect_uri'
17
- require_relative 'mutations/mark_redirect_uri_primary'
18
15
  require_relative 'mutations/regenerate_oauth_credentials'
16
+ require_relative 'mutations/set_redirect_uris'
@@ -14,9 +14,9 @@ module Osso
14
14
  def resolve(id:)
15
15
  oauth_client = Osso::Models::OauthClient.find(id)
16
16
  oauth_client.generate_secrets
17
-
17
+
18
18
  return response_data(oauth_client: oauth_client) if oauth_client.save
19
-
19
+
20
20
  response_error(errors: oauth_client.errors.full_messages)
21
21
  end
22
22
 
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Osso
4
+ module GraphQL
5
+ module Mutations
6
+ class SetRedirectUris < BaseMutation
7
+ null false
8
+
9
+ argument :id, ID, required: true
10
+ argument :redirect_uris, [Types::RedirectUrisInput], required: true
11
+
12
+ field :oauth_client, Types::OauthClient, null: true
13
+ field :errors, [String], null: false
14
+
15
+ def resolve(id:, redirect_uris:)
16
+ oauth_client = Osso::Models::OauthClient.find(id)
17
+
18
+ update_existing(oauth_client, redirect_uris)
19
+ create_new(oauth_client, redirect_uris)
20
+
21
+ response_data(oauth_client: oauth_client.reload)
22
+ rescue StandardError => e
23
+ response_error(errors: e)
24
+ end
25
+
26
+ def ready?(*)
27
+ return true if context[:scope] == :admin
28
+
29
+ raise ::GraphQL::ExecutionError, 'Only admin users may mutate OauthClients'
30
+ end
31
+
32
+ def update_existing(oauth_client, redirect_uris)
33
+ oauth_client.redirect_uris.each do |redirect|
34
+ updating_index = redirect_uris.index{ |incoming| incoming[:id] == redirect.id }
35
+
36
+ if updating_index
37
+ updating = redirect_uris.delete_at(updating_index)
38
+ redirect.update(updating.to_h)
39
+ next
40
+ end
41
+
42
+ redirect.destroy
43
+ end
44
+ end
45
+
46
+ def create_new(oauth_client, redirect_uris)
47
+ redirect_uris.map do |uri|
48
+ oauth_client.redirect_uris.create(uri.to_h.without(:id))
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -14,5 +14,6 @@ require_relative 'types/identity_provider_status'
14
14
  require_relative 'types/identity_provider'
15
15
  require_relative 'types/enterprise_account'
16
16
  require_relative 'types/redirect_uri'
17
+ require_relative 'types/redirect_uri_input'
17
18
  require_relative 'types/oauth_client'
18
19
  require_relative 'types/user'
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'graphql'
4
+
5
+ module Osso
6
+ module GraphQL
7
+ module Types
8
+ class RedirectUrisInput < Types::BaseInputObject
9
+ description 'Attributes for creating or updating a collection of redirect URIs for an Oauth Client'
10
+ argument :id, ID, 'Database ID', required: false
11
+ argument :uri, String, 'URI value', required: true
12
+ argument :primary, Boolean, 'Whether the URI is the primary uri used in IDP initiated login', required: true
13
+ end
14
+ end
15
+ end
16
+ end
@@ -17,6 +17,10 @@ module Osso
17
17
  redirect_uris.find(&:primary)
18
18
  end
19
19
 
20
+ def redirect_uri_values
21
+ redirect_uris.map(&:uri)
22
+ end
23
+
20
24
  def generate_secrets
21
25
  self.identifier = SecureRandom.hex(16)
22
26
  self.secret = SecureRandom.hex(32)
@@ -40,7 +40,7 @@ module Osso
40
40
  post '/saml/:id/callback' do
41
41
  provider = Models::IdentityProvider.find(params[:id])
42
42
  oauth_client = provider.oauth_client
43
- redirect_uri = env['redirect_uri'] || oauth_client.default_redirect_uri.uri
43
+ redirect_uri = env['redirect_uri'] || oauth_client.primary_redirect_uri.uri
44
44
 
45
45
  attributes = env['omniauth.auth']&.
46
46
  extra&.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Osso
4
- VERSION = '0.0.3.12'
4
+ VERSION = '0.0.3.13'
5
5
  end
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.3.12
4
+ version: 0.0.3.13
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-08-12 00:00:00.000000000 Z
11
+ date: 2020-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -271,7 +271,6 @@ files:
271
271
  - lib/osso/graphql/.DS_Store
272
272
  - lib/osso/graphql/mutation.rb
273
273
  - lib/osso/graphql/mutations.rb
274
- - lib/osso/graphql/mutations/add_redirect_uris_to_oauth_client.rb
275
274
  - lib/osso/graphql/mutations/base_mutation.rb
276
275
  - lib/osso/graphql/mutations/configure_identity_provider.rb
277
276
  - lib/osso/graphql/mutations/create_enterprise_account.rb
@@ -279,9 +278,8 @@ files:
279
278
  - lib/osso/graphql/mutations/create_oauth_client.rb
280
279
  - lib/osso/graphql/mutations/delete_enterprise_account.rb
281
280
  - lib/osso/graphql/mutations/delete_oauth_client.rb
282
- - lib/osso/graphql/mutations/delete_redirect_uri.rb
283
- - lib/osso/graphql/mutations/mark_redirect_uri_primary.rb
284
281
  - lib/osso/graphql/mutations/regenerate_oauth_credentials.rb
282
+ - lib/osso/graphql/mutations/set_redirect_uris.rb
285
283
  - lib/osso/graphql/query.rb
286
284
  - lib/osso/graphql/resolvers.rb
287
285
  - lib/osso/graphql/resolvers/enterprise_account.rb
@@ -299,6 +297,7 @@ files:
299
297
  - lib/osso/graphql/types/identity_provider_status.rb
300
298
  - lib/osso/graphql/types/oauth_client.rb
301
299
  - lib/osso/graphql/types/redirect_uri.rb
300
+ - lib/osso/graphql/types/redirect_uri_input.rb
302
301
  - lib/osso/graphql/types/user.rb
303
302
  - lib/osso/helpers/auth.rb
304
303
  - lib/osso/helpers/helpers.rb
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Osso
4
- module GraphQL
5
- module Mutations
6
- class AddRedirectUrisToOauthClient < BaseMutation
7
- null false
8
-
9
- argument :oauth_client_id, ID, required: true
10
- argument :uris, [String], required: true
11
-
12
- field :oauth_client, Types::OauthClient, null: true
13
- field :errors, [String], null: false
14
-
15
- def resolve(oauth_client_id:, uris:)
16
- oauth_client = Osso::Models::OauthClient.find(oauth_client_id)
17
-
18
- uris.each do |uri|
19
- oauth_client.redirect_uris.create(uri: uri)
20
- end
21
-
22
- unless oauth_client.primary_redirect_uri
23
- oauth_client.reload.redirect_uris.first.update(primary: true)
24
- end
25
-
26
- response_data(oauth_client: oauth_client.reload)
27
- rescue StandardError => e
28
- response_error(errors: e.message)
29
- end
30
-
31
- def ready?(*)
32
- return true if context[:scope] == :admin
33
-
34
- raise ::GraphQL::ExecutionError, 'Only admin users may mutate OauthClients'
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Osso
4
- module GraphQL
5
- module Mutations
6
- class DeleteRedirectUri < BaseMutation
7
- null false
8
-
9
- argument :id, ID, required: true
10
-
11
- field :oauth_client, Types::OauthClient, null: true
12
- field :errors, [String], null: false
13
-
14
- def resolve(id:)
15
- redirect_uri = Osso::Models::RedirectUri.find(id)
16
-
17
- oauth_client = redirect_uri.oauth_client
18
-
19
- redirect_uri.destroy
20
-
21
- if redirect_uri.primary
22
- oauth_client.redirect_uris.first&.update(primary: true)
23
- end
24
-
25
- return response_data(oauth_client: oauth_client.reload) if redirect_uri.destroy
26
-
27
- response_error(errors: redirect_uri.errors.full_messages)
28
- end
29
-
30
- def ready?(*)
31
- return true if context[:scope] == :admin
32
-
33
- raise ::GraphQL::ExecutionError, 'Only admin users may mutate OauthClients'
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Osso
4
- module GraphQL
5
- module Mutations
6
- class MarkRedirectUriPrimary < BaseMutation
7
- null false
8
-
9
- argument :id, ID, required: true
10
-
11
- field :oauth_client, Types::OauthClient, null: true
12
- field :errors, [String], null: false
13
-
14
- def resolve(id:)
15
- redirect_uri = Osso::Models::RedirectUri.find(id)
16
- oauth_client = redirect_uri.oauth_client
17
-
18
- oauth_client.redirect_uris.update(primary: false)
19
- redirect_uri.update(primary: true)
20
-
21
- response_data(oauth_client: oauth_client.reload)
22
- rescue StandardError => e
23
- response_error(errors: e.message)
24
- end
25
-
26
- def ready?(*)
27
- return true if context[:scope] == :admin
28
-
29
- raise ::GraphQL::ExecutionError, 'Only admin users may mutate OauthClients'
30
- end
31
- end
32
- end
33
- end
34
- end