From e3c0dc256947b9443a1d5397c6761707edcc3003 Mon Sep 17 00:00:00 2001 From: EUForest Date: Tue, 6 Jan 2026 21:02:38 +0800 Subject: [PATCH] feat: Device Bind Limit --- .../public/assets/locales/zh-CN/system.json | 2 ++ .../system/user-security/register-form.tsx | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/apps/admin/public/assets/locales/zh-CN/system.json b/apps/admin/public/assets/locales/zh-CN/system.json index 0a9eaa0..adfda2d 100644 --- a/apps/admin/public/assets/locales/zh-CN/system.json +++ b/apps/admin/public/assets/locales/zh-CN/system.json @@ -49,6 +49,8 @@ "register": { "day": "天", "description": "配置用户注册相关设置", + "deviceLimit": "设备数量限制", + "deviceLimitDescription": "每个用户允许的最大设备数量", "enableTrial": "启用试用", "enableTrialDescription": "启用后,新用户注册时将获得试用订阅", "hour": "小时", diff --git a/apps/admin/src/sections/system/user-security/register-form.tsx b/apps/admin/src/sections/system/user-security/register-form.tsx index e70d389..035845c 100644 --- a/apps/admin/src/sections/system/user-security/register-form.tsx +++ b/apps/admin/src/sections/system/user-security/register-form.tsx @@ -43,6 +43,7 @@ const registerSchema = z.object({ enable_ip_register_limit: z.boolean().optional(), ip_register_limit: z.number().optional(), ip_register_limit_duration: z.number().optional(), + device_limit: z.number().optional(), }); type RegisterFormData = z.infer; @@ -74,6 +75,7 @@ export default function RegisterConfig() { enable_ip_register_limit: false, ip_register_limit: 1, ip_register_limit_duration: 1, + device_limit: 5, }, }); @@ -271,6 +273,37 @@ export default function RegisterConfig() { )} + ( + + + {t("register.deviceLimit", "Device Limit")} + + + field.onChange(Number(value))} + placeholder={t( + "register.inputPlaceholder", + "Please enter" + )} + type="number" + value={field.value} + /> + + + {t( + "register.deviceLimitDescription", + "Maximum number of devices allowed per user" + )} + + + + )} + /> +