refactor(permissions): remove hard-off compat stubs and harden login schema

Delete aksrt-compat.php and rewire messages/PM entry points to the user
center notification route. Normalize permissions login dependsOn objects
and allow an explicit empty captcha provider option so login/moderation
schema pages remain loadable without legacy compatibility shims.
This commit is contained in:
kate522 committed 2026-07-11 15:29:20 +08:00
1 parent f86513dbff
commit 06e551e6d8
6 files changed
+14 -53

No files matched your search

@@ -35,12 +35,13 @@ export const permissionsSchemas = {
type: 'radio',
buttonStyle: false,
options: [
{ label: '关闭', value: '' },
{ label: '腾讯云 Captcha', value: 'tencent' },
{ label: '阿里云 CAPTCHA 2.0', value: 'aliyun' },
{ label: 'Cloudflare Turnstile', value: 'cloudflare' },
{ label: '极验 GeeTest', value: 'geetest' },
],
dependsOn: 'enabled',
dependsOn: { key: 'enabled', value: true },
},
{
key: 'mode',
@@ -50,14 +51,14 @@ export const permissionsSchemas = {
options: [
{ label: '始终显示', value: 'always' },
],
dependsOn: 'enabled',
dependsOn: { key: 'enabled', value: true },
},
{
key: 'disabled_scenarios',
label: '停用场景',
type: 'checkbox',
help: '勾选后表示该场景不启用人机验证;未勾选的场景会启用。',
dependsOn: 'enabled',
dependsOn: { key: 'enabled', value: true },
options: [
{ label: '发表评论', value: 'comment' },
{ label: '用户登录', value: 'login' },
@@ -85,7 +86,7 @@ export const permissionsSchemas = {
type: 'notice',
alertType: 'info',
alertContent: '下方会渲染当前验证码服务商的专属配置面板。保存仍通过统一 schema contract 进行。',
dependsOn: 'enabled',
dependsOn: { key: 'enabled', value: true },
},
{ key: 'tencent', label: '腾讯云配置', type: 'custom', dependsOn: { key: 'active_provider', value: 'tencent' } },
{ key: 'aliyun', label: '阿里云配置', type: 'custom', dependsOn: { key: 'active_provider', value: 'aliyun' } },
@@ -151,7 +152,7 @@ export const permissionsSchemas = {
title: 'Akismet',
icon: 'fas fa-filter',
fields: [
{ key: 'akismet_enabled', label: '启用 Akismet', type: 'switch', dependsOn: 'enabled' },
{ key: 'akismet_enabled', label: '启用 Akismet', type: 'switch', dependsOn: { key: 'enabled', value: true } },
{ key: 'akismet_site_url', label: 'Site URL', type: 'input', placeholder: 'https://your-site.com', dependsOn: { key: 'akismet_enabled', value: true } },
{ key: 'akismet_blog_lang', label: '博客语言', type: 'input', placeholder: 'zh-CN', dependsOn: { key: 'akismet_enabled', value: true } },
{ key: 'akismet_api_key', label: 'API Key', type: 'input', inputType: 'password', placeholder: 'Akismet API Key', dependsOn: { key: 'akismet_enabled', value: true } },
@@ -162,7 +163,7 @@ export const permissionsSchemas = {
title: 'AI 审核',
icon: 'fas fa-robot',
fields: [
{ key: 'ai_enabled', label: '启用 AI 审核', type: 'switch', dependsOn: 'enabled' },
{ key: 'ai_enabled', label: '启用 AI 审核', type: 'switch', dependsOn: { key: 'enabled', value: true } },
{ key: 'ai_api_hint', label: '审核 API 配置', type: 'notice', alertType: 'info', alertContent: 'API 接入(百度/阿里云等)在「扩展 → API内容审核」中统一配置,此处仅控制审核范围和策略。', dependsOn: { key: 'ai_enabled', value: true } },
{ key: 'ai_moderate_comments', label: '用户评论', type: 'switch', dependsOn: { key: 'ai_enabled', value: true } },
{ key: 'ai_moderate_background', label: '用户资料背景', type: 'switch', dependsOn: { key: 'ai_enabled', value: true } },
@@ -177,7 +178,7 @@ export const permissionsSchemas = {
title: '关键词拦截',
icon: 'fas fa-ban',
fields: [
{ key: 'blocked_keywords', label: '屏蔽关键词列表', type: 'textarea', rows: 4, placeholder: '每行一个关键词,也支持 /regex/i 格式。命中后会进入待审核并记录原因。', dependsOn: 'enabled' },
{ key: 'blocked_keywords', label: '屏蔽关键词列表', type: 'textarea', rows: 4, placeholder: '每行一个关键词,也支持 /regex/i 格式。命中后会进入待审核并记录原因。', dependsOn: { key: 'enabled', value: true } },
],
},
{
@@ -185,7 +186,7 @@ export const permissionsSchemas = {
title: '频率限制',
icon: 'fas fa-stopwatch',
fields: [
{ key: 'rate_limit_enabled', label: '启用频率限制', type: 'switch', dependsOn: 'enabled' },
{ key: 'rate_limit_enabled', label: '启用频率限制', type: 'switch', dependsOn: { key: 'enabled', value: true } },
{ key: 'rate_limit_min_interval', label: '最小间隔(秒)', type: 'number', min: 1, max: 300, dependsOn: { key: 'rate_limit_enabled', value: true } },
{ key: 'rate_limit_max_per_hour', label: '每小时上限', type: 'number', min: 1, max: 200, dependsOn: { key: 'rate_limit_enabled', value: true } },
],
@@ -195,7 +196,7 @@ export const permissionsSchemas = {
title: 'GeoIP 拦截',
icon: 'fas fa-globe-asia',
fields: [
{ key: 'geoip_enabled', label: '启用 GeoIP 拦截', type: 'switch', dependsOn: 'enabled' },
{ key: 'geoip_enabled', label: '启用 GeoIP 拦截', type: 'switch', dependsOn: { key: 'enabled', value: true } },
{ key: 'geoip_hint', label: 'IP 数据源', type: 'notice', alertType: 'info', alertContent: '复用「扩展 → IP归属地」中配置的数据源和 API Key。', dependsOn: { key: 'geoip_enabled', value: true } },
{ key: 'geoip_block_countries', label: '屏蔽国家/地区', type: 'custom', dependsOn: { key: 'geoip_enabled', value: true } },
],