diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-05-30 11:40:15 +0300 |
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-05-30 11:40:15 +0300 |
| commit | 888e493b82435a074938aa25f823c2c9b0fb8026 (patch) | |
| tree | 83c8330b77045e91c747b536e8f8f59b92213320 /lib | |
| parent | 31fdcac1612588071c08593ac3318b93f0312eec (diff) | |
| download | gitlab-ce-888e493b82435a074938aa25f823c2c9b0fb8026.tar.gz | |
Update membership instead of remove/add if it permissions were changed
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/gitlab/user_team_manager.rb | 14 |
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) |
