You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.6 KiB

<?php
namespace App\Http\Controllers\Miniapp;
use App\Http\Controllers\Admin\CrawlJobController as AdminCrawlJobController;
use App\Models\MiniappUser;
use App\Support\ApiResponse;
use App\Support\Miniapp\MiniappPresenter;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CrawlJobController extends BaseController
{
use ApiResponse;
public function __construct(
protected AdminCrawlJobController $adminController,
) {}
public function resolveUrl(Request $request): JsonResponse
{
$this->assertStaff($request);
return $this->adminController->resolveUrl($request, app(\App\Services\Crawl\CrawlSourceResolver::class));
}
public function store(Request $request): JsonResponse
{
$this->assertStaff($request);
return $this->adminController->store(
$request,
app(\App\Services\Crawl\CrawlSourceResolver::class),
app(\App\Services\Crawl\CrawlJobRunnerService::class),
app(\App\Services\Crawl\CrawlImportService::class),
);
}
public function show(Request $request, int $crawlJob): JsonResponse
{
$this->assertStaff($request);
return $this->adminController->show($crawlJob);
}
protected function assertStaff(Request $request): MiniappUser
{
$user = $request->user();
if (! $user instanceof MiniappUser) {
abort(401, '请先登录');
}
$payload = MiniappPresenter::userPayload($user);
if (! ($payload['is_admin'] || $payload['is_grid_member'])) {
abort(403, '无权使用数据爬虫');
}
return $user;
}
}