如何从 Prestashop 1.7 的后台注销管理员用户(员工)?

How to log out an admin user (employee) from back office in Prestashop 1.7?

我正在为 PrestaShop 开发一个模块,我需要从后台注销一个用户(员工)。我在后端代码中看到他们使用

// Find employee
$this->context->employee = new Employee();
$this->context->employee->getByEmail($email, $passwd);
$this->context->employee->logout();

但我不能在我的模块范围内使用它,因为我需要拦截来自后台登录表单的凭据才能为员工创建一个合适的 link,但我找不到方法如何。有什么方法可以获取这些凭据或以其他方式注销用户吗?

P.S。在他登录之前拦截用户凭据并阻止他登录直到某个时间点也可以满足我的需求,但这听起来要复杂得多,我也找不到办法做到这一点。

此代码足以断开员工的连接:
$this->context->employee->logout();

但是,正如您在上下文中看到的那样,这意味着代码应该从您要断开连接的员工处执行,因为会话保存在该员工的本地 cookie 中,换句话说,您可以' t 远程断开与员工的连接,但是您可以使用在每个浏览页面中调用的挂钩 displayBackOfficeHeader 然后断开员工连接,例如:

public function hookDisplayBackOfficeHeader()
{
    // My validation to disconnect the employee I want
    if ($id_employee == 1) {
        $this->context->employee->logout();
        Tools::redirectAdmin('index.php');
    }
}