Class: Permissionable::Permissions
- Inherits:
-
Object
- Object
- Permissionable::Permissions
- Defined in:
- lib/permissionable/permissions.rb
Instance Method Summary collapse
-
#add(*permissions) ⇒ Object
(also: #<<)
Add new permissions will safely ignore any permissions already granted Usage: MyModel.last.permissions.add(:write) MyModel.last.permissions.add(:write, :read).
-
#include?(*permissions) ⇒ TrueClass, FalseClass
(also: #[])
Check if resource has permission Usage: resource.permissions.include?(:write) resource.permissions.include?(:write, :read).
-
#initialize(owner) ⇒ Permissions
constructor
A new instance of Permissions.
-
#remove(*permissions) ⇒ Object
Remove existing permissions will safely ignore any permissions not already granted Usage: resource.permissions.remove(:write) resource.permissions.remove(:write, :read).
- #to_i ⇒ Object
Constructor Details
#initialize(owner) ⇒ Permissions
Returns a new instance of Permissions.
3 4 5 6 7 8 9 10 |
# File 'lib/permissionable/permissions.rb', line 3 def initialize(owner) @owner = owner if @owner.respond_to?(:read_attribute) @permission_integer = @owner.read_attribute(:permissions) else @permission_integer = 0 end end |
Instance Method Details
#add(*permissions) ⇒ Object Also known as: <<
Add new permissions will safely ignore any permissions already granted Usage: MyModel.last.permissions.add(:write) MyModel.last.permissions.add(:write, :read)
21 22 23 24 25 26 27 28 29 |
# File 'lib/permissionable/permissions.rb', line 21 def add(*) .flatten! control_definitions() .each do || = [] @permission_integer += unless include?() end sync_with_owner end |
#include?(*permissions) ⇒ TrueClass, FalseClass Also known as: []
Check if resource has permission Usage: resource.permissions.include?(:write) resource.permissions.include?(:write, :read)
52 53 54 55 56 57 58 59 |
# File 'lib/permissionable/permissions.rb', line 52 def include?(*) .flatten! control_definitions() # Sum the corresponding int value of all # permissions provided in the argument list asserted = .inject(0){ |mem, | mem + [] } @permission_integer & asserted == asserted end |
#remove(*permissions) ⇒ Object
Remove existing permissions will safely ignore any permissions not already granted Usage: resource.permissions.remove(:write) resource.permissions.remove(:write, :read)
37 38 39 40 41 42 43 44 |
# File 'lib/permissionable/permissions.rb', line 37 def remove(*) .flatten! control_definitions() .each do || @permission_integer -= [] if include?() end sync_with_owner end |
#to_i ⇒ Object
12 13 14 |
# File 'lib/permissionable/permissions.rb', line 12 def to_i @permission_integer end |