diff options
Diffstat (limited to 'app/controllers/projects_controller.rb')
-rw-r--r-- | app/controllers/projects_controller.rb | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 0c40478d877..ebffb62cff3 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -14,7 +14,7 @@ class ProjectsController < Projects::ApplicationController around_action :allow_gitaly_ref_name_caching, only: [:index, :show] - before_action :whitelist_query_limiting, only: [:create] + before_action :whitelist_query_limiting, only: [:show, :create] before_action :authenticate_user!, except: [:index, :show, :activity, :refs, :resolve, :unfoldered_environment_names] before_action :redirect_git_extension, only: [:show] before_action :project, except: [:index, :new, :create, :resolve] @@ -31,8 +31,11 @@ class ProjectsController < Projects::ApplicationController # Project Export Rate Limit before_action :export_rate_limit, only: [:export, :download_export, :generate_new_export] + before_action do + push_frontend_feature_flag(:vue_notification_dropdown, @project, default_enabled: :yaml) + end + before_action only: [:edit] do - push_frontend_feature_flag(:approval_suggestions, @project, default_enabled: true) push_frontend_feature_flag(:allow_editing_commit_messages, @project) end @@ -71,6 +74,7 @@ class ProjectsController < Projects::ApplicationController @project = ::Projects::CreateService.new(current_user, project_params(attributes: project_params_create_attributes)).execute if @project.saved? + experiment(:new_project_readme, actor: current_user).track(:created, property: active_new_project_tab) redirect_to( project_path(@project, custom_import_params), notice: _("Project '%{project_name}' was successfully created.") % { project_name: @project.name } @@ -392,6 +396,14 @@ class ProjectsController < Projects::ApplicationController ] end + def project_setting_attributes + %i[ + show_default_award_emojis + squash_option + allow_editing_commit_messages + ] + end + def project_params_attributes [ :allow_merge_on_skipped_pipeline, @@ -429,11 +441,7 @@ class ProjectsController < Projects::ApplicationController :suggestion_commit_message, :packages_enabled, :service_desk_enabled, - project_setting_attributes: %i[ - show_default_award_emojis - squash_option - allow_editing_commit_messages - ] + project_setting_attributes: project_setting_attributes ] + [project_feature_attributes: project_feature_attributes] end @@ -493,17 +501,19 @@ class ProjectsController < Projects::ApplicationController render_404 unless Gitlab::CurrentSettings.project_export_enabled? end + # Redirect from localhost/group/project.git to localhost/group/project def redirect_git_extension - # Redirect from - # localhost/group/project.git - # to - # localhost/group/project - # - redirect_to request.original_url.sub(%r{\.git/?\Z}, '') if params[:format] == 'git' + return unless params[:format] == 'git' + + # `project` calls `find_routable!`, so this will trigger the usual not-found + # behaviour when the user isn't authorized to see the project + return unless project + + redirect_to(request.original_url.sub(%r{\.git/?\Z}, '')) end def whitelist_query_limiting - Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42440') + Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab/-/issues/20826') end def present_project |