diff options
Diffstat (limited to 'app/controllers/projects')
22 files changed, 53 insertions, 156 deletions
diff --git a/app/controllers/projects/alerting/notifications_controller.rb b/app/controllers/projects/alerting/notifications_controller.rb index 281ac14d3ce..b596cd74b03 100644 --- a/app/controllers/projects/alerting/notifications_controller.rb +++ b/app/controllers/projects/alerting/notifications_controller.rb @@ -66,15 +66,11 @@ module Projects def integration AlertManagement::HttpIntegrationsFinder.new( project, - endpoint_identifier: endpoint_identifier, + endpoint_identifier: params[:endpoint_identifier], active: true ).execute.first end - def endpoint_identifier - params[:endpoint_identifier] || AlertManagement::HttpIntegration::LEGACY_IDENTIFIERS - end - def notification_payload @notification_payload ||= params.permit![:notification] end diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb index 94cd324f312..2d2712ebe4d 100644 --- a/app/controllers/projects/commits_controller.rb +++ b/app/controllers/projects/commits_controller.rb @@ -45,6 +45,8 @@ class Projects::CommitsController < Projects::ApplicationController # rubocop: enable CodeReuse/ActiveRecord def signatures + Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/424527') + respond_to do |format| format.json do render json: { diff --git a/app/controllers/projects/environments/sample_metrics_controller.rb b/app/controllers/projects/environments/sample_metrics_controller.rb deleted file mode 100644 index 80344c83ab7..00000000000 --- a/app/controllers/projects/environments/sample_metrics_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -class Projects::Environments::SampleMetricsController < Projects::ApplicationController - feature_category :metrics - urgency :low - - def query - result = Metrics::SampleMetricsService.new(params[:identifier], range_start: params[:start], range_end: params[:end]).query - - if result - render json: { "status": "success", "data": { "resultType": "matrix", "result": result } } - else - render_404 - end - end -end diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index 127fe40b0e3..aabea122fb6 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -8,14 +8,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController layout 'project' - before_action only: [:show] do - push_frontend_feature_flag(:environment_details_vue, @project) - end - - before_action only: [:index, :edit, :new] do - push_frontend_feature_flag(:flux_resource_for_environment) - end - before_action :authorize_read_environment! before_action :authorize_create_environment!, only: [:new, :create] before_action :authorize_stop_environment!, only: [:stop] @@ -113,10 +105,8 @@ class Projects::EnvironmentsController < Projects::ApplicationController job = stop_actions.first if stop_actions&.count == 1 action_or_env_url = - if job.instance_of?(::Ci::Build) - polymorphic_url([project, job]) - elsif job.instance_of?(::Ci::Bridge) - project_pipeline_url(project, job.pipeline_id) + if job + project_job_url(project, job) else project_environment_url(project, @environment) end diff --git a/app/controllers/projects/graphs_controller.rb b/app/controllers/projects/graphs_controller.rb index e73e2a38149..fce7de4c0de 100644 --- a/app/controllers/projects/graphs_controller.rb +++ b/app/controllers/projects/graphs_controller.rb @@ -34,7 +34,7 @@ class Projects::GraphsController < Projects::ApplicationController { author_name: commit.author_name, author_email: commit.author_email, - date: commit.committed_date.strftime("%Y-%m-%d") + date: commit.committed_date.to_date.iso8601 } end diff --git a/app/controllers/projects/incidents_controller.rb b/app/controllers/projects/incidents_controller.rb index 6109e29b169..69d349b1f1d 100644 --- a/app/controllers/projects/incidents_controller.rb +++ b/app/controllers/projects/incidents_controller.rb @@ -12,6 +12,7 @@ class Projects::IncidentsController < Projects::ApplicationController push_force_frontend_feature_flag(:work_items_mvc_2, @project&.work_items_mvc_2_feature_flag_enabled?) push_frontend_feature_flag(:moved_mr_sidebar, project) push_frontend_feature_flag(:move_close_into_dropdown, project) + push_force_frontend_feature_flag(:linked_work_items, @project&.linked_work_items_feature_flag_enabled?) end feature_category :incident_management diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 83947c443f4..9abcc108ace 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -62,7 +62,6 @@ class Projects::IssuesController < Projects::ApplicationController before_action only: [:index, :service_desk] do push_frontend_feature_flag(:or_issuable_queries, project) push_frontend_feature_flag(:frontend_caching, project&.group) - push_frontend_feature_flag(:new_graphql_users_autocomplete, project) end before_action only: :show do @@ -73,7 +72,7 @@ class Projects::IssuesController < Projects::ApplicationController push_frontend_feature_flag(:epic_widget_edit_confirmation, project) push_frontend_feature_flag(:moved_mr_sidebar, project) push_frontend_feature_flag(:move_close_into_dropdown, project) - push_frontend_feature_flag(:action_cable_notes, project) + push_force_frontend_feature_flag(:linked_work_items, project.linked_work_items_feature_flag_enabled?) end around_action :allow_gitaly_ref_name_caching, only: [:discussions] @@ -114,12 +113,6 @@ class Projects::IssuesController < Projects::ApplicationController respond_to do |format| format.html format.atom { render layout: 'xml' } - format.json do - render json: { - html: view_to_html_string("projects/issues/_issues"), - labels: @labels.as_json(methods: :text_color) - } - end end end @@ -282,7 +275,6 @@ class Projects::IssuesController < Projects::ApplicationController def service_desk @issues = @issuables - @users.push(User.support_bot) end protected @@ -433,7 +425,7 @@ class Projects::IssuesController < Projects::ApplicationController if service_desk? options.reject! { |key| key == 'author_username' || key == 'author_id' } - options[:author_id] = User.support_bot + options[:author_id] = Users::Internal.support_bot end options diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb index 4e0b304a2ee..802ffd99e41 100644 --- a/app/controllers/projects/jobs_controller.rb +++ b/app/controllers/projects/jobs_controller.rb @@ -8,8 +8,8 @@ class Projects::JobsController < Projects::ApplicationController urgency :low, [:index, :show, :trace, :retry, :play, :cancel, :unschedule, :erase, :raw] - before_action :find_job_as_build, except: [:index, :play, :retry] - before_action :find_job_as_processable, only: [:play, :retry] + before_action :find_job_as_build, except: [:index, :play, :retry, :show] + before_action :find_job_as_processable, only: [:play, :retry, :show] before_action :authorize_read_build_trace!, only: [:trace, :raw] before_action :authorize_read_build! before_action :authorize_update_build!, @@ -27,17 +27,13 @@ class Projects::JobsController < Projects::ApplicationController feature_category :continuous_integration urgency :low - def index - # We need all builds for tabs counters - @all_builds = Ci::JobsFinder.new(current_user: current_user, project: @project).execute - - @scope = params[:scope] - @builds = Ci::JobsFinder.new(current_user: current_user, project: @project, params: params).execute - @builds = @builds.eager_load_everything - @builds = @builds.page(params[:page]).per(30).without_count - end + def index; end def show + if @build.instance_of?(::Ci::Bridge) + redirect_to project_pipeline_path(@build.downstream_pipeline.project, @build.downstream_pipeline.id) + end + respond_to do |format| format.html format.json do @@ -74,6 +70,8 @@ class Projects::JobsController < Projects::ApplicationController end def retry + Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/424184') + response = Ci::RetryJobService.new(project, current_user).execute(@build) if response.success? diff --git a/app/controllers/projects/labels_controller.rb b/app/controllers/projects/labels_controller.rb index 67cff16a76b..e62f912e0f7 100644 --- a/app/controllers/projects/labels_controller.rb +++ b/app/controllers/projects/labels_controller.rb @@ -155,7 +155,10 @@ class Projects::LabelsController < Projects::ApplicationController protected def label_params - params.require(:label).permit(:title, :description, :color) + allowed = [:title, :description, :color] + allowed << :lock_on_merge if @project.supports_lock_on_merge? + + params.require(:label).permit(allowed) end def label diff --git a/app/controllers/projects/merge_requests/application_controller.rb b/app/controllers/projects/merge_requests/application_controller.rb index 6d1b1ced4eb..81ff6c215f9 100644 --- a/app/controllers/projects/merge_requests/application_controller.rb +++ b/app/controllers/projects/merge_requests/application_controller.rb @@ -14,6 +14,18 @@ class Projects::MergeRequests::ApplicationController < Projects::ApplicationCont private + # Normally the methods with `check_(\w+)_available!` pattern are + # handled by the `method_missing` defined in `ProjectsController::ApplicationController` + # but that logic does not take the member roles into account, therefore, we handle this + # case here manually. + def check_merge_requests_available! + render_404 if project_policy.merge_requests_disabled? + end + + def project_policy + ProjectPolicy.new(current_user, project) + end + def merge_request @issuable = @merge_request ||= diff --git a/app/controllers/projects/merge_requests/conflicts_controller.rb b/app/controllers/projects/merge_requests/conflicts_controller.rb index 66a358963e2..26f4286233a 100644 --- a/app/controllers/projects/merge_requests/conflicts_controller.rb +++ b/app/controllers/projects/merge_requests/conflicts_controller.rb @@ -67,7 +67,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap flash[:notice] = _('All merge conflicts were resolved. The merge request can now be merged.') - render json: { redirect_to: project_merge_request_url(@project, @merge_request, resolved_conflicts: true) } + render json: { redirect_to: project_merge_request_path(@project, @merge_request, resolved_conflicts: true) } rescue Gitlab::Git::Conflict::Resolver::ResolutionError => e render status: :bad_request, json: { message: e.message } end diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 30168558eff..53fd7256b19 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -45,12 +45,10 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo push_frontend_feature_flag(:sast_reports_in_inline_diff, project) push_frontend_feature_flag(:mr_experience_survey, project) push_frontend_feature_flag(:saved_replies, current_user) - push_frontend_feature_flag(:code_quality_inline_drawer, project) push_force_frontend_feature_flag(:summarize_my_code_review, summarize_my_code_review_enabled?) push_frontend_feature_flag(:mr_activity_filters, current_user) - push_frontend_feature_flag(:review_apps_redeploy_mr_widget, project) push_frontend_feature_flag(:ci_job_failures_in_mr, project) - push_frontend_feature_flag(:action_cable_notes, project) + push_frontend_feature_flag(:mr_pipelines_graphql, project) end before_action only: [:edit] do @@ -106,11 +104,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo respond_to do |format| format.html format.atom { render layout: 'xml' } - format.json do - render json: { - html: view_to_html_string("projects/merge_requests/_merge_requests") - } - end end end @@ -389,20 +382,10 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo private - # NOTE: Remove this disable with add_prepared_state_to_mr FF removal - # rubocop: disable Metrics/AbcSize def show_merge_request close_merge_request_if_no_source_project @merge_request.check_mergeability(async: true) - # NOTE: Remove the created_at check when removing the FF check - if ::Feature.enabled?(:add_prepared_state_to_mr, @merge_request.project) && - @merge_request.created_at < 5.minutes.ago && - !@merge_request.prepared? - - @merge_request.prepare - end - respond_to do |format| format.html do # use next to appease Rubocop @@ -446,7 +429,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo end end end - # rubocop: enable Metrics/AbcSize def render_html_page preload_assignees_for_render(@merge_request) diff --git a/app/controllers/projects/mirrors_controller.rb b/app/controllers/projects/mirrors_controller.rb index acbd26cbdf6..a24273488fb 100644 --- a/app/controllers/projects/mirrors_controller.rb +++ b/app/controllers/projects/mirrors_controller.rb @@ -81,6 +81,7 @@ class Projects::MirrorsController < Projects::ApplicationController only_protected_branches keep_divergent_refs auth_method + user password ssh_known_hosts regenerate_ssh_private_key diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb index 7fcdf220bd2..3d8a787afcb 100644 --- a/app/controllers/projects/notes_controller.rb +++ b/app/controllers/projects/notes_controller.rb @@ -14,8 +14,7 @@ class Projects::NotesController < Projects::ApplicationController feature_category :team_planning, [:index, :create, :update, :destroy, :delete_attachment, :toggle_award_emoji] feature_category :code_review_workflow, [:resolve, :unresolve, :outdated_line_change] - urgency :medium, [:index] - urgency :low, [:create, :update, :destroy, :resolve, :unresolve, :toggle_award_emoji, :outdated_line_change] + urgency :low override :feature_category def feature_category diff --git a/app/controllers/projects/pages_controller.rb b/app/controllers/projects/pages_controller.rb index 02579cd4283..5b32eb8e58e 100644 --- a/app/controllers/projects/pages_controller.rb +++ b/app/controllers/projects/pages_controller.rb @@ -65,7 +65,15 @@ class Projects::PagesController < Projects::ApplicationController end def project_params_attributes - [:pages_https_only, { project_setting_attributes: [:pages_unique_domain_enabled] }] + [ + :pages_https_only, + { project_setting_attributes: project_setting_attributes } + ] + end + + # overridden in EE + def project_setting_attributes + [:pages_unique_domain_enabled] end end diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb index 42b6d83ee85..83a64579446 100644 --- a/app/controllers/projects/pipeline_schedules_controller.rb +++ b/app/controllers/projects/pipeline_schedules_controller.rb @@ -9,7 +9,6 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController before_action :authorize_create_pipeline_schedule!, only: [:new, :create] before_action :authorize_update_pipeline_schedule!, only: [:edit, :update] before_action :authorize_admin_pipeline_schedule!, only: [:take_ownership, :destroy] - before_action :push_schedule_feature_flag, only: [:index, :new, :edit] feature_category :continuous_integration urgency :low @@ -120,8 +119,4 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController def authorize_admin_pipeline_schedule! return access_denied! unless can?(current_user, :admin_pipeline_schedule, schedule) end - - def push_schedule_feature_flag - push_frontend_feature_flag(:pipeline_schedules_vue, @project) - end end diff --git a/app/controllers/projects/pipelines/tests_controller.rb b/app/controllers/projects/pipelines/tests_controller.rb index d77cf095a4f..4b522c88023 100644 --- a/app/controllers/projects/pipelines/tests_controller.rb +++ b/app/controllers/projects/pipelines/tests_controller.rb @@ -50,7 +50,7 @@ module Projects end def test_suite - suite = builds.sum do |build| + suite = builds.sum(Gitlab::Ci::Reports::TestSuite.new) do |build| test_report = build.collect_test_reports!(Gitlab::Ci::Reports::TestReport.new) test_report.get_suite(build.test_suite_name) end diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb index a96ee2215c2..036ea45cc78 100644 --- a/app/controllers/projects/pipelines_controller.rb +++ b/app/controllers/projects/pipelines_controller.rb @@ -3,7 +3,6 @@ class Projects::PipelinesController < Projects::ApplicationController include ::Gitlab::Utils::StrongMemoize include ProductAnalyticsTracking - include ProductAnalyticsTracking include ProjectStatsRefreshConflictsGuard urgency :low, [ @@ -34,9 +33,9 @@ class Projects::PipelinesController < Projects::ApplicationController label: 'redis_hll_counters.analytics.analytics_total_unique_counts_monthly', destinations: %i[redis_hll snowplow] - track_event :charts, name: 'p_analytics_ci_cd_pipelines', conditions: -> { should_track_ci_cd_pipelines? } - track_event :charts, name: 'p_analytics_ci_cd_deployment_frequency', conditions: -> { should_track_ci_cd_deployment_frequency? } - track_event :charts, name: 'p_analytics_ci_cd_lead_time', conditions: -> { should_track_ci_cd_lead_time? } + track_internal_event :charts, name: 'p_analytics_ci_cd_pipelines', conditions: -> { should_track_ci_cd_pipelines? } + track_internal_event :charts, name: 'p_analytics_ci_cd_deployment_frequency', conditions: -> { should_track_ci_cd_deployment_frequency? } + track_internal_event :charts, name: 'p_analytics_ci_cd_lead_time', conditions: -> { should_track_ci_cd_lead_time? } track_event :charts, name: 'p_analytics_ci_cd_time_to_restore_service', conditions: -> { should_track_ci_cd_time_to_restore_service? } track_event :charts, name: 'p_analytics_ci_cd_change_failure_rate', conditions: -> { should_track_ci_cd_change_failure_rate? } diff --git a/app/controllers/projects/prometheus/alerts_controller.rb b/app/controllers/projects/prometheus/alerts_controller.rb deleted file mode 100644 index 80a8dbf4729..00000000000 --- a/app/controllers/projects/prometheus/alerts_controller.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -module Projects - module Prometheus - class AlertsController < Projects::ApplicationController - respond_to :json - - protect_from_forgery except: [:notify] - - skip_before_action :project, only: [:notify] - - prepend_before_action :repository, :project_without_auth, only: [:notify] - - before_action :authorize_read_prometheus_alerts!, except: [:notify] - - feature_category :incident_management - urgency :low - - def notify - token = extract_alert_manager_token(request) - result = notify_service.execute(token) - - head result.http_status - end - - private - - def notify_service - Projects::Prometheus::Alerts::NotifyService - .new(project, params.permit!) - end - - def extract_alert_manager_token(request) - Doorkeeper::OAuth::Token.from_bearer_authorization(request) - end - - def project_without_auth - @project ||= Project - .find_by_full_path("#{params[:namespace_id]}/#{params[:project_id]}") - end - end - end -end diff --git a/app/controllers/projects/service_desk_controller.rb b/app/controllers/projects/service_desk_controller.rb index b1e30e7a45b..ca3cecf5949 100644 --- a/app/controllers/projects/service_desk_controller.rb +++ b/app/controllers/projects/service_desk_controller.rb @@ -36,7 +36,7 @@ class Projects::ServiceDeskController < Projects::ApplicationController service_desk_settings = project.service_desk_setting { - service_desk_address: project.service_desk_address, + service_desk_address: project.service_desk_system_address, service_desk_enabled: project.service_desk_enabled, issue_template_key: service_desk_settings&.issue_template_key, template_file_missing: service_desk_settings&.issue_template_missing?, diff --git a/app/controllers/projects/tracing_controller.rb b/app/controllers/projects/tracing_controller.rb deleted file mode 100644 index 45e773bf62b..00000000000 --- a/app/controllers/projects/tracing_controller.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -module Projects - class TracingController < Projects::ApplicationController - include ::Observability::ContentSecurityPolicy - - feature_category :tracing - - before_action :check_tracing_enabled - - def index; end - - def show - @trace_id = params[:id] - end - - private - - def check_tracing_enabled - render_404 unless Gitlab::Observability.tracing_enabled?(project) - end - end -end diff --git a/app/controllers/projects/work_items_controller.rb b/app/controllers/projects/work_items_controller.rb index 7da31c199a1..c3986be31b0 100644 --- a/app/controllers/projects/work_items_controller.rb +++ b/app/controllers/projects/work_items_controller.rb @@ -12,6 +12,7 @@ class Projects::WorkItemsController < Projects::ApplicationController push_force_frontend_feature_flag(:work_items_mvc, project&.work_items_mvc_feature_flag_enabled?) push_force_frontend_feature_flag(:work_items_mvc_2, project&.work_items_mvc_2_feature_flag_enabled?) push_force_frontend_feature_flag(:saved_replies, current_user) + push_force_frontend_feature_flag(:linked_work_items, project&.linked_work_items_feature_flag_enabled?) end feature_category :team_planning |