Skip to content

Commit 41c7cb6

Browse files
committed
wip
1 parent 801ff01 commit 41c7cb6

4 files changed

Lines changed: 26 additions & 7 deletions

File tree

sentry-rails/lib/sentry/rails/active_job.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def serialize
3737
sentry_data["trace_propagation_headers"] = headers if headers && !headers.empty?
3838
end
3939

40-
if Sentry.configuration.send_default_pii
40+
if Sentry.configuration.data_collection.user_info
4141
user = Sentry.get_current_scope.user
4242
allowed = user.transform_keys(&:to_s).slice(*USER_FIELDS_ALLOWLIST)
4343
sentry_data["user"] = allowed unless allowed.empty?

sentry-rails/spec/active_job/shared_examples/tracing/user_propagation.rb

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
}
1212
end
1313

14-
context "when send_default_pii is true" do
14+
context "when user_info is true" do
1515
let(:configure_sentry) do
1616
proc do |config|
1717
config.traces_sample_rate = 1.0
1818
config.send_default_pii = true
19+
config.data_collection.user_info = true
1920
end
2021
end
2122

@@ -58,11 +59,12 @@
5859
end
5960
end
6061

61-
context "when send_default_pii is true and logs are enabled" do
62+
context "when user_info is true and logs are enabled" do
6263
let(:configure_sentry) do
6364
proc do |config|
6465
config.traces_sample_rate = 1.0
6566
config.send_default_pii = true
67+
config.data_collection.user_info = true
6668
config.enable_logs = true
6769
end
6870
end
@@ -93,11 +95,12 @@ def perform
9395
end
9496
end
9597

96-
context "when send_default_pii is false" do
98+
context "when user_info is false" do
9799
let(:configure_sentry) do
98100
proc do |config|
99101
config.traces_sample_rate = 1.0
100-
config.send_default_pii = false
102+
config.send_default_pii = true
103+
config.data_collection.user_info = false
101104
end
102105
end
103106

sentry-ruby/lib/sentry/event.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Event
2828

2929
MAX_MESSAGE_SIZE_IN_BYTES = 1024 * 8
3030

31-
SKIP_INSPECTION_ATTRIBUTES = [:@modules, :@stacktrace_builder, :@send_default_pii, :@trusted_proxies, :@rack_env_whitelist]
31+
SKIP_INSPECTION_ATTRIBUTES = [:@modules, :@stacktrace_builder, :@send_default_pii, :@data_collection, :@trusted_proxies, :@rack_env_whitelist]
3232

3333
include CustomInspection
3434

@@ -74,6 +74,7 @@ def initialize(configuration:, integration_meta: nil, message: nil)
7474

7575
# configuration options to help events process data
7676
@send_default_pii = configuration.send_default_pii
77+
@data_collection = configuration.data_collection
7778
@trusted_proxies = configuration.trusted_proxies
7879
@stacktrace_builder = configuration.stacktrace_builder
7980
@rack_env_whitelist = configuration.rack_env_whitelist
@@ -103,7 +104,7 @@ def rack_env=(env)
103104
unless request || env.empty?
104105
add_request_interface(env)
105106

106-
user[:ip_address] ||= calculate_real_ip_from_rack(env) if @send_default_pii
107+
user[:ip_address] ||= calculate_real_ip_from_rack(env) if @data_collection.user_info
107108

108109
if request_id = Utils::RequestId.read_from(env)
109110
tags[:request_id] = request_id

sentry-ruby/spec/sentry/event_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@
117117
expect(event.request.headers.keys).not_to include("X-Real-Ip")
118118
expect(event.request.headers.keys).not_to include("X-Forwarded-For")
119119
end
120+
121+
it "preserves explicitly set user data set on the scope" do
122+
Sentry.set_user(id: "user-1", username: "alice")
123+
scope.apply_to_event(event)
124+
125+
expect(event.user).to include(id: "user-1", username: "alice")
126+
end
120127
end
121128

122129
context "with config.send_default_pii = true" do
@@ -147,6 +154,14 @@
147154
expect(event.to_h[:user][:ip_address]).to eq("3.3.3.3")
148155
end
149156

157+
it "does not auto-populate user information when data collection user_info is disabled" do
158+
Sentry.configuration.data_collection.user_info = false
159+
160+
Sentry.get_current_scope.apply_to_event(event)
161+
162+
expect(event.to_h[:user][:ip_address]).to be_nil
163+
end
164+
150165
context "with config.trusted_proxies = [\"2.2.2.2\"]" do
151166
before do
152167
Sentry.configuration.trusted_proxies = ["2.2.2.2"]

0 commit comments

Comments
 (0)