限制特定产品/组的 Whmcs 挂钩不起作用

问题描述 投票:0回答:0

这个钩子代码有什么问题

<?php

使用 WHMCS\Database\Capsule;

add_hook('AdminAreaHeadOutput', 1, 函数($vars) {

// Replace 3 with the ID of the admin user you want to restrict
$adminUserId = 3;
$productGroupId = 2;
$clientGroupId = 1;

$currentAdminUser = Capsule::table('tbladmins')->find($adminUserId);

if ($currentAdminUser) {

    $loggedInAdminUserId = $_SESSION['adminid'];

    if ($adminUserId == $loggedInAdminUserId) {

        add_hook('AdminProductsServices', 1, function($vars) use ($productGroupId) {

            $productsServices = Capsule::table('tblproducts')
                ->join('tblproductgroups', 'tblproducts.gid', '=', 'tblproductgroups.id')
                ->where('tblproductgroups.id', $productGroupId)
                ->select('tblproducts.*')
                ->get();

            $productsServicesIds = array();

            foreach ($productsServices as $productService) {
                $productsServicesIds[] = $productService->id;
            }

            foreach ($vars['products'] as $key => $product) {
                if (!in_array($product['id'], $productsServicesIds)) {
                    unset($vars['products'][$key]);
                }
            }

            return $vars;
        });

        add_hook('AdminClientsSearch', 1, function($vars) use ($clientGroupId) {

            $clients = Capsule::table('tblclients')
                ->join('tblclientgroups', 'tblclients.groupid', '=', 'tblclientgroups.id')
                ->where('tblclientgroups.id', $clientGroupId)
                ->select('tblclients.*')
                ->get();

            $clientsIds = array();

            foreach ($clients as $client) {
                $clientsIds[] = $client->id;
            }

            foreach ($vars['results'] as $key => $result) {
                if (!in_array($result['id'], $clientsIds)) {
                    unset($vars['results'][$key]);
                }
            }

            return $vars;
        });
    }
}

});

我想限制一个管理员用户只能在仪表板上看到属于特定产品组的产品/服务。我不希望他们看到不同组中的其他产品详细信息。与客户相同,我希望管理员用户只能看到具有特定客户组的客户的详细信息,我不希望他们在客户列表中显示那些没有任何组或不同组的客户。他们也不应该能够搜索不允许他们查看的客户和产品。

它不起作用,我的 ID 是正确的,当我以管理员身份使用 ID 3 登录时,他们仍然可以看到所有客户和产品。

php hook whmcs
© www.soinside.com 2019 - 2024. All rights reserved.