diff options
author | Jarka Kadlecová <jarka@gitlab.com> | 2018-07-16 20:30:17 +0200 |
---|---|---|
committer | Jarka Kadlecová <jarka@gitlab.com> | 2018-07-30 13:29:18 +0200 |
commit | 501fb04ec65cadcd7dddc6376546db8d8f7f123c (patch) | |
tree | 9f984fc2b284239f03f10fa0daa1127c20b3fc59 /app/services/projects/update_service.rb | |
parent | 2ca8219a20f16636b7a0ffa899a1a04ab8e84782 (diff) | |
download | gitlab-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.rb | 23 |
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!' |