Class: Mutations::BaseMutation
Direct Known Subclasses
Achievements::Award, Achievements::Create, Achievements::Delete, Achievements::DeleteUserAchievement, Achievements::Revoke, Achievements::Update, Achievements::UpdateUserAchievementPriorities, Admin::AbuseReportLabels::Create, Admin::SidekiqQueues::DeleteJobs, AlertManagement::Base, AlertManagement::HttpIntegration::HttpIntegrationBase, AlertManagement::PrometheusIntegration::PrometheusIntegrationBase, AwardEmojis::Base, Mutations::Boards::Create, Mutations::Boards::Destroy, Mutations::Boards::Lists::BaseCreate, Mutations::Boards::Lists::BaseUpdate, Mutations::Boards::Lists::Destroy, Mutations::Boards::Update, Mutations::Branches::Create, Ci::Job::Base, Ci::JobArtifact::BulkDestroy, Ci::JobArtifact::Destroy, Ci::JobTokenScope::AddProject, Ci::JobTokenScope::RemoveProject, Ci::Pipeline::Base, Ci::PipelineSchedule::Base, Ci::PipelineSchedule::Create, Ci::PipelineTrigger::Base, Ci::PipelineTrigger::Create, Ci::ProjectCiCdSettingsUpdate, Ci::Runner::BulkDelete, Ci::Runner::Create, Ci::Runner::Delete, Ci::Runner::Update, Ci::RunnersRegistrationToken::Reset, Clusters::AgentTokens::Create, Clusters::AgentTokens::Revoke, Clusters::Agents::Create, Clusters::Agents::Delete, Commits::Create, ContainerExpirationPolicies::Update, ContainerRepositories::DestroyBase, CustomEmoji::Create, CustomEmoji::Destroy, CustomerRelations::Contacts::Base, CustomerRelations::Organizations::Create, CustomerRelations::Organizations::Update, DependencyProxy::GroupSettings::Update, DependencyProxy::ImageTtlGroupPolicy::Update, DesignManagement::Base, DesignManagement::Move, DesignManagement::Update, Discussions::ToggleResolve, Echo, Environments::CanaryIngress::Update, Environments::Create, Environments::Delete, Environments::Stop, Environments::Update, Groups::Update, IncidentManagement::TimelineEvent::Base, IncidentManagement::TimelineEventTag::Base, Issues::Base, Issues::BulkUpdate, Issues::Create, Issues::SetSubscription, JiraImport::ImportUsers, JiraImport::Start, Labels::Create, Members::BulkUpdateBase, MergeRequests::Base, MergeRequests::Create, MergeRequests::SetSubscription, Metrics::Dashboard::Annotations::Create, Metrics::Dashboard::Annotations::Delete, Namespace::PackageSettings::Update, Notes::Base, Packages::BulkDestroy, Packages::Cleanup::Policy::Update, Packages::Destroy, Packages::DestroyFile, Packages::DestroyFiles, Pages::Base, Projects::SyncFork, ReleaseAssetLinks::Create, ReleaseAssetLinks::Delete, ReleaseAssetLinks::Update, Releases::Base, SavedReplies::Base, Security::CiConfiguration::BaseSecurityAnalyzer, Snippets::Base, Snippets::Create, Terraform::State::Base, Timelogs::Base, Todos::Create, Todos::MarkAllDone, Todos::MarkDone, Todos::Restore, Todos::RestoreMany, Uploads::Delete, UserCallouts::Create, UserPreferences::Update, Users::SetNamespaceCommitEmail, WorkItems::Convert, WorkItems::Create, WorkItems::CreateFromTask, WorkItems::Delete, WorkItems::DeleteTask, WorkItems::Export, WorkItems::LinkedItems::Base, WorkItems::Subscribe, WorkItems::Update, WorkItems::UpdateTask
Constant Summary
collapse
- ERROR_MESSAGE =
'You cannot perform write operations on a read-only instance'
Gitlab::Graphql::Authorize::AuthorizeResource::ConfigurationError, Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR
Class Method Summary
collapse
Instance Method Summary
collapse
#authorize!, #authorized_find!, #authorized_resource?, #find_object, #raise_resource_not_available_error!
Class Method Details
.authorization ⇒ Object
See: AuthorizeResource#authorized_resource?
.authorized?(object, context) ⇒ Boolean
62
63
64
65
66
67
68
69
70
|
# File 'app/graphql/mutations/base_mutation.rb', line 62
def self.authorized?(object, context)
auth = ::Gitlab::Graphql::Authorize::ObjectAuthorization.new(:execute_graphql_mutation, :api)
return true if auth.ok?(:global, context[:current_user],
scope_validator: context[:scope_validator])
raise_resource_not_available_error!
end
|
.authorizes_object? ⇒ Boolean
58
59
60
|
# File 'app/graphql/mutations/base_mutation.rb', line 58
def self.authorizes_object?
true
end
|
Instance Method Details
#api_user? ⇒ Boolean
21
22
23
|
# File 'app/graphql/mutations/base_mutation.rb', line 21
def api_user?
context[:is_sessionless_user]
end
|
#current_user ⇒ Object
17
18
19
|
# File 'app/graphql/mutations/base_mutation.rb', line 17
def current_user
context[:current_user]
end
|
#errors_on_object(record) ⇒ Object
Returns Array of errors on an ActiveRecord object
26
27
28
|
# File 'app/graphql/mutations/base_mutation.rb', line 26
def errors_on_object(record)
record.errors.full_messages
end
|
#load_application_object(argument, id, context) ⇒ Object
46
47
48
|
# File 'app/graphql/mutations/base_mutation.rb', line 46
def load_application_object(argument, id, context)
::Gitlab::Graphql::Lazy.new { super }
end
|
#ready?(**args) ⇒ Boolean
30
31
32
33
34
35
36
37
38
39
40
|
# File 'app/graphql/mutations/base_mutation.rb', line 30
def ready?(**args)
raise_resource_not_available_error!(ERROR_MESSAGE) if read_only?
missing_args = self.class.arguments.values
.reject { |arg| arg.accepts?(args.fetch(arg.keyword, :not_given)) }
.map(&:graphql_name)
raise ArgumentError, "Arguments must be provided: #{missing_args.join(", ")}" if missing_args.any?
true
end
|
#unauthorized_object(error) ⇒ Object
50
51
52
53
54
55
56
|
# File 'app/graphql/mutations/base_mutation.rb', line 50
def unauthorized_object(error)
Gitlab::ErrorTracking.track_exception(error)
raise_resource_not_available_error!
end
|