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.

29 lines
950 B

<?php
namespace App\Http\Controllers\Concerns;
use App\Models\Activity;
use Illuminate\Http\Request;
trait AuthorizesActivitySubmitter
{
/**
* 花絮:超管、活动所属绑定场馆用户、或活动创建人可编辑。
* (活动所属场馆权限已由 {@see ActivityController::ensureVenuePermission} 保证。)
*/
protected function authorizeActivityBehindScenesEdit(Request $request, Activity $activity): void
{
$user = $request->user();
if ($user?->isSuperAdmin()) {
return;
}
if ($user && $user->venues()->where('venues.id', $activity->venue_id)->exists()) {
return;
}
if ($activity->submitted_by === null) {
abort(403, '该平台录入的活动仅超级管理员可修改花絮');
}
abort_unless((int) $activity->submitted_by === (int) $user->id, 403, '只能编辑本人提交的活动花絮');
}
}