Class: Osso::GraphQL::Mutations::BaseMutation

Inherits:
GraphQL::Schema::RelayClassicMutation
  • Object
show all
Defined in:
lib/osso/graphql/mutations/base_mutation.rb

Instance Method Summary collapse

Instance Method Details

#account_domain(id) ⇒ Object



55
56
57
58
59
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 55

def (id)
  return false unless id

  Osso::Models::EnterpriseAccount.find(id)&.domain
end

#admin_ready?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 41

def admin_ready?
  context[:scope] == 'admin'
end

#domain_ready?(domain) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 51

def domain_ready?(domain)
  context[:email].split('@')[1] == domain
end

#field_errors(errors) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 23

def field_errors(errors)
  errors.map do |attribute, messages|
    attribute = attribute.to_s.camelize(:lower)
    {
      attribute: attribute,
      message: messages,
    }
  end
end

#internal_ready?Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 45

def internal_ready?
  return true if admin_ready?

  context[:scope] == 'internal'
end

#provider_domain(id) ⇒ Object



61
62
63
64
65
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 61

def provider_domain(id)
  return false unless id

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

#ready?(**args) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (::GraphQL::ExecutionError)


33
34
35
36
37
38
39
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 33

def ready?(**args)
  return true if internal_ready?

  return true if domain_ready?(args[:domain] || domain(**args))

  raise ::GraphQL::ExecutionError, 'This user lacks the permission to make the requested changes'
end

#response_data(data) ⇒ Object



10
11
12
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 10

def response_data(data)
  data.merge(errors: [])
end

#response_error(errors) ⇒ Object

Raises:

  • (::GraphQL::ExecutionError)


14
15
16
17
18
19
20
21
# File 'lib/osso/graphql/mutations/base_mutation.rb', line 14

def response_error(errors)
  raise ::GraphQL::ExecutionError.new(
    'Mutation error',
    extensions: {
      'errors' => field_errors(errors),
    },
  )
end