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.



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

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.



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

def dependencies
  @dependencies
end

#keyObject (readonly)

Returns the value of attribute key.



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

def key
  @key
end

Class Method Details

.sanitize_key(key) ⇒ Object



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

def sanitize_key(key)
  key.to_s.downcase
end

Instance Method Details

#<=>(other) ⇒ Object



97
98
99
# File 'app/models/group_permission.rb', line 97

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

#depends_recursive(visited = Set.new) ⇒ Object



86
87
88
89
90
91
92
93
94
95
# File 'app/models/group_permission.rb', line 86

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



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

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

#to_sObject



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

def to_s
  key
end

#user_has?(user) ⇒ Boolean

Returns:

  • (Boolean)


80
81
82
83
84
# File 'app/models/group_permission.rb', line 80

def user_has?(user)
  return true if user.admin

  GroupPermission.where(group: user_groups(user), permission: depends_recursive.to_a).any?
end