feat: 管理员新增个性化配置支持任意 IP 输入

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dongzp 2026-09-01 15:07:51 +08:00
parent 9bec3208f8
commit 574757f903
2 changed files with 7 additions and 6 deletions

View File

@ -650,11 +650,13 @@
<el-form-item label="IP 地址"> <el-form-item label="IP 地址">
<el-input <el-input
v-model="ipRuleDialog.form.ip" v-model="ipRuleDialog.form.ip"
placeholder="自动识别当前 IP" :placeholder="isAdmin && ipRuleDialog.mode === 'create' ? '请输入 IP 地址' : '自动识别当前 IP'"
disabled :disabled="!(isAdmin && ipRuleDialog.mode === 'create')"
></el-input> ></el-input>
<div class="small-text" style="margin-top:4px;"> <div class="small-text" style="margin-top:4px;">
{{ ipRuleDialog.mode === 'create' ? '自动填充当前 IP,不可修改' : 'IP 地址不可修改' }} {{ isAdmin && ipRuleDialog.mode === 'create'
? '管理员可填写任意有效 IP'
: (ipRuleDialog.mode === 'create' ? '自动填充当前 IP,不可修改' : 'IP 地址不可修改') }}
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="备注"> <el-form-item label="备注">
@ -1048,7 +1050,7 @@
submitIpRuleDialog: async function () { submitIpRuleDialog: async function () {
var form = this.ipRuleDialog.form; var form = this.ipRuleDialog.form;
var ip = (form.ip || "").trim(); var ip = (form.ip || "").trim();
if (!this.isAdmin || this.ipRuleDialog.mode === "create") { if (!this.isAdmin) {
ip = (this.clientIp || "").trim(); ip = (this.clientIp || "").trim();
form.blocked = false; form.blocked = false;
} }

View File

@ -687,8 +687,7 @@ async function handleIpRules(
} }
const rule = parseIpRuleBody(body); const rule = parseIpRuleBody(body);
const isCreate = body.mode === "create"; if (!isAdminClient(clientReq)) {
if (!isAdminClient(clientReq) || isCreate) {
rule.ip = resolveAdminClientIp(clientReq); rule.ip = resolveAdminClientIp(clientReq);
} }
if (!canManageIpRule(clientReq, rule.ip)) { if (!canManageIpRule(clientReq, rule.ip)) {