Class: Parse::ACL::Permission

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model, ActiveModel::Serializers::JSON
Defined in:
lib/parse/model/acl.rb

Overview

The Permission class tracks the read and write permissions for a specific ACL entry. The value of an Parse-ACL hash only contains two keys: “read” and “write”.

# Example of the ACL format
 { "*":          { "read": true },
   "3KmCvT7Zsb": { "read": true, "write": true },
   "role:Admins": { "write": true }
 }

This would be managed as:

{ "*":          ACL::Permission.new(true),
  "3KmCvT7Zsb": ACL::Permission.new(true, true)
  "role:Amdins": ACL::Permission.new(false,true)
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#new(read = nil, write = nil) ⇒ Permission #new(hash) ⇒ Permission

Create a new permission with the given read and write privileges.

Overloads:

  • #new(read = nil, write = nil) ⇒ Permission

    Examples:

    ACL::Permission.new(true, false)

    Parameters:

    • read (Boolean) (defaults to: nil)

      whether reading is allowed.

    • write (Boolean) (defaults to: nil)

      whether writing is allowed.

  • #new(hash) ⇒ Permission

    Examples:

    ACL::Permission.new({read: true, write: false})

    Parameters:

    • hash (Hash)

      a key value pair for read/write permissions.


460
461
462
463
464
465
466
467
468
469
# File 'lib/parse/model/acl.rb', line 460

def initialize(r_perm = nil, w_perm = nil)
  if r_perm.is_a?(Hash)
    r_perm = r_perm.symbolize_keys
    @read = r_perm[:read].present?
    @write = r_perm[:write].present?
  else
    @read = r_perm.present?
    @write = w_perm.present?
  end
end

Instance Attribute Details

#readBoolean (readonly)

The read permission state.

Returns:

  • (Boolean)

    whether this permission is allowed.


443
444
445
# File 'lib/parse/model/acl.rb', line 443

def read
  @read
end

#writeBoolean (readonly)

The write permission state.

Returns:

  • (Boolean)

    whether this permission is allowed.


447
448
449
# File 'lib/parse/model/acl.rb', line 447

def write
  @write
end

Instance Method Details

#==(per) ⇒ Boolean

Returns whether two permission instances have the same permissions.

Returns:

  • (Boolean)

    whether two permission instances have the same permissions.


472
473
474
475
# File 'lib/parse/model/acl.rb', line 472

def ==(per)
  return false unless per.is_a?(self.class)
  @read == per.read && @write == per.write
end

#as_json(*args) ⇒ Hash

Returns A Parse-compatible ACL-hash. Omission or false on a priviledge means don't include it

Returns:

  • (Hash)

    A Parse-compatible ACL-hash. Omission or false on a priviledge means don't include it


479
480
481
482
483
484
# File 'lib/parse/model/acl.rb', line 479

def as_json(*args)
  h = {}
  h[:read] = true if @read
  h[:write] = true if @write
  h.empty? ? nil : h.as_json
end

#attributesHash

Returns:


487
488
489
490
491
492
# File 'lib/parse/model/acl.rb', line 487

def attributes
  h = {}
  h.merge!(read: :boolean) if @read
  h.merge!(write: :boolean) if @write
  h
end

#no_read!void

This method returns an undefined value.

Sets the read value of the permission to false.

Version:

  • 1.7.2


523
524
525
# File 'lib/parse/model/acl.rb', line 523

def no_read!
  @write = false
end

#no_write!void

This method returns an undefined value.

Sets the write value of the permission to false.

Version:

  • 1.7.2


530
531
532
# File 'lib/parse/model/acl.rb', line 530

def no_write!
  @write = false
end

#present?Boolean

Returns whether there is at least one permission set to true.

Returns:

  • (Boolean)

    whether there is at least one permission set to true.


500
501
502
# File 'lib/parse/model/acl.rb', line 500

def present?
  @read.present? || @write.present?
end

#read!(value = true) ⇒ void

Note:

Setting the value in this manner is not dirty tracked.

This method returns an undefined value.

Sets the read value of the permission. Defaults to true.

Version:

  • 1.7.2


508
509
510
# File 'lib/parse/model/acl.rb', line 508

def read!(value = true)
  @read = value
end

#write!(value = true) ⇒ void

Note:

Setting the value in this manner is not dirty tracked.

This method returns an undefined value.

Sets the write value of the permission. Defaults to true.

Version:

  • 1.7.2


516
517
518
# File 'lib/parse/model/acl.rb', line 516

def write!(value = true)
  @write = value
end