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
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;
|
|
}
|
|
}
|