durable_streams-rails 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c92e0876c45c1275005ac561769b4653d63fb344518fa5158b10d79558fd4538
4
- data.tar.gz: '09935cbb04fb7e94081d10d5313488c7eccb7113fd7a327d892b33fc7d8c3d5a'
3
+ metadata.gz: 32b7136264c3c58bf1d1abafec7d87de85527739a1eebfd099042df478fbeb9a
4
+ data.tar.gz: 4cad011b7effea1efeb9f9be19845ed8b5652e0ccce7e2c8971723d9fc661043
5
5
  SHA512:
6
- metadata.gz: 91afdd838a384a32e001ce175fa3f5e0415953c1e60f28a9afaab9ebdd36aaa05a237fb0d735bf7be42cff3ac0c16746011bdd10e90c15a50234fa4b51a6a3a5
7
- data.tar.gz: 68c5ba947c3821328d349034d106c18ab2004d1b44619396e2265337442510c82f7c439682d397769638554114cb5f61eb5914249af017fc822b1b76994c9882
6
+ metadata.gz: fb55c88972044fd2888e7798df09283878acaccfbd077330b2025908482f6fc9f82c90cdeb8cbd40aecf5cbc421728867da8495034c0e24ae2e6cf37e9a91441
7
+ data.tar.gz: b4a27e45cf852435c8a374654c8ddfb0fcb664a6a92712aa308ab9649bff4e091a7a0c11419d41c08b0632f0138608d7755c34a1d74300f7e68274fbf51b5a64
@@ -1,7 +1,9 @@
1
1
  module DurableStreams
2
2
  class AuthController < ActionController::API
3
3
  def verify
4
- if stream_name
4
+ if request.headers["X-Forwarded-Uri"]
5
+ stream_name ? head(:ok) : head(:unauthorized)
6
+ elsif valid_server_api_key?
5
7
  head :ok
6
8
  else
7
9
  head :unauthorized
@@ -10,14 +12,13 @@ module DurableStreams
10
12
 
11
13
  private
12
14
  def stream_name
13
- if token = extract_token
14
- DurableStreams.verified_stream_name(token)
15
- end
15
+ DurableStreams.verify_signed_url(request.headers["X-Forwarded-Uri"])
16
16
  end
17
17
 
18
- def extract_token
19
- if uri = request.headers["X-Forwarded-Uri"]
20
- DurableStreams.extract_token_from_url(uri)
18
+ def valid_server_api_key?
19
+ if auth_header = request.headers["Authorization"]
20
+ auth_header.start_with?("Bearer ") &&
21
+ ActiveSupport::SecurityUtils.secure_compare(auth_header.delete_prefix("Bearer "), DurableStreams.server_api_key)
21
22
  end
22
23
  end
23
24
  end
@@ -42,6 +42,21 @@ module DurableStreams
42
42
  end
43
43
  end
44
44
 
45
+ initializer "durable_streams.server_api_key" do
46
+ config.after_initialize do
47
+ DurableStreams.server_api_key =
48
+ config.durable_streams.server_api_key ||
49
+ Rails.application.key_generator.generate_key("durable_streams/server_api_key").unpack1("H*")
50
+
51
+ if DurableStreams.base_url.present?
52
+ DurableStreams.configure do |c|
53
+ c.base_url = DurableStreams.base_url
54
+ c.default_headers = { "Authorization" => "Bearer #{DurableStreams.server_api_key}" }
55
+ end
56
+ end
57
+ end
58
+ end
59
+
45
60
  # No Action Cable dependency -- load test helpers directly.
46
61
  initializer "durable_streams.test_assertions" do
47
62
  ActiveSupport.on_load(:active_support_test_case) do
@@ -1,3 +1,3 @@
1
1
  module DurableStreams
2
- RAILS_VERSION = "0.2.3"
2
+ RAILS_VERSION = "0.2.4"
3
3
  end
@@ -14,7 +14,7 @@ module DurableStreams
14
14
  mattr_accessor :draw_routes, default: true
15
15
 
16
16
  class << self
17
- attr_writer :signed_stream_verifier_key
17
+ attr_writer :signed_stream_verifier_key, :server_api_key
18
18
 
19
19
  def signed_stream_verifier
20
20
  @signed_stream_verifier ||= ActiveSupport::MessageVerifier.new(signed_stream_verifier_key, digest: "SHA256", serializer: JSON)
@@ -24,6 +24,10 @@ module DurableStreams
24
24
  @signed_stream_verifier_key or raise ArgumentError, "DurableStreams requires a signed_stream_verifier_key"
25
25
  end
26
26
 
27
+ def server_api_key
28
+ @server_api_key or raise ArgumentError, "DurableStreams requires a server_api_key"
29
+ end
30
+
27
31
  def signed_stream_url(*streamables, expires_in: 24.hours)
28
32
  path = stream_name_from(streamables)
29
33
  token = signed_stream_verifier.generate(path, expires_in: expires_in)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: durable_streams-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - tokimonki