webman-admin普通管理員添加限制為auth數(shù)據(jù)時無法自動生成admin_id,看Crud.php中代碼好像必須要前臺傳admin_id參數(shù)過來,不能自動獲取當前管理員ID.
/**
* 插入前置方法
* @param Request $request
* @return array
* @throws BusinessException
*/
protected function insertInput(Request $request): array
{
$data = $this->inputFilter($request->post());
$password_filed = 'password';
if (isset($data[$password_filed])) {
$data[$password_filed] = Util::passwordHash($data[$password_filed]);
}
if (!Auth::isSuperAdmin()) {
if ($this->dataLimit === 'personal') {
$data[$this->dataLimitField] = admin_id();
} elseif ($this->dataLimit === 'auth') {
if (!empty($data[$this->dataLimitField])) {
$admin_id = $data[$this->dataLimitField];
if (!in_array($admin_id, Auth::getScopeAdminIds(true))) {
throw new BusinessException('無數(shù)據(jù)權(quán)限');
}
}
}
} elseif ($this->dataLimit && empty($data[$this->dataLimitField])) {
$data[$this->dataLimitField] = admin_id();
}
return $data;
}
1、添加普通管理員
2、普通管理員登錄添加限制為auth的數(shù)據(jù)提示缺少admin_id
windows10 Workerman version:4.1.15
發(fā)下報錯,報錯發(fā)全
SQLSTATE[HY000]: General error: 1364 Field 'admin_id' doesn't have a default value (SQL: insert into wa_cars
(plate
, carmodel
, carseries
, driver_id
, review
, insure
, mileage
, status
, updated_at
, created_at
) values (ddd, z5s, benchi, 5, ?, ?, ?, 0, 2024-06-05 14:01:43, 2024-06-05 14:01:43))
SQL報錯的意思是向 wa_cars 表寫入數(shù)據(jù)的時候沒傳 admin_id,傳下admin_id就好了。和權(quán)限是不是auth沒有關(guān)系
if (!Auth::isSuperAdmin()) {
if ($this->dataLimit === 'personal') {
$data[$this->dataLimitField] = admin_id(); //personal權(quán)限會自動生成admin_id參數(shù)
} elseif ($this->dataLimit === 'auth') { //為什么auth權(quán)限就不能自動生成admin_id參數(shù)而必須要手動傳這個參數(shù)?
if (!empty($data[$this->dataLimitField])) {
$admin_id = $data[$this->dataLimitField];
if (!in_array($admin_id, Auth::getScopeAdminIds(true))) {
throw new BusinessException('無數(shù)據(jù)權(quán)限');
}
}
}
} elseif ($this->dataLimit && empty($data[$this->dataLimitField])) {
$data[$this->dataLimitField] = admin_id();//超級管理員權(quán)限會自動生成admin_id參數(shù)
}
if (!empty($data[$this->dataLimitField])) {
$admin_id = $data[$this->dataLimitField];
if (!in_array($admin_id, Auth::getScopeAdminIds(true))) {
throw new BusinessException('無數(shù)據(jù)權(quán)限');
}
} else {
$data[$this->dataLimitField] = admin_id();
}
改成這樣試下