You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义SCORM交互展示模块:结果是否仅对登录用户可见?

问题解答:自定义SCORM数据区块是否仅对已登录用户可见?

结论

你的当前代码没有强制限制仅对已登录用户可见,未登录访客能否看到区块内容,取决于Moodle的页面访问权限和区块的后台配置,但这种状态存在严重的数据泄露风险。

具体分析

  1. Moodle区块默认行为:
    Moodle的block_base基类没有自带强制登录检查,区块的可见性主要由两点决定:

    • 区块所在页面的访客访问权限(比如首页是否允许访客访问)
    • 后台区块配置中是否勾选了对"访客"角色可见
  2. 数据安全隐患:
    你的代码直接从scorm_scoes_track表读取所有用户的SCORM追踪数据(包括cmi.core.lesson_status),如果未登录用户能看到这个区块,会直接获取到其他用户的学习隐私数据,违反数据安全规范。

代码改进建议

必须在get_content()方法中添加登录状态检查和权限控制,同时修复循环中内容被覆盖的问题:

class block_scormtest extends block_base {

    function init() {
        $this->title = get_string('pluginname', 'block_scormtest');
    }

    function get_content()  {
        global $DB, $USER, $PAGE;

        if ($this->content !== NULL) {
            return $this->content;
        }

        $this->content = new stdClass;
        $this->content->text = '';

        // 检查用户是否已登录且不是访客
        if (!isloggedin() || isguestuser()) {
            $this->content->text = get_string('requirelogin', 'block_scormtest');
            return $this->content;
        }

        // 可选:添加更严格的权限控制(比如仅课程管理员能查看)
        if (!has_capability('moodle/course:manageactivities', $PAGE->context)) {
            $this->content->text = get_string('nopermission', 'block_scormtest');
            return $this->content;
        }

        $tracks = $DB->get_records('scorm_scoes_track', ['element' => 'cmi.core.lesson_status']);
        $content = '';
        foreach ($tracks as $track) {
            // 使用 .= 拼接内容,避免覆盖之前的记录
            $content .= $track->attempt . '     ' . userdate($track->timemodified, get_string('strftimerecentfull')) . '  ' . $track->value . '<br>';
        }

        $this->content->text = $content;
        return $this->content;
    }
}

补充说明

  • 你需要在插件的lang/zh_cn/block_scormtest.php中添加对应的字符串定义,比如:
    $string['requirelogin'] = '请登录后查看SCORM数据';
    $string['nopermission'] = '你没有权限查看此内容';
    
  • 即使添加了登录检查,建议再配合Moodle后台的区块可见性设置,取消"访客"角色的访问权限,双重保障数据安全。

内容的提问来源于stack exchange,提问作者Parul S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:45:30