Class: Parse::ACL::Permission
- Inherits:
-
Object
- Object
- Parse::ACL::Permission
- 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
-
#read ⇒ Boolean
readonly
The read permission state.
-
#write ⇒ Boolean
readonly
The write permission state.
Instance Method Summary collapse
-
#==(per) ⇒ Boolean
Whether two permission instances have the same permissions.
-
#as_json(*args) ⇒ Hash
A Parse-compatible ACL-hash.
- #attributes ⇒ Hash
-
#initialize(r_perm = nil, w_perm = nil) ⇒ Permission
constructor
Create a new permission with the given read and write privileges.
-
#no_read!
Sets the read value of the permission to false.
-
#no_write!
Sets the write value of the permission to false.
-
#present? ⇒ Boolean
Whether there is at least one permission set to true.
-
#read!(value = true)
Sets the read value of the permission.
-
#write!(value = true)
Sets the write value of the permission.
Constructor Details
#new(read = nil, write = nil) ⇒ Permission #new(hash) ⇒ Permission
Create a new permission with the given read and write privileges.
895 896 897 898 899 900 901 902 903 904 |
# File 'lib/parse/model/acl.rb', line 895 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
#read ⇒ Boolean (readonly)
The read permission state.
878 879 880 |
# File 'lib/parse/model/acl.rb', line 878 def read @read end |
#write ⇒ Boolean (readonly)
The write permission state.
882 883 884 |
# File 'lib/parse/model/acl.rb', line 882 def write @write end |
Instance Method Details
#==(per) ⇒ Boolean
Returns whether two permission instances have the same permissions.
907 908 909 910 |
# File 'lib/parse/model/acl.rb', line 907 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.
914 915 916 917 918 919 |
# File 'lib/parse/model/acl.rb', line 914 def as_json(*args) h = {} h[:read] = true if @read h[:write] = true if @write h.empty? ? nil : h.as_json end |
#attributes ⇒ Hash
922 923 924 925 926 927 |
# File 'lib/parse/model/acl.rb', line 922 def attributes h = {} h.merge!(read: :boolean) if @read h.merge!(write: :boolean) if @write h end |
#no_read!
This method returns an undefined value.
Sets the read value of the permission to false.
958 959 960 |
# File 'lib/parse/model/acl.rb', line 958 def no_read! @read = false end |
#no_write!
This method returns an undefined value.
Sets the write value of the permission to false.
965 966 967 |
# File 'lib/parse/model/acl.rb', line 965 def no_write! @write = false end |
#present? ⇒ Boolean
Returns whether there is at least one permission set to true.
935 936 937 |
# File 'lib/parse/model/acl.rb', line 935 def present? @read.present? || @write.present? end |
#read!(value = true)
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.
943 944 945 |
# File 'lib/parse/model/acl.rb', line 943 def read!(value = true) @read = value end |
#write!(value = true)
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.
951 952 953 |
# File 'lib/parse/model/acl.rb', line 951 def write!(value = true) @write = value end |