Module: SolidObjects::ComponentToken
- Defined in:
- lib/solid_objects/component_token.rb,
sig/generated/lib/solid_objects/component_token.rbs
Constant Summary collapse
- PURPOSE =
"solid_objects.actor_component"- MAXIMUM_TOKEN_BYTES =
16_384- MAXIMUM_DEPENDENCIES =
50- MAXIMUM_LOCALS =
50- MAXIMUM_COMPONENT_KEY_BYTES =
512- REFRESH_METHODS =
%w[replace morph].freeze
- RESERVED_LOCALS =
%w[actor authorization_context component_key].freeze
- RUBY_KEYWORDS =
%w[ alias and begin break case class def defined do else elsif end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield ].freeze
Class Method Summary collapse
- .generate(reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace") ⇒ Object
- .verify(token) ⇒ Object
Instance Method Summary collapse
- #self?.apply_defaults! ⇒ void
- #self?.generate ⇒ String
- #self?.signing_secret ⇒ String
- #self?.validate_component_key! ⇒ void
- #self?.validate_component_name! ⇒ void
- #self?.validate_dependencies! ⇒ void
- #self?.validate_locals! ⇒ void
- #self?.validate_payload! ⇒ Hash[String, untyped]
- #self?.validate_refresh_method! ⇒ void
- #self?.validate_refresh_path! ⇒ void
- #self?.validate_revision! ⇒ void
- #self?.verifier ⇒ ActiveSupport::MessageVerifier
- #self?.verify ⇒ Hash[String, untyped]
Class Method Details
.generate(reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace") ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/solid_objects/component_token.rb', line 23 def generate( reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace" ) payload = { "actor_type" => reference.actor_type, "actor_id" => reference.actor_id, "component_name" => component_name, "component_key" => Serialization.dump(component_key), "dependencies" => dependencies, "locals" => Serialization.dump(locals), "refresh_method" => refresh_method.to_s, "instance_id" => instance_id, "revision" => revision, "refresh_path" => refresh_path } validate_payload!(payload) verifier.generate(payload, purpose: PURPOSE).tap do |token| raise InvalidComponentToken, "component token is too large" if token.bytesize > MAXIMUM_TOKEN_BYTES end end |
.verify(token) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/solid_objects/component_token.rb', line 53 def verify(token) unless token.is_a?(String) && token.bytesize <= MAXIMUM_TOKEN_BYTES raise InvalidComponentToken, "invalid actor component token" end payload = verifier.verified(token, purpose: PURPOSE) apply_defaults!(payload) validate_payload!(payload) payload rescue ActiveSupport::MessageVerifier::InvalidSignature raise InvalidComponentToken, "invalid actor component token" end |
Instance Method Details
#self?.apply_defaults! ⇒ void
This method returns an undefined value.
31 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 31
def self?.apply_defaults!: (Hash[String, untyped]?) -> void
|
#self?.generate ⇒ String
22 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 22
def self?.generate: (reference: Reference, component_name: String, dependencies: Array[String], instance_id: Integer, revision: Integer, refresh_path: String, ?component_key: untyped, ?locals: Hash[untyped, untyped], ?refresh_method: String | Symbol) -> String
|
#self?.signing_secret ⇒ String
58 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 58
def self?.signing_secret: () -> String
|
#self?.validate_component_key! ⇒ void
This method returns an undefined value.
37 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 37
def self?.validate_component_key!: (untyped) -> void
|
#self?.validate_component_name! ⇒ void
This method returns an undefined value.
34 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 34
def self?.validate_component_name!: (String) -> void
|
#self?.validate_dependencies! ⇒ void
This method returns an undefined value.
40 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 40
def self?.validate_dependencies!: (Array[untyped]) -> void
|
#self?.validate_locals! ⇒ void
This method returns an undefined value.
43 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 43
def self?.validate_locals!: (Hash[untyped, untyped]) -> void
|
#self?.validate_payload! ⇒ Hash[String, untyped]
28 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 28
def self?.validate_payload!: (Hash[String, untyped]) -> Hash[String, untyped]
|
#self?.validate_refresh_method! ⇒ void
This method returns an undefined value.
46 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 46
def self?.validate_refresh_method!: (String) -> void
|
#self?.validate_refresh_path! ⇒ void
This method returns an undefined value.
52 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 52
def self?.validate_refresh_path!: (String) -> void
|
#self?.validate_revision! ⇒ void
This method returns an undefined value.
49 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 49
def self?.validate_revision!: (Integer, Integer) -> void
|
#self?.verifier ⇒ ActiveSupport::MessageVerifier
55 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 55
def self?.verifier: () -> ActiveSupport::MessageVerifier
|
#self?.verify ⇒ Hash[String, untyped]
25 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 25
def self?.verify: (String) -> Hash[String, untyped]
|