Class: GroupPermission::Permission

Inherits:
Object
  • Object
show all
Includes:
EacRubyUtils::SimpleCache
Defined in:
app/models/group_permission.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, options) ⇒ Permission

Returns a new instance of Permission.



63
64
65
66
# File 'app/models/group_permission.rb', line 63

def initialize(key, options)
  @key = self.class.sanitize_key(key)
  @dependencies = (options[:dependencies] || []).map { |k| ::GroupPermission.permission(k) }
end

Instance Attribute Details

#dependenciesObject (readonly)

Returns the value of attribute dependencies.



61
62
63
# File 'app/models/group_permission.rb', line 61

def dependencies
  @dependencies
end

#keyObject (readonly)

Returns the value of attribute key.



61
62
63
# File 'app/models/group_permission.rb', line 61

def key
  @key
end

Class Method Details

.sanitize_key(k) ⇒ Object



56
57
58
# File 'app/models/group_permission.rb', line 56

def sanitize_key(k)
  k.to_s.downcase
end

Instance Method Details

#<=>(other) ⇒ Object



91
92
93
# File 'app/models/group_permission.rb', line 91

def <=>(other)
  to_s <=> other.to_s
end

#depends_recursive(visited = Set.new) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'app/models/group_permission.rb', line 81

def depends_recursive(visited = Set.new)
  return [] if visited.include?(key)
  r = Set.new([key])
  visited << key
  depends.each do |d|
    r += d.depends_recursive(visited)
  end
  r
end

#descriptionObject



68
69
70
# File 'app/models/group_permission.rb', line 68

def description
  I18n.t("permission_#{key}_description")
end

#to_sObject



72
73
74
# File 'app/models/group_permission.rb', line 72

def to_s
  key
end

#user_has?(user) ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
79
# File 'app/models/group_permission.rb', line 76

def user_has?(user)
  return true if user.admin
  GroupPermission.where(group: user_groups(user), permission: depends_recursive.to_a).any?
end