Class: Sequel::Privacy::ViewerContext

Inherits:
Object
  • Object
show all
Extended by:
T::Helpers, T::Sig
Defined in:
lib/sequel/privacy/viewer_context.rb

Overview

Represents who is viewing/accessing data. All privacy checks require a ViewerContext.

Direct Known Subclasses

ActorVC, AllPowerfulVC, AnonymousVC, OmniscientVC

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_powerful(reason) ⇒ Object



26
27
28
29
# File 'lib/sequel/privacy/viewer_context.rb', line 26

def self.all_powerful(reason)
  Sequel::Privacy.logger&.info("Creating all-powerful viewer context: #{reason}")
  AllPowerfulVC.new(reason)
end

.anonymousObject



41
42
43
# File 'lib/sequel/privacy/viewer_context.rb', line 41

def self.anonymous
  AnonymousVC.new
end

.for_actor(actor) ⇒ Object



14
15
16
# File 'lib/sequel/privacy/viewer_context.rb', line 14

def self.for_actor(actor)
  ActorVC.new(actor)
end

.for_api_actor(actor) ⇒ Object



19
20
21
# File 'lib/sequel/privacy/viewer_context.rb', line 19

def self.for_api_actor(actor)
  APIVC.new(actor)
end

.omniscient(reason) ⇒ Object



34
35
36
37
# File 'lib/sequel/privacy/viewer_context.rb', line 34

def self.omniscient(reason)
  Sequel::Privacy.logger&.debug("Creating omniscient viewer context: #{reason}")
  OmniscientVC.new(reason)
end

Instance Method Details

#assert_usable!Object



52
53
54
55
56
57
# File 'lib/sequel/privacy/viewer_context.rb', line 52

def assert_usable!
  return unless invalidated?

  Kernel.raise InvalidatedViewerContext,
               "#{self.class.name.to_s.split('::').last} was invalidated and cannot be used again"
end

#invalidated?Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/sequel/privacy/viewer_context.rb', line 46

def invalidated?
  @invalidated = T.let(@invalidated, T.nilable(T::Boolean))
  @invalidated || false
end