summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/gitlab/user_team_manager.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/gitlab/user_team_manager.rb b/lib/gitlab/user_team_manager.rb
index 135df9c6ba2..c9ca0f3c5bc 100644
--- a/lib/gitlab/user_team_manager.rb
+++ b/lib/gitlab/user_team_manager.rb
@@ -80,12 +80,18 @@ module Gitlab
def update_team_user_access_in_project(team, user, project, action)
granted_access = max_teams_member_permission_in_project(user, project, action)
-
project_team_user = UsersProject.find_by_user_id_and_project_id(user.id, project.id)
- project_team_user.destroy if project_team_user.present?
- # project_team_user.project_access != granted_access
- project.team << [user, granted_access] if granted_access > 0
+ if granted_access.zero?
+ project_team_user.destroy if project_team_user.present?
+ return
+ end
+
+ if project_team_user.present?
+ project_team_user.update_attributes(project_access: granted_access)
+ else
+ project.team << [user, granted_access]
+ end
end
def max_teams_member_permission_in_project(user, project, action = nil, teams = nil)