Merge pull request 'refactor(permissions): remove hard-off compat stubs and harden login schema' (#51) from worktree-permissions-login-moderation into main
Reviewed-on: CYL/wordpress-theme-aksrt#51
This commit is contained in:
@@ -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 } },
|
||||
],
|
||||
|
||||
@@ -36,7 +36,6 @@ require_once AKSRT_DIR . '/inc/helpers/aksrt-vip.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-i18n-switch.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-posts-renderer.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-resource.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-compat.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-pay.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-credits.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/menu-decoration.php';
|
||||
|
||||
@@ -23,6 +23,7 @@ class AKSRT_Admin_Schema_Permissions {
|
||||
['key' => 'basic', 'title' => '基础开关', 'fields' => [
|
||||
['key' => 'enabled', 'label' => '启用人机验证', 'type' => 'switch', 'default' => false],
|
||||
['key' => 'active_provider', 'label' => '当前服务商', 'type' => 'radio', 'default' => '', 'dependsOn' => ['key' => 'enabled', 'value' => true], 'options' => [
|
||||
['label' => '关闭', 'value' => ''],
|
||||
['label' => '腾讯云 Captcha', 'value' => 'tencent'],
|
||||
['label' => '阿里云 CAPTCHA 2.0', 'value' => 'aliyun'],
|
||||
['label' => 'Cloudflare Turnstile', 'value' => 'cloudflare'],
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Deprecated compatibility toggles retained only as hard-off stubs.
|
||||
*
|
||||
* The rebuild now treats Zibll-style mainline pages as the only product target.
|
||||
* Historical message center / PM entry points / compat template pickers stay on
|
||||
* disk for legacy routing safety, but no longer participate in product-facing
|
||||
* navigation or configuration decisions.
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
if (!function_exists('aksrt_get_messages_url')) {
|
||||
/**
|
||||
* Legacy message center URL stub.
|
||||
*/
|
||||
function aksrt_get_messages_url(): string {
|
||||
return home_url('/messages/');
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_pm_frontend_enabled')) {
|
||||
/**
|
||||
* Private-message entry is disabled in the rebuilt mainline.
|
||||
*/
|
||||
function aksrt_pm_frontend_enabled(): bool {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_show_compat_page_templates')) {
|
||||
/**
|
||||
* Compat-only page templates are hidden from the rebuilt product surface.
|
||||
*/
|
||||
function aksrt_show_compat_page_templates(): bool {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -453,7 +453,7 @@ if (!function_exists('aksrt_get_user_center_render_context')) {
|
||||
'show_avatar_edit' => !empty($user_center_settings['avatar_upload']),
|
||||
'avatar_settings_url' => admin_url('profile.php'),
|
||||
'notification_unread_count' => function_exists('aksrt_get_user_unread_notification_count') ? aksrt_get_user_unread_notification_count($user_id) : 0,
|
||||
'messages_url' => function_exists('aksrt_get_messages_url') ? aksrt_get_messages_url() : aksrt_get_user_center_url('notif'),
|
||||
'messages_url' => aksrt_get_user_center_url('notif'),
|
||||
'per_page' => 10,
|
||||
'posts_page' => max(1, isset($_GET['posts_page']) ? (int) $_GET['posts_page'] : 1),
|
||||
'comments_page' => max(1, isset($_GET['comments_page']) ? (int) $_GET['comments_page'] : 1),
|
||||
|
||||
@@ -64,8 +64,8 @@ $classes = trim('article-avatar ' . $extra_class . ($show_actions ? ' article-av
|
||||
<span><?php esc_html_e('关注', 'aksrt'); ?></span>
|
||||
</button>
|
||||
<?php // 私信为“停用候选”兼容能力:默认不在前台暴露,仅在站点显式开启时显示。 ?>
|
||||
<?php if (function_exists('aksrt_pm_frontend_enabled') && aksrt_pm_frontend_enabled()) : ?>
|
||||
<a href="<?php echo esc_url(add_query_arg('msg_type', 'conversation', aksrt_get_messages_url())); ?>" class="author-action-btn author-action-btn--ghost">
|
||||
<?php if (is_user_logged_in()) : ?>
|
||||
<a href="<?php echo esc_url(add_query_arg('msg_type', 'conversation', aksrt_get_user_center_url('notif'))); ?>" class="author-action-btn author-action-btn--ghost">
|
||||
<i class="far fa-comment-dots" aria-hidden="true"></i>
|
||||
<span><?php esc_html_e('私信', 'aksrt'); ?></span>
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user