如何创建一个角色并只允许某些具有该角色的用户访问 moodle 中的块?

How to create a role and give access to only certain users having that role to the block in moodle?

我有一个块,现在我想让一些特定的用户访问那个块。这些特定用户将拥有为他们创建的角色。我的问题是,如何创建一个角色,将用户分配给它,并且该角色将使用户能够看到我创建的某个块。

谢谢

以下是您在 moodle 中的操作方法:

如何让一个区块只对某些用户可见?

1) 从“站点管理”>“用户”>“权限”>“定义角色”创建您的自定义角色

2) 您可以 select 一个原型,这意味着 select 使用它们将允许您继承该原型的功能。

3) 也 select 上下文作为一个块。这样您就可以从块设置(即本地设置)级别分配此角色。

4) 现在回到主页,打开编辑,这样您就可以在块的右上角看到本地块设置齿轮,单击它。

5) 单击向此块分配角色。

6) 您现在位于 'assign roles' 页面,查看左栏,在“管理”下您会看到“阻止:”,以及 在其下有如下设置:1) 分配角色,2) 权限,3) 检查权限。

7) 单击“权限”,您将在“阻止”下看到“查看”阻止。下方有一个加号,点击它。

8) 现在您可以编辑谁可以从这里查看此区块。只保留您创建的角色并删除其他角色。

9) 现在转到 'Assign roles'。

10) 您看到 table 包含角色、描述和用户角色列。单击 table.

中的角色名称

11) 您将到达一个页面,您可以在其中将用户批量分配给该角色选项。将用户分配给该角色后,您就完成了该过程。

我会为 blocks/yourblockname/db/access.php

中的块创建一个功能
'block/yourblockname:view' => array(
    'captype' => 'read',
    'contextlevel' => CONTEXT_BLOCK,
    'archetypes' => array(
        'manager' => CAP_ALLOW
    )
)

您还需要一个语言字符串 /blocks/yourblockname/lang/en/block_yourblockname.php

$string['yourblockname:view'] = 'View this block';

然后在 blocks/yourblockname/block_yourblockname.php

中的 class 中

检查能力

function get_content() {
    ...
    $this->content = new stdClass;
    $this->content->text = '';
    $this->content->footer = '';
    ...
    if (!has_capability('block/yourblockname:view', $this->page->context)) {
        // Return blank content so the block isn't displayed.
        return $this->content;
    }

您需要升级 version.php 中的版本才能安装该功能。

然后转到角色并设置允许所需角色的能力。