summaryrefslogtreecommitdiff
path: root/app/services/projects/update_service.rb
diff options
context:
space:
mode:
authorJarka Kadlecová <jarka@gitlab.com>2018-07-16 20:30:17 +0200
committerJarka Kadlecová <jarka@gitlab.com>2018-07-30 13:29:18 +0200
commit501fb04ec65cadcd7dddc6376546db8d8f7f123c (patch)
tree9f984fc2b284239f03f10fa0daa1127c20b3fc59 /app/services/projects/update_service.rb
parent2ca8219a20f16636b7a0ffa899a1a04ab8e84782 (diff)
downloadgitlab-ce-501fb04ec65cadcd7dddc6376546db8d8f7f123c.tar.gz
Delete todos when users loses target read permissions
Diffstat (limited to 'app/services/projects/update_service.rb')
-rw-r--r--app/services/projects/update_service.rb23
1 files changed, 16 insertions, 7 deletions
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index d3dc11435fe..a3c688f8a14 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -25,13 +25,7 @@ module Projects
return validation_failed! if project.errors.any?
if project.update(params.except(:default_branch))
- if project.previous_changes.include?('path')
- project.rename_repo
- else
- system_hook_service.execute_hooks_for(project, :update)
- end
-
- update_pages_config if changing_pages_https_only?
+ after_update
success
else
@@ -47,6 +41,21 @@ module Projects
private
+ def after_update
+ if project.previous_changes.include?(:visibility_level) && project.private?
+ # don't enqueue immediately to prevent todos removal in case of a mistake
+ TodosDestroyer::ProjectPrivateWorker.perform_in(1.hour, project.id)
+ end
+
+ if project.previous_changes.include?('path')
+ project.rename_repo
+ else
+ system_hook_service.execute_hooks_for(project, :update)
+ end
+
+ update_pages_config if changing_pages_https_only?
+ end
+
def validation_failed!
model_errors = project.errors.full_messages.to_sentence
error_message = model_errors.presence || 'Project could not be updated!'