3x-ui/web/service
MHSanaei 5eb80eca8e
fix(clients): avoid duplicate ClientRecord when email is changed on edit
SyncInbound (invoked from UpdateInboundClient during a client edit)
looks up the ClientRecord row by the email present in the inbound's
settings. After an email change the lookup misses the original row,
hits the gorm.ErrRecordNotFound branch, and inserts a fresh
ClientRecord with the new email. The original row stays in place with
its inbound link cleared, so the clients list shows both — the
original as an orphan and the new one as if it had just been created.

Rename the existing ClientRecord row to the new email up front, before
the inbound loop runs. SyncInbound then finds and updates the same
row instead of creating a duplicate. A pre-check rejects renames that
would collide with another client's email so the unique index keeps
its meaning.
2026-05-27 11:23:33 +02:00
..
api_token.go feat(api-tokens): manage multiple named tokens; add tab/section anchor URLs 2026-05-13 16:34:31 +02:00
client.go fix(clients): avoid duplicate ClientRecord when email is changed on edit 2026-05-27 11:23:33 +02:00
client_sync_multiprotocol_test.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
client_test.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
config.json fix(xray): allow private-IP destinations via freedom finalRules 2026-05-19 15:42:16 +02:00
custom_geo.go fix(security): SSRF-guard node and remote HTTP clients 2026-05-13 13:33:53 +02:00
custom_geo_test.go v3 2026-05-10 02:13:42 +02:00
fallback.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
inbound.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
metric_history.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
node.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
node_test.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
nord.go feat(xray/nord): searchable server list + colored load tag, surface API errors 2026-05-11 10:06:01 +02:00
outbound.go refactor(outbound): probe via xray burstObservatory instead of SOCKS round-trip 2026-05-27 04:53:13 +02:00
panel.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
panel_other.go feat: add panel update functionality via web GUI (#4117) 2026-04-28 18:46:55 +02:00
panel_test.go feat: add panel update functionality via web GUI (#4117) 2026-04-28 18:46:55 +02:00
panel_unix.go feat: add panel update functionality via web GUI (#4117) 2026-04-28 18:46:55 +02:00
port_conflict.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
port_conflict_test.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
server.go Frontend rewrite: React + TypeScript with AntD v6 (#4498) 2026-05-23 15:21:45 +02:00
server_vlessenc_test.go Feat: clarify VLESS encryption auth selection (#4271) 2026-05-12 11:39:28 +02:00
setting.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
setting_security_test.go feat(api-tokens): manage multiple named tokens; add tab/section anchor URLs 2026-05-13 16:34:31 +02:00
tgbot.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
tgbot_test.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
traffic_writer.go Fix: traffic writer restart freeze (#4265) 2026-05-12 11:36:05 +02:00
traffic_writer_test.go Fix: traffic writer restart freeze (#4265) 2026-05-12 11:36:05 +02:00
url_safety.go Security hardening: sessions, SSRF, CSP nonce, CSRF logout, trusted proxies (#4275) 2026-05-13 12:52:52 +02:00
user.go fix(auth): invalidate sessions when 2FA is enabled, fix dev 401 loop 2026-05-13 14:08:16 +02:00
warp.go fix(warp): set license against Cloudflare API and surface errors inline 2026-05-13 21:13:16 +02:00
websocket.go v3 2026-05-10 02:13:42 +02:00
xray.go feat: complete Zod migration of frontend + bulk client batching (#4599) 2026-05-27 04:26:50 +02:00
xray_metrics.go Security hardening: sessions, SSRF, CSP nonce, CSRF logout, trusted proxies (#4275) 2026-05-13 12:52:52 +02:00
xray_setting.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00
xray_setting_test.go Feat/multi inbound clients (#4469) 2026-05-19 12:20:24 +02:00