Feature #36696 » 36696.patch
| app/models/group.rb | ||
|---|---|---|
| 78 | 78 |
end |
| 79 | 79 | |
| 80 | 80 |
def user_added(user) |
| 81 |
members.each do |member| |
|
| 82 |
next if member.project.nil? |
|
| 81 |
members.preload(:member_roles).each do |member|
|
|
| 82 |
next if member.project_id.nil?
|
|
| 83 | 83 | |
| 84 | 84 |
user_member = |
| 85 |
Member.find_by_project_id_and_user_id(member.project_id, user.id) || |
|
| 86 |
Member.new(:project_id => member.project_id, :user_id => user.id) |
|
| 87 |
member.member_roles.each do |member_role| |
|
| 88 |
user_member.member_roles << MemberRole.new(:role => member_role.role, |
|
| 89 |
:inherited_from => member_role.id) |
|
| 90 |
end |
|
| 85 |
Member.find_or_initialize_by(:project_id => member.project_id, :user_id => user.id) |
|
| 86 |
user_member.member_roles << |
|
| 87 |
member.member_roles.pluck(:id, :role_id).map do |id, role_id| |
|
| 88 |
MemberRole.new(:role_id => role_id, :inherited_from => id) |
|
| 89 |
end |
|
| 91 | 90 |
user_member.save! |
| 92 | 91 |
end |
| 93 | 92 |
end |
| app/models/member_role.rb | ||
|---|---|---|
| 30 | 30 |
validate :validate_role_member |
| 31 | 31 | |
| 32 | 32 |
def validate_role_member |
| 33 |
errors.add :role_id, :invalid if role && !role.member?
|
|
| 33 |
errors.add :role_id, :invalid unless role&.member?
|
|
| 34 | 34 |
end |
| 35 | 35 | |
| 36 | 36 |
def inherited? |
| ... | ... | |
| 58 | 58 |
end |
| 59 | 59 | |
| 60 | 60 |
def add_role_to_group_users |
| 61 |
if member.principal.is_a?(Group) && !inherited?
|
|
| 62 |
member.principal.users.each do |user|
|
|
| 63 |
user_member = Member.find_or_new(member.project_id, user.id)
|
|
| 64 |
user_member.member_roles << MemberRole.new(:role => role, :inherited_from => id)
|
|
| 61 |
if !inherited? && member.principal.is_a?(Group)
|
|
| 62 |
member.principal.users.ids.each do |user_id|
|
|
| 63 |
user_member = Member.find_or_initialize_by(:project_id => member.project_id, :user_id => user_id)
|
|
| 64 |
user_member.member_roles << MemberRole.new(:role_id => role_id, :inherited_from => id)
|
|
| 65 | 65 |
user_member.save! |
| 66 | 66 |
end |
| 67 | 67 |
end |
| 68 | 68 |
end |
| 69 | 69 | |
| 70 | 70 |
def add_role_to_subprojects |
| 71 |
member.project.children.each do |subproject|
|
|
| 72 |
if subproject.inherit_members? |
|
| 73 |
child_member = Member.find_or_new(subproject.id, member.user_id)
|
|
| 74 |
child_member.member_roles << MemberRole.new(:role => role, :inherited_from => id)
|
|
| 75 |
child_member.save!
|
|
| 76 |
end
|
|
| 71 |
return if member.project.leaf?
|
|
| 72 | ||
| 73 |
member.project.children.where(:inherit_members => true).ids.each do |subproject_id|
|
|
| 74 |
child_member = Member.find_or_initialize_by(:project_id => subproject_id, :user_id => member.user_id)
|
|
| 75 |
child_member.member_roles << MemberRole.new(:role => role, :inherited_from => id)
|
|
| 76 |
child_member.save!
|
|
| 77 | 77 |
end |
| 78 | 78 |
end |
| 79 | 79 | |