MediaWiki - 在允许阅读之前需要确认电子邮件?

MediaWiki - Require confirmed emails before allowing read?

我正在尝试为大学生建立一个 MediaWiki。使用 EmailDomainCheck,我阻止除拥有大学电子邮件的人之外的任何人创建帐户。使用 $wgEmailConfirmToEdit,我可以要求在用户编辑文件之前确认电子邮件。但是,实际上,用户可以使用来自正确域的虚假电子邮件来创建帐户。使用该帐户,他们可以查看所有页面(即使他们无法编辑)。除非电子邮件已确认,否则我不想授予他们读取权限。这可能吗?请注意,我希望自动接受正确域的所有已确认电子邮件。它应该不需要手动接受帐户创建。

理论上,

$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['emailconfirmed']['read'] = true;

应该可以。实际上,MediaWiki 几乎总是与 "everyone can read" 或 "you can read iff you are logged in" 设置一起使用,而其他设置则没有经过很好的测试,因此如果该 wiki 有一些高度敏感的私人信息,我不会这样做,但我想不是这样的大学网站。

或者,将电子邮件确认步骤集成到帐户创建中应该不会太难,但您必须为此编写代码。 EmailAuth(在登录期间进行类似的检查)可能会让您了解它的外观。

您可以尝试以下方法,如 Documentation

中所述
# Disable for everyone.
$wgGroupPermissions['*']['read'] = false;
# Disable for users, too: by default 'user' is allowed to read, even if '*' is not.
$wgGroupPermissions['user']['read'] = false;
# Make it so users with confirmed email addresses are in the group.
$wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
# Hide group from user list.
$wgImplicitGroups[] = 'emailconfirmed';
# Finally, set it to true for the desired group.
$wgGroupPermissions['emailconfirmed']['read'] = true;

正如 Jenny Shoars 所提到的,您可能希望将某些页面列入白名单,例如:

$wgWhitelistRead = array("Main_Page", "Special:CreateAccount", "Special:ConfirmEmail");

以便非注册用户仍然可以创建帐户等。