<=>(other)
click to toggle source
def <=>(other)
[role_weight, type, name, id] <=> [other.role_weight, other.type, other.name, other.id]
end
admin?()
click to toggle source
def admin?
role == 'admin'
end
editor?()
click to toggle source
def editor?
role == 'edit'
end
explicit_role?()
click to toggle source
def explicit_role?
explicit_role.present?
end
from()
click to toggle source
def from
Array(attributes['from'])
end
grant_from?(type, id)
click to toggle source
def grant_from?(type, id)
from.detect {|f| f['type'] == type && f['id'] == id}
end
name()
click to toggle source
def name
attributes['name'] || login
end
owner?()
click to toggle source
role_weight()
click to toggle source
def role_weight
if owner?
0
else
case role
when 'admin' then 1
when 'edit' then 2
when 'view' then 3
else 4
end
end
end
team?()
click to toggle source
def team?
type == 'team'
end
teams(members)
click to toggle source
def teams(members)
team_ids = from.inject([]) {|ids, f| ids << f['id'] if f['type'] == 'team'; ids }
members.select {|m| m.team? && team_ids.include?(m.id) }
end
to_s()
click to toggle source
def to_s
if name == login
"#{login} (#{role})"
elsif login
"#{name} <#{login}> (#{role})"
else
"#{name} (#{role})"
end
end
type()
click to toggle source
def type
attributes['type'] || 'user'
end
viewer?()
click to toggle source
def viewer?
role == 'view'
end