summaryrefslogtreecommitdiffstats
path: root/app/models/member.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/member.rb')
-rw-r--r--app/models/member.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/app/models/member.rb b/app/models/member.rb
index 02f019402..c9c5c2d54 100644
--- a/app/models/member.rb
+++ b/app/models/member.rb
@@ -110,6 +110,16 @@ class Member < ActiveRecord::Base
member_roles.any? {|mr| mr.role_id == role.id && mr.inherited_from.present?}
end
+ # Returns an Array of Project and/or Group from which the given role
+ # was inherited, or an empty Array if the role was not inherited
+ def role_inheritance(role)
+ member_roles.
+ select {|mr| mr.role_id == role.id && mr.inherited_from.present?}.
+ map {|mr| mr.inherited_from_member_role.try(:member)}.
+ compact.
+ map {|m| m.project == project ? m.principal : m.project}
+ end
+
# Returns true if the member's role is editable by user
def role_editable?(role, user=User.current)
if has_inherited_role?(role)