diff --git a/server/app/common/enum/AdminTerminalEnum.php b/server/app/common/enum/AdminTerminalEnum.php index e3dac5da..b621da90 100644 --- a/server/app/common/enum/AdminTerminalEnum.php +++ b/server/app/common/enum/AdminTerminalEnum.php @@ -25,4 +25,7 @@ class AdminTerminalEnum { const PC = 1; const MOBILE = 2; + + const PLATFORM = '__saas__platform__'; + const TENANT = '__saas__tenant__'; } \ No newline at end of file diff --git a/server/app/common/model/BaseModel.php b/server/app/common/model/BaseModel.php index 38242d32..98844d97 100644 --- a/server/app/common/model/BaseModel.php +++ b/server/app/common/model/BaseModel.php @@ -14,11 +14,11 @@ namespace app\common\model; -use app\common\service\FileService; -use think\Exception; -use think\Model; use app\common\cache\TenantAdminTokenCache; +use app\common\enum\AdminTerminalEnum; +use app\common\service\FileService; use think\facade\Request; +use think\Model; /** * 基础模型 @@ -61,24 +61,28 @@ class BaseModel extends Model * @author yfdong * @date 2024/09/03 22:45 */ - public function scopeTenantId($query): void - { - // 获取当前查询模型表名 - $table = $query->getTable(); - // 获取对应表字段 - $fields = $query->getConnection()->getTableInfo($table, 'fields'); - // 获取对应查询对象实体表中是否有对应的tenant_id字段 - if (in_array('tenant_id', $fields)) { - // 从请求头中获取 token 对应登录信息中租户标识 - $token = Request::instance()->header('token'); - $adminInfo = (new TenantAdminTokenCache())->getAdminInfo($token); - if (!empty($adminInfo['tenant_id'])) { - $tenantId = $adminInfo['tenant_id']; - $query->where('tenant_id', $tenantId); - }else{ - //视为越权查看,禁止返回结果 - $query->where('tenant_id', 'no_access'); - } - } - } + public function scopeTenantId($query): void + { + if (\request()->source === AdminTerminalEnum::TENANT) { + // 从请求头中获取 token 对应登录信息中租户标识 + $token = Request::header('token'); + if($token !== "null") { + // 获取当前查询模型表名 + $table = $query->getTable(); + // 获取对应表字段 + $fields = $query->getConnection()->getTableInfo($table, 'fields'); + // 获取对应查询对象实体表中是否有对应的tenant_id字段 + if (in_array('tenant_id', $fields)) { + $adminInfo = (new TenantAdminTokenCache())->getAdminInfo($token); + if (!empty($adminInfo['tenant_id'])) { + $tenantId = $adminInfo['tenant_id']; + $query->where('tenant_id', $tenantId); + } else { + //视为越权查看,禁止返回结果 + $query->where('tenant_id', 'no_access'); + } + } + } + } + } } \ No newline at end of file diff --git a/server/app/platformapi/controller/BaseAdminController.php b/server/app/platformapi/controller/BaseAdminController.php index 6ab768f4..6142c5b5 100644 --- a/server/app/platformapi/controller/BaseAdminController.php +++ b/server/app/platformapi/controller/BaseAdminController.php @@ -16,6 +16,7 @@ declare (strict_types=1); namespace app\platformapi\controller; +use app\common\enum\AdminTerminalEnum; use think\App; use app\common\controller\BaseLikeAdminController; @@ -31,6 +32,7 @@ class BaseAdminController extends BaseLikeAdminController public function initialize() { + $this->request->source = AdminTerminalEnum::PLATFORM; if (isset($this->request->adminInfo) && $this->request->adminInfo) { $this->adminInfo = $this->request->adminInfo; $this->adminId = $this->request->adminInfo['admin_id']; diff --git a/server/app/tenantapi/controller/BaseAdminController.php b/server/app/tenantapi/controller/BaseAdminController.php index 68d0b893..fbe68373 100644 --- a/server/app/tenantapi/controller/BaseAdminController.php +++ b/server/app/tenantapi/controller/BaseAdminController.php @@ -17,6 +17,7 @@ declare (strict_types=1); namespace app\tenantapi\controller; use app\common\controller\BaseLikeAdminController; +use app\common\enum\AdminTerminalEnum; /** * 管理元控制器基类 @@ -30,6 +31,7 @@ class BaseAdminController extends BaseLikeAdminController public function initialize() { + $this->request->source = AdminTerminalEnum::TENANT; if (isset($this->request->adminInfo) && $this->request->adminInfo) { $this->adminInfo = $this->request->adminInfo; $this->adminId = $this->request->adminInfo['admin_id'];