Skip to content
Snippets Groups Projects
Commit 0f396105 authored by Andrey Kumanyaev's avatar Andrey Kumanyaev
Browse files

Add control of action in project to team assigment

parent a0f2fbc2
No related branches found
No related tags found
1 merge request!3247Fix bug with downgrade permissions on first project assigment to team
Loading
Loading
@@ -10,7 +10,7 @@ module Gitlab
 
unless searched_project.present?
team.user_team_project_relationships.create(project_id: project.id, greatest_access: access)
update_team_users_access_in_project(team, project)
update_team_users_access_in_project(team, project, :added)
end
end
 
Loading
Loading
@@ -19,7 +19,7 @@ module Gitlab
 
team.user_team_project_relationships.with_project(project).destroy_all
 
update_team_users_access_in_project(team, project)
update_team_users_access_in_project(team, project, :updated)
end
 
def update_team_user_membership(team, member, options)
Loading
Loading
@@ -52,7 +52,7 @@ module Gitlab
project_relation = team.user_team_project_relationships.find_by_project_id(project)
if permission != team.max_project_access(project)
if project_relation.update_attributes(greatest_access: permission)
update_team_users_access_in_project(team, project)
update_team_users_access_in_project(team, project, :updated)
true
else
false
Loading
Loading
@@ -68,15 +68,15 @@ module Gitlab
end
end
 
def update_team_users_access_in_project(team, project)
def update_team_users_access_in_project(team, project, action)
members = team.members
members.each do |member|
update_team_user_access_in_project(team, member, project)
update_team_user_access_in_project(team, member, project, action)
end
end
 
def update_team_user_access_in_project(team, user, project)
granted_access = max_teams_member_permission_in_project(user, project)
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?
Loading
Loading
@@ -85,11 +85,14 @@ module Gitlab
project.team << [user, granted_access] if granted_access > 0
end
 
def max_teams_member_permission_in_project(user, project, teams = nil)
def max_teams_member_permission_in_project(user, project, action = nil, teams = nil)
result_access = 0
 
teams ||= project.user_teams.with_member(user)
result_access ||= project.users_project.with_user(user).first.project_access
if action && (action == :added) && (teams.count == 1)
result_access ||= project.users_project.with_user(user).first.project_access
end
 
if teams.any?
teams.each do |team|
Loading
Loading
@@ -112,7 +115,7 @@ module Gitlab
 
team.user_team_user_relationships.create(user_id: user.id, permission: access, group_admin: admin)
team.projects.each do |project|
update_team_user_access_in_project(team, user, project)
update_team_user_access_in_project(team, user, project, :added)
end
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment