summaryrefslogtreecommitdiff
path: root/app/controllers/projects/application_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/application_controller.rb')
-rw-r--r--app/controllers/projects/application_controller.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb
index 6d9b42a2c04..cbb14b55399 100644
--- a/app/controllers/projects/application_controller.rb
+++ b/app/controllers/projects/application_controller.rb
@@ -34,8 +34,12 @@ class Projects::ApplicationController < ApplicationController
def can_collaborate_with_project?(project = nil, ref: nil)
project ||= @project
+ can_create_merge_request =
+ can?(current_user, :create_merge_request_in_project, project) &&
+ current_user.already_forked?(project)
+
can?(current_user, :push_code, project) ||
- (current_user && current_user.already_forked?(project)) ||
+ can_create_merge_request ||
user_access(project).can_push_to_branch?(ref)
end