有一个自定义登录表单可以让用户访问同一页面上的某些内容。到目前为止,这适用于在 SS 数据库中存储为成员的用户,我在登录后检查用户是否在页面类中具有这样的权限:
function isAllowed() {
if (Member::currentUser()) {
$PresseGroup = DataObject::get_one('Group', "Code = 'presse'");
$AdminGroup = DataObject::get_one('Group', "Code = 'administrators'");
if (Member::currentUser()->inGroup($PresseGroup->ID) || Member::currentUser()->inGroup($AdminGroup->ID)) {
return true;
}
}
}
在模板中我刚刚做了这个:
<% if isAllowed %>
SecretContent
<% end_if %>
到目前为止还可以,但现在用户不会存储在 silverstripe 数据库中 - 他们存储在另一台服务器上。
在该外部服务器上正在运行一个接受用户名和密码的小 php 脚本。该脚本只返回用户具有权限:true 或 false。
我正在通过 cURL 调用该脚本。
我打算覆盖 MemberLoginForm 的 dologin 函数。现在我只是想知道如何在登录后检查用户是否获得了权限并显示内容......我试图在页面的控制器中设置一个变量还是应该设置一个会话变量?那是我的尝试(CustomLoginForm 扩展了 MemberLoginForm):
public function dologin($data) {
if(userHasPermission("user1", "pw")==true){
$this->controller->Test("test");
}
$link = $this->controller->Link();
$this->performLogin($data);
$this->controller->redirect($link);
}
我希望有人可以帮助我解决这个问题——我知道非常具体的问题。非常感谢,弗洛里安