feat(admin): 增加注册限流配置项

This commit is contained in:
Zhou Weidong committed 2026-10-17 23:28:40 +08:00
1 parent 3ec9ea6717
commit 54db082ffb
1 file changed
+17 -1
+17 -1
View File
@@ -12,12 +12,19 @@ const loading = ref(false)
const saving = ref(false) const saving = ref(false)
const workspaceName = ref('') const workspaceName = ref('')
const defaultStatus = ref('draft') const defaultStatus = ref('draft')
const registerMaxPerIp = ref(5)
const registerMaxPerDevice = ref(3)
const statusOptions = [ const statusOptions = [
{ code: 'draft', text: '草稿' }, { code: 'draft', text: '草稿' },
{ code: 'reviewing', text: '待审核' } { code: 'reviewing', text: '待审核' }
] ]
const parseRegisterLimit = (value, fallback) => {
const parsed = Number.parseInt(value ?? '', 10)
return Number.isFinite(parsed) ? parsed : fallback
}
async function load() { async function load() {
loading.value = true loading.value = true
try { try {
@@ -25,6 +32,8 @@ async function load() {
const map = Object.fromEntries((res.data || []).map((item) => [item.key, item.value])) const map = Object.fromEntries((res.data || []).map((item) => [item.key, item.value]))
workspaceName.value = map['workspace.name'] || '' workspaceName.value = map['workspace.name'] || ''
defaultStatus.value = map['content.default-status'] || 'draft' defaultStatus.value = map['content.default-status'] || 'draft'
registerMaxPerIp.value = parseRegisterLimit(map['app.register.max-per-ip-per-day'], 5)
registerMaxPerDevice.value = parseRegisterLimit(map['app.register.max-per-device-per-day'], 3)
} finally { } finally {
loading.value = false loading.value = false
} }
@@ -35,7 +44,9 @@ async function save() {
try { try {
await updateConfigsApi({ await updateConfigsApi({
'workspace.name': workspaceName.value, 'workspace.name': workspaceName.value,
'content.default-status': defaultStatus.value 'content.default-status': defaultStatus.value,
'app.register.max-per-ip-per-day': String(registerMaxPerIp.value),
'app.register.max-per-device-per-day': String(registerMaxPerDevice.value)
}) })
ElMessage.success('设置已保存') ElMessage.success('设置已保存')
} finally { } finally {
@@ -62,6 +73,11 @@ onMounted(load)
:key="item.code" :key="item.code"
:label="item.text" :label="item.text"
:value="item.code" /></el-select></el-form-item :value="item.code" /></el-select></el-form-item
><el-divider content-position="left">注册频控</el-divider
><el-form-item label="单 IP 24 小时注册上限(0 或负数表示不限制)"
><el-input-number v-model="registerMaxPerIp" :step="1" :precision="0" /></el-form-item
><el-form-item label="单设备 24 小时注册上限(0 或负数表示不限制)"
><el-input-number v-model="registerMaxPerDevice" :step="1" :precision="0" /></el-form-item
><el-button type="primary" :loading="saving" :disabled="!can('system:role')" @click="save" ><el-button type="primary" :loading="saving" :disabled="!can('system:role')" @click="save"
>保存设置</el-button >保存设置</el-button
></el-form ></el-form