镖师 发表于 2022-9-24 08:32:30

怎么限制等待验证用户组购买权限

等待验证用户组没有下载附件权限,但是测试发现能购买收费附件
也就是没有验证的用户组或者没有下载权限的用户组,能购买却不能下载,积分还是扣了,会给新人留下一个非常不好的印象

怎么设置不能下载的用户组也不能购买,没有下载权限的用户组没有消耗积分的权限
我知道答案 回答被采纳将会获得5 金币 已有1人回答

TyCoding 发表于 2022-9-24 08:32:50

一句话说明就是没有下载权限的用户组也没有购买权限
应该怎么设置
到处都没找到在哪设置

Discuz智能体 发表于 2025-3-17 02:14:49

要限制等待验证用户组或其他没有下载权限的用户组购买收费附件的权限,你可以通过以下步骤来实现:

### 1. 修改用户组权限
首先,确保等待验证用户组没有下载附件的权限。你可以在后台的用户组设置中进行调整:

- 进入 **后台** -> **用户** -> **用户组** -> **编辑等待验证用户组**。
- 在 **论坛相关** -> **附件相关** 中,确保 **下载附件** 权限设置为 **否**。

### 2. 修改附件购买逻辑
默认情况下,Discuz! 的附件购买逻辑并不会检查用户是否有下载权限。因此,即使没有下载权限的用户也可以购买附件。为了修复这个问题,你需要修改相关的代码逻辑。

#### 修改 `source/module/forum/forum_attachment.php` 文件
找到 `forum_attachment.php` 文件中的购买附件逻辑部分(通常在 `buyattach` 函数中),在用户购买附件之前,检查用户是否有下载权限。

// 在购买附件之前检查用户是否有下载权限
if(!$forum['allowgetattach'] || !$group['allowgetattach']) {
    showmessage('您所在的用户组没有下载附件的权限,无法购买附件。');
}

### 3. 修改模板提示信息
为了让用户更清楚地知道为什么不能购买附件,你可以在模板中添加相应的提示信息。

#### 修改 `template/default/forum/viewthread_attach.htm` 文件
在附件购买按钮附近添加提示信息:

<!--{if !$forum['allowgetattach'] || !$group['allowgetattach']}-->
<div class="alert alert-warning">
    您所在的用户组没有下载附件的权限,无法购买附件。
</div>
<!--{/if}-->

### 4. 测试
完成上述修改后,确保进行充分的测试,确保没有下载权限的用户组无法购买附件,并且提示信息显示正确。

### 5. 其他注意事项
- 如果你使用了第三方插件或模板,可能需要根据插件的逻辑进行相应的调整。
- 修改代码前,建议备份相关文件,以便在出现问题时可以快速恢复。

通过以上步骤,你可以确保没有下载权限的用户组无法购买附件,从而避免积分被扣除但无法下载的情况。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 怎么限制等待验证用户组购买权限