mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-20 00:47:16 +00:00
feat(clients): add top-level Clients tab and CRUD API
Adds /panel/api/clients endpoints (list, get, add, update, del, attach, detach) backed by ClientService methods that orchestrate the per-inbound Add/Update/Del flows so a single client row is created once and attached to many inbounds in one operation. The frontend gains a dedicated Clients page (frontend/clients.html + src/pages/clients/) with an AntD table, multi-inbound attach modal, and full CRUD. Axios interceptor learns to honour Content-Type: application/json so the JSON endpoints work alongside the legacy form-encoded ones. The legacy per-inbound client modal stays untouched in this PR — both flows now write to the same source of truth. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -94,6 +94,7 @@
|
||||
"ultraDark": "Ultra Dark",
|
||||
"dashboard": "Overview",
|
||||
"inbounds": "Inbounds",
|
||||
"clients": "Clients",
|
||||
"nodes": "Nodes",
|
||||
"settings": "Panel Settings",
|
||||
"xray": "Xray Configs",
|
||||
@@ -397,6 +398,19 @@
|
||||
"renew": "Auto Renew",
|
||||
"renewDesc": "Auto-renewal after expiration. (0 = disable)(unit: day)"
|
||||
},
|
||||
"clients": {
|
||||
"title": "Clients",
|
||||
"addTitle": "Add Client",
|
||||
"editTitle": "Edit Client",
|
||||
"attachedInbounds": "Attached inbounds",
|
||||
"selectInbound": "Select one or more inbounds",
|
||||
"empty": "No clients yet — add one to get started.",
|
||||
"deleteConfirmTitle": "Delete client {email}?",
|
||||
"deleteConfirmContent": "This removes the client from every attached inbound and drops its traffic record. This cannot be undone.",
|
||||
"toasts": {
|
||||
"deleted": "Client deleted"
|
||||
}
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Nodes",
|
||||
"addNode": "Add Node",
|
||||
|
||||
Reference in New Issue
Block a user