id === 1) return ['code' => 0]; if (self::$info->admin_auth_group === -1) return ['code' => 0]; $auth = AdminAuth::where('id', $auth)->where('status', 1)->where('del', 2)->first(); if (!$auth) return ['code' => 100004, 'message' => '权限不足']; if (self::$info->admin_auth_group === 0) { if ($auth->check !== 1) return ['code' => 100004, 'message' => '权限不足']; } else { if ($auth->check === 1) return ['code' => 0]; $admin_auth = AdminAuthGroup::select('id') ->where('id', self::$info->admin_auth_group) ->where('del', 2) ->first(); if (!$admin_auth) return ['code' => 100004, 'message' => '权限不足']; if ($admin_auth->status != 1) return ['code' => 100004, 'message' => !!$admin_auth->message ? $admin_auth->message : '权限不足']; $admin_auths = json_decode($admin_auth, true); if (!in_array((string)$auth, $admin_auths)) return ['code' => 100004, 'message' => !!$admin_auth->message ? $admin_auth->message : '权限不足']; } return ['code' => 0]; } public static function admin_check($auths = [], $or_ids = []): array { if (!request()->header('Authorization')) return ['code' => 100002]; $token_arr = explode('Bearer ', request()->header('Authorization')); if (!isset($token_arr[1])) return ['code' => 100002]; $token = $token_arr[1]; if (!$token) return ['code' => 100002]; $admin_token = AdminToken::where('token', $token)->where('del', 2)->where('updated_at', '>', Lu::date(time() - (60 * 60 * 24 * 3)))->first(); if (!$admin_token) return ['code' => 100002]; $admin = Admin::where('id', $admin_token->admin)->where('del', 2)->where('status', 1)->first(); if (!$admin) return ['code' => 100003]; self::$info = $admin; self::$token = $admin_token; self::$type = 'admin'; foreach ($auths as $item) { $auth_check_res = self::check_admin_auth($item); if ($auth_check_res['code'] != 0) return $auth_check_res; } $ret = 0; $ret_code = ['code' => 0]; foreach ($or_ids as $item) { $auth_check_res = self::check_admin_auth($item); if ($auth_check_res['code'] == 0) { $ret++; } else { $ret_code = $auth_check_res; } } if ($ret == 0 && $ret_code != 0) return $ret_code; $admin_token->updated_at = Lu::date(); $admin_token->save(); return ['code' => 0]; } public static function admin($auths = [], $or_ids = []) { $check_res = self::admin_check($auths, $or_ids); if ($check_res['code'] != 0) Yo::error_echo($check_res['code'], [ isset($check_res['message']) && !!$check_res['message'] ? $check_res['message'] : '' ]); } }