Module: Pgbus::Streams::SignedName
- Defined in:
- lib/pgbus/streams/signed_name.rb
Overview
Verifies tamper-proof stream identifiers carried in URLs (the ‘signed-stream-name` attribute set by `pgbus_stream_from`). Reuses `Turbo.signed_stream_verifier_key` when turbo-rails is loaded so that existing `broadcasts_to :room` calls Just Work; falls back to `Pgbus.configuration.streams_signed_name_secret` otherwise.
The signed payload is the logical stream name as a string (e.g. ‘“gid://app/Order/42:messages”`). Verification returns that string; tampered or unsigned input raises `InvalidSignedName`.
Defined Under Namespace
Classes: InvalidSignedName, MissingSecret
Class Method Summary collapse
Class Method Details
.sign(stream_name) ⇒ Object
31 32 33 |
# File 'lib/pgbus/streams/signed_name.rb', line 31 def self.sign(stream_name) verifier.generate(stream_name) end |
.verify!(token) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/pgbus/streams/signed_name.rb', line 23 def self.verify!(token) raise InvalidSignedName, "signed stream name is blank" if token.nil? || token.to_s.strip.empty? verifier.verified(token) || raise(InvalidSignedName, "signed stream name failed verification") rescue ActiveSupport::MessageVerifier::InvalidSignature => e raise InvalidSignedName, "signed stream name failed verification: #{e.}" end |