Skip to content
Snippets Groups Projects

Expose project settings in REST API only for maintainer+ users

Merged Hinam Mehra requested to merge 442899-update-project-rest-api into master
All threads resolved!
@@ -16,6 +16,14 @@ def preload_relation(projects_relation, options = {})
@@ -16,6 +16,14 @@ def preload_relation(projects_relation, options = {})
end
end
prepended do
prepended do
 
with_options if: ->(project, options) { Ability.allowed?(options[:current_user], :read_issue, project) && project.feature_available?(:issuable_default_templates) } do
 
expose :issues_template
 
end
 
 
with_options if: ->(project, options) { Ability.allowed?(options[:current_user], :read_merge_request, project) && project.feature_available?(:issuable_default_templates) } do
 
expose :merge_requests_template
 
end
 
with_options if: ->(project, options) { Ability.allowed?(options[:current_user], :admin_project, project) } do
with_options if: ->(project, options) { Ability.allowed?(options[:current_user], :admin_project, project) } do
expose :approvals_before_merge, if: ->(project, _) { project.feature_available?(:merge_request_approvers) }
expose :approvals_before_merge, if: ->(project, _) { project.feature_available?(:merge_request_approvers) }
expose :mirror, if: ->(project, _) { project.feature_available?(:repository_mirrors) }
expose :mirror, if: ->(project, _) { project.feature_available?(:repository_mirrors) }
@@ -29,6 +37,7 @@ def preload_relation(projects_relation, options = {})
@@ -29,6 +37,7 @@ def preload_relation(projects_relation, options = {})
expose :marked_for_deletion_on, if: ->(project, _) { project.feature_available?(:adjourned_deletion_for_projects_and_groups) } do |project, _|
expose :marked_for_deletion_on, if: ->(project, _) { project.feature_available?(:adjourned_deletion_for_projects_and_groups) } do |project, _|
project.marked_for_deletion_at
project.marked_for_deletion_at
end
end
 
# Expose old field names with the new permissions methods to keep API compatible
# Expose old field names with the new permissions methods to keep API compatible
# TODO: remove in API v5, replaced by *_access_level
# TODO: remove in API v5, replaced by *_access_level
expose :requirements_enabled do |project, options|
expose :requirements_enabled do |project, options|
@@ -42,10 +51,6 @@ def preload_relation(projects_relation, options = {})
@@ -42,10 +51,6 @@ def preload_relation(projects_relation, options = {})
expose :compliance_frameworks do |project, _|
expose :compliance_frameworks do |project, _|
[project.compliance_framework_setting&.compliance_management_framework&.name].compact
[project.compliance_framework_setting&.compliance_management_framework&.name].compact
end
end
expose :issues_template, if: ->(project, options) do
project.feature_available?(:issuable_default_templates) &&
Ability.allowed?(options[:current_user], :read_issue, project)
end
expose :merge_pipelines_enabled?, as: :merge_pipelines_enabled, if: ->(project, _) { project.feature_available?(:merge_pipelines) }
expose :merge_pipelines_enabled?, as: :merge_pipelines_enabled, if: ->(project, _) { project.feature_available?(:merge_pipelines) }
expose :merge_trains_enabled?, as: :merge_trains_enabled, if: ->(project, _) { project.feature_available?(:merge_pipelines) }
expose :merge_trains_enabled?, as: :merge_trains_enabled, if: ->(project, _) { project.feature_available?(:merge_pipelines) }
@@ -56,11 +61,6 @@ def preload_relation(projects_relation, options = {})
@@ -56,11 +61,6 @@ def preload_relation(projects_relation, options = {})
expose :restrict_pipeline_cancellation_role, as: :ci_restrict_pipeline_cancellation_role, if: ->(project, _) { project.ci_cancellation_restriction.feature_available? }
expose :restrict_pipeline_cancellation_role, as: :ci_restrict_pipeline_cancellation_role, if: ->(project, _) { project.ci_cancellation_restriction.feature_available? }
end
end
expose :merge_requests_template, if: ->(project, options) do
project.feature_available?(:issuable_default_templates) &&
Ability.allowed?(options[:current_user], :read_merge_request, project)
end
end
end
end
end
end
end
Loading