Sha256: cde8fc35c8951786d3a3033186e12b173ff6fe845bbb913a6c432599dbeaec79

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Osso
  module GraphQL
    module Mutations
      class ConfigureIdentityProvider < BaseMutation
        null false
        argument :id, ID, required: true
        argument :service, Types::IdentityProviderService, required: false
        argument :sso_url, String, required: false
        argument :sso_cert, String, required: false

        field :identity_provider, Types::IdentityProvider, null: false
        field :errors, [String], null: false

        def resolve(id:, **args)
          provider = Osso::Models::IdentityProvider.find(id)

          return response_data(identity_provider: provider) if provider.update(args)

          response_error(errors: provder.errors.messages)
        end

        def ready?(id:, **_args)
          return true if context[:scope] == :admin

          domain = Osso::Models::IdentityProvider.find(id)&.domain

          return true if domain == context[:scope]

          raise ::GraphQL::ExecutionError, "This user lacks the scope to mutate records belonging to #{domain}"
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
osso-0.0.3.16 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.15 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.14 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.13 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.12 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.11 lib/osso/graphql/mutations/configure_identity_provider.rb
osso-0.0.3.9 lib/osso/graphql/mutations/configure_identity_provider.rb