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.

42 lines
1.0 KiB

1 day ago
<?php
namespace App\Http\Controllers\Miniapp;
use App\Http\Controllers\Admin\CrawlAddressController as AdminCrawlAddressController;
use App\Models\MiniappUser;
use App\Support\ApiResponse;
use App\Support\Miniapp\MiniappPresenter;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CrawlAddressController extends BaseController
{
use ApiResponse;
public function __construct(
protected AdminCrawlAddressController $adminController,
) {}
public function options(Request $request): JsonResponse
{
$this->assertStaff($request);
return $this->adminController->options($request);
}
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;
}
}