Class: PapersPlease::Permission

Inherits:
Object
  • Object
show all
Defined in:
lib/papers_please/permission.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, subject, query: nil, predicate: nil, granted_by: nil, granting_class: nil) ⇒ Permission

Returns a new instance of Permission.



8
9
10
11
12
13
14
15
# File 'lib/papers_please/permission.rb', line 8

def initialize(key, subject, query: nil, predicate: nil, granted_by: nil, granting_class: nil)
  self.key = key
  self.subject = subject
  self.query = query
  self.predicate = predicate
  self.granted_by = granted_by
  self.granting_class = granting_class
end

Instance Attribute Details

#granted_byObject

Returns the value of attribute granted_by.



6
7
8
# File 'lib/papers_please/permission.rb', line 6

def granted_by
  @granted_by
end

#granting_classObject

Returns the value of attribute granting_class.



6
7
8
# File 'lib/papers_please/permission.rb', line 6

def granting_class
  @granting_class
end

#keyObject

Returns the value of attribute key.



5
6
7
# File 'lib/papers_please/permission.rb', line 5

def key
  @key
end

#predicateObject

Returns the value of attribute predicate.



6
7
8
# File 'lib/papers_please/permission.rb', line 6

def predicate
  @predicate
end

#queryObject

Returns the value of attribute query.



6
7
8
# File 'lib/papers_please/permission.rb', line 6

def query
  @query
end

#subjectObject

Returns the value of attribute subject.



5
6
7
# File 'lib/papers_please/permission.rb', line 5

def subject
  @subject
end

Instance Method Details

#fetch(*args) ⇒ Object



34
35
36
37
38
# File 'lib/papers_please/permission.rb', line 34

def fetch(*args)
  return query.call(*args) if query.is_a? Proc

  nil
end

#granted?(*args) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
# File 'lib/papers_please/permission.rb', line 25

def granted?(*args)
  return predicate.call(*args) if predicate.is_a? Proc

  # :nocov:
  # as far as we can tell this line is unreachable, but just in case...
  false
  # :nocov:
end

#granted_by_other?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/papers_please/permission.rb', line 17

def granted_by_other?
  @granting_class.is_a?(Class) && @granted_by.is_a?(Proc)
end

#matches?(key, subject) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/papers_please/permission.rb', line 21

def matches?(key, subject)
  key_matches?(key) && subject_matches?(subject)
end