summaryrefslogtreecommitdiff
path: root/app/services/projects
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-01-21 12:16:22 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-01-21 12:16:22 +0000
commitcb6f08be88608936fbeafa535cf725e1eaa3ffeb (patch)
tree79a5474206546033b6fe428a0944a4b49c22a42e /app/services/projects
parent62b0d21a48b2adbfd4ac63159fe0efac73ada922 (diff)
downloadgitlab-ce-cb6f08be88608936fbeafa535cf725e1eaa3ffeb.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/projects')
-rw-r--r--app/services/projects/create_service.rb2
-rw-r--r--app/services/projects/readme_renderer_service.rb27
2 files changed, 28 insertions, 1 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 153be58f8ad..c885369dfec 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -167,7 +167,7 @@ module Projects
end
def readme_content
- @readme_template.presence || experiment(:new_project_readme_content, namespace: @project.namespace).run_with(@project)
+ @readme_template.presence || ReadmeRendererService.new(@project, current_user).execute
end
def skip_wiki?
diff --git a/app/services/projects/readme_renderer_service.rb b/app/services/projects/readme_renderer_service.rb
new file mode 100644
index 00000000000..6871976aded
--- /dev/null
+++ b/app/services/projects/readme_renderer_service.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Projects
+ class ReadmeRendererService < BaseService
+ include Rails.application.routes.url_helpers
+
+ TEMPLATE_PATH = Rails.root.join('app', 'views', 'projects', 'readme_templates')
+
+ def execute
+ render(params[:template_name] || :default)
+ end
+
+ private
+
+ def render(template_name)
+ ERB.new(File.read(sanitized_filename(template_name)), trim_mode: '<>').result(binding)
+ end
+
+ def sanitized_filename(template_name)
+ path = Gitlab::Utils.check_path_traversal!("#{template_name}.md.tt")
+ path = TEMPLATE_PATH.join(path).to_s
+ Gitlab::Utils.check_allowed_absolute_path!(path, [TEMPLATE_PATH.to_s])
+
+ path
+ end
+ end
+end