From 8241570ca2bf6672bae5649fe9dff97d7e65a2b5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 13 Aug 2026 00:24:54 +0800 Subject: [PATCH] feat(users): govern profiles and access Normalize fixed profile fields, profile actions, and the five-column capability matrix for comments, uploads, and downloads. --- .../src/constants/sections/permissions.js | 58 ++----- assets/admin/src/pages/ResourceDownload.vue | 22 +-- assets/admin/src/pages/SiteSettings.vue | 9 - .../permissions/AttachmentPermissions.vue | 77 +-------- .../pages/permissions/CommentPermissions.vue | 154 ----------------- .../pages/permissions/DownloadPermissions.vue | 161 ------------------ .../permissions/PermissionsCapabilities.vue | 3 +- .../admin/src/pages/users/UsersFeatures.vue | 132 +++----------- .../src/router/component-loaders/core.js | 2 - .../src/schema/sections/payment/order.js | 2 - .../admin/src/schema/sections/payment/paid.js | 2 - .../src/schema/sections/permissions/index.js | 57 +------ .../src/schema/sections/post-list/comment.js | 7 +- .../src/schema/sections/users/features.js | 4 - assets/css/routes/profile/layout.css | 55 ++++-- assets/css/routes/user-home.css | 25 ++- assets/js/author.js | 42 +++++ assets/js/front-submit.js | 119 +++++++++---- assets/js/routes/user-center.js | 34 ---- inc/helpers/aksrt-avatar.php | 3 +- inc/helpers/aksrt-comments.php | 2 - inc/helpers/aksrt-pay.php | 7 +- inc/helpers/aksrt-resource.php | 6 +- inc/helpers/aksrt-user-center.php | 113 +++++++----- inc/helpers/aksrt-user-dashboard.php | 16 +- inc/helpers/aksrt-user-home.php | 9 +- inc/helpers/comments/item.php | 3 +- .../user-center-renderers/form-contacts.php | 34 ---- .../user-center-renderers/profile-form.php | 31 +++- .../user-center-renderers/profile-header.php | 22 +-- src/Admin/ExtensionController.php | 4 +- src/Admin/GlobalController.php | 2 - src/Admin/PermissionsController.php | 23 ++- src/Admin/Schema/SchemaPayment.php | 2 - src/Admin/Schema/SchemaPermissions.php | 102 ++--------- src/Admin/Schema/SchemaPostList.php | 3 - src/Admin/Schema/SchemaUsers.php | 2 - src/Admin/UserController.php | 44 ++++- .../UserControllerProfileMediaOperations.php | 19 ++- src/Admin/UserControllerReportOperations.php | 15 +- src/Auth/Moderation.php | 9 + src/Content/Download.php | 21 ++- src/Content/Visibility.php | 42 ++--- src/Core/CommentActions.php | 9 + src/Core/FrontSubmit.php | 112 ++++++++++++ src/Core/FrontSubmitFeatured.php | 46 +++-- src/Core/FrontSubmitPay.php | 21 ++- src/Core/FrontSubmitSave.php | 8 +- src/Settings/AuthReader.php | 7 +- src/Settings/Capabilities.php | 34 ++-- src/Settings/CreditsPaymentGroups.php | 4 +- src/Settings/HomeCms.php | 2 - src/Settings/PaymentRuntime.php | 4 - src/Settings/PostDisplay.php | 3 +- src/Settings/Settings.php | 4 +- src/Settings/UserRuntime.php | 5 +- src/User/Badges.php | 3 - src/User/Center.php | 13 +- templates/pages/page-download-file.php | 8 - templates/pages/page-download.php | 3 +- templates/pages/page-submit.php | 16 +- templates/parts/resource-download-box.php | 13 +- templates/parts/submit/context.php | 4 +- templates/parts/submit/editor-main.php | 12 +- templates/parts/submit/sidebar-pay.php | 21 ++- templates/parts/user/author-hero.php | 55 +++--- uninstall.php | 1 - 67 files changed, 780 insertions(+), 1127 deletions(-) delete mode 100644 assets/admin/src/pages/permissions/CommentPermissions.vue delete mode 100644 assets/admin/src/pages/permissions/DownloadPermissions.vue delete mode 100644 inc/helpers/user-center-renderers/form-contacts.php diff --git a/assets/admin/src/constants/sections/permissions.js b/assets/admin/src/constants/sections/permissions.js index dccb2621..1d198c39 100644 --- a/assets/admin/src/constants/sections/permissions.js +++ b/assets/admin/src/constants/sections/permissions.js @@ -7,37 +7,15 @@ export const permissionsSection = { route: '/permissions', children: [ customPage({ - key: 'permissions-comment', - name: 'PermissionsComment', - label: '评论权限', - route: '/permissions/comment', - component: 'CommentPermissions', - title: '评论权限', - desc: '游客评论、频率限制、敏感词和审核策略。', + key: 'permissions-capabilities', + name: 'PermissionsCapabilities', + label: '基本权限', + route: '/permissions/capabilities', + component: 'PermissionsCapabilities', + title: '基本权限 / 能力矩阵', + desc: '统一管理用户、投稿、评论、上传和下载的准入能力。', canonicalDomain: 'permissions', - section: 'comment', - }), - customPage({ - key: 'permissions-attachment', - name: 'PermissionsAttachment', - label: '附件权限', - route: '/permissions/attachment', - component: 'AttachmentPermissions', - title: '附件权限', - desc: '上传角色、文件类型、大小限制和审核状态。', - canonicalDomain: 'permissions', - section: 'attachment', - }), - customPage({ - key: 'permissions-download', - name: 'PermissionsDownload', - label: '下载权限', - route: '/permissions/download', - component: 'DownloadPermissions', - title: '下载权限', - desc: '登录要求、积分要求、角色要求和 VIP 特权。', - canonicalDomain: 'permissions', - section: 'download', + section: 'capabilities', }), schemaPage({ key: 'permissions-login', @@ -52,23 +30,23 @@ export const permissionsSection = { schemaPage({ key: 'permissions-moderation', name: 'PermissionsModeration', - label: '审核和风控', + label: '内容审核', route: '/permissions/moderation', - title: '审核和风控', + title: '内容审核', desc: '评论审核、反垃圾、限流与风控配置。', canonicalDomain: 'permissions', section: 'moderation', }), customPage({ - key: 'permissions-capabilities', - name: 'PermissionsCapabilities', - label: '基本权限', - route: '/permissions/capabilities', - component: 'PermissionsCapabilities', - title: '基本权限 / 能力矩阵', - desc: '统一管理用户治理、投稿和评论的角色能力矩阵。', + key: 'permissions-attachment', + name: 'PermissionsAttachment', + label: '附件配置', + route: '/permissions/attachment', + component: 'AttachmentPermissions', + title: '附件配置', + desc: '管理文件大小、类型、安全限制和审核策略。', canonicalDomain: 'permissions', - section: 'capabilities', + section: 'attachment', }), ], } diff --git a/assets/admin/src/pages/ResourceDownload.vue b/assets/admin/src/pages/ResourceDownload.vue index 427132d5..fc26b6be 100644 --- a/assets/admin/src/pages/ResourceDownload.vue +++ b/assets/admin/src/pages/ResourceDownload.vue @@ -6,7 +6,7 @@ > @@ -18,15 +18,9 @@

当前联动摘要

- - 登录门槛:{{ form.download_login ? '已启用' : '已关闭' }} - 积分购买模式:{{ form.download_credit ? '已启用' : '已关闭' }} - - 下载验证码:{{ form.download_captcha ? '已启用' : '已关闭' }} - 默认积分价:{{ form.download_default_cost }} {{ currencyName }} @@ -44,10 +38,6 @@

下载门槛

- - - - - - - - - - - - - - @@ -123,7 +117,6 @@ const saving = ref(false) // 后端 /settings/basic 返回基础字段;auth 相关字段由 /settings/auth 独立维护。 const basic = reactive({ comment_enabled: true, - comment_requires_registration: false, icp_number: '', police_number: '', lazyload_enabled: true, @@ -139,7 +132,6 @@ async function loadAll() { if (basicRes?.code === 'success' && basicRes.data) { const d = basicRes.data basic.comment_enabled = d.comment_enabled !== false - basic.comment_requires_registration = !!d.comment_requires_registration basic.icp_number = d.icp_number || '' basic.police_number = d.police_number || '' basic.lazyload_enabled = d.lazyload_enabled !== false @@ -159,7 +151,6 @@ async function handleSave() { try { const basicPayload = { comment_enabled: basic.comment_enabled, - comment_requires_registration: basic.comment_requires_registration, icp_number: basic.icp_number, police_number: basic.police_number, lazyload_enabled: basic.lazyload_enabled, diff --git a/assets/admin/src/pages/permissions/AttachmentPermissions.vue b/assets/admin/src/pages/permissions/AttachmentPermissions.vue index 2867dc52..c0703126 100644 --- a/assets/admin/src/pages/permissions/AttachmentPermissions.vue +++ b/assets/admin/src/pages/permissions/AttachmentPermissions.vue @@ -2,11 +2,10 @@
@@ -34,31 +33,10 @@
-

头像与封面

+

用户资料卡背景图

- - - - - - - - - - - - - - - - + @@ -70,24 +48,10 @@

内容上传

- - - - - - - - - - @@ -100,13 +64,6 @@

资源附件

- - - - - @@ -158,27 +115,19 @@ const saving = ref(false) const moderationSnapshot = ref({}) const form = reactive({ - allow_avatar_upload: true, - allow_cover_upload: true, - allow_background_upload: false, avatar_max_size: 2, - allow_submit_images: true, submit_image_max_size: 5, - allow_comment_images: false, comment_image_max_size: 2, - allow_resource_upload: true, resource_max_size: 50, ai_moderate_background: true, ai_moderate_submit: false, }) const summaryItems = computed(() => [ - { key: 'avatar', icon: 'fas fa-user-circle', label: '头像上传', enabled: form.allow_avatar_upload }, - { key: 'cover', icon: 'fas fa-image', label: '封面上传', enabled: form.allow_cover_upload }, - { key: 'background', icon: 'fas fa-photo-video', label: '背景图上传', enabled: form.allow_background_upload }, - { key: 'submit', icon: 'fas fa-edit', label: '投稿图片', enabled: form.allow_submit_images }, - { key: 'comment', icon: 'fas fa-comment-dots', label: '评论图片', enabled: form.allow_comment_images }, - { key: 'resource', icon: 'fas fa-file-archive', label: '资源附件', enabled: form.allow_resource_upload }, + { key: 'profile', icon: 'fas fa-id-card', label: '资料卡图片', enabled: true }, + { key: 'submit', icon: 'fas fa-edit', label: '投稿图片', enabled: true }, + { key: 'comment', icon: 'fas fa-comment-dots', label: '评论图片', enabled: true }, + { key: 'resource', icon: 'fas fa-file-archive', label: '资源附件', enabled: true }, ]) function go(path) { @@ -199,15 +148,9 @@ async function load() { const moderation = moderationRes?.data ?? moderationRes ?? {} // Map permission fields - form.allow_avatar_upload = permission.allow_avatar_upload !== false - form.allow_cover_upload = permission.allow_cover_upload !== false - form.allow_background_upload = !!permission.allow_background_upload form.avatar_max_size = Number(permission.avatar_max_size || 2) - form.allow_submit_images = permission.allow_submit_images !== false form.submit_image_max_size = Number(permission.submit_image_max_size || 5) - form.allow_comment_images = !!permission.allow_comment_images form.comment_image_max_size = Number(permission.comment_image_max_size || 2) - form.allow_resource_upload = permission.allow_resource_upload !== false form.resource_max_size = Number(permission.resource_max_size || 50) form.ai_moderate_background = moderation.ai_moderate_background !== false @@ -226,15 +169,9 @@ async function handleSave() { try { await Promise.all([ api.savePermissionsAttachmentSettings({ - allow_avatar_upload: form.allow_avatar_upload, - allow_cover_upload: form.allow_cover_upload, - allow_background_upload: form.allow_background_upload, avatar_max_size: form.avatar_max_size, - allow_submit_images: form.allow_submit_images, submit_image_max_size: form.submit_image_max_size, - allow_comment_images: form.allow_comment_images, comment_image_max_size: form.comment_image_max_size, - allow_resource_upload: form.allow_resource_upload, resource_max_size: form.resource_max_size, }), api.savePermissionsModerationSettings({ diff --git a/assets/admin/src/pages/permissions/CommentPermissions.vue b/assets/admin/src/pages/permissions/CommentPermissions.vue deleted file mode 100644 index 45a9d030..00000000 --- a/assets/admin/src/pages/permissions/CommentPermissions.vue +++ /dev/null @@ -1,154 +0,0 @@ - - - diff --git a/assets/admin/src/pages/permissions/DownloadPermissions.vue b/assets/admin/src/pages/permissions/DownloadPermissions.vue deleted file mode 100644 index 173b1d00..00000000 --- a/assets/admin/src/pages/permissions/DownloadPermissions.vue +++ /dev/null @@ -1,161 +0,0 @@ - - - diff --git a/assets/admin/src/pages/permissions/PermissionsCapabilities.vue b/assets/admin/src/pages/permissions/PermissionsCapabilities.vue index 015d4a1e..56ac1966 100644 --- a/assets/admin/src/pages/permissions/PermissionsCapabilities.vue +++ b/assets/admin/src/pages/permissions/PermissionsCapabilities.vue @@ -12,8 +12,7 @@ - 转账/提现(balance_transfer、points_transfer、balance_withdraw)默认 exclude all,与 Zibll 一致:未在矩阵中为角色/等级/VIP/认证打开前,前台入口会隐藏或拒绝。 - medal_manually_set 控制谁可授予徽章;管理员 manage_options 始终可通过。 + 每项能力都通过“所有人、已登录、等级、VIP、已认证”五列治理;管理员(manage_options)始终可通过。 diff --git a/assets/admin/src/pages/users/UsersFeatures.vue b/assets/admin/src/pages/users/UsersFeatures.vue index 1b256bc7..569e67c6 100644 --- a/assets/admin/src/pages/users/UsersFeatures.vue +++ b/assets/admin/src/pages/users/UsersFeatures.vue @@ -1,49 +1,30 @@