user(); if ($user->isSuperAdmin()) { return; } if ($activity->submitted_by !== null && (int) $activity->submitted_by === (int) $user->id) { return; } $allowed = $user->venues()->where('venues.id', $activity->venue_id)->exists(); abort_unless($allowed, 403, '仅可操作已绑定场馆'); } /** * 活动基础信息与场次:超级管理员或活动创建人可编辑。 */ protected function authorizeActivityFullEdit(Request $request, Activity $activity): void { $user = $request->user(); if ($user?->isSuperAdmin()) { return; } abort_unless( $user && $activity->submitted_by !== null && (int) $activity->submitted_by === (int) $user->id, 403, '仅活动创建者可编辑活动信息与场次' ); } /** * 可查看协作信息(审核记录、场次设置等):超管、创建人、或该活动所属绑定场馆管理员。 */ protected function authorizeActivityCollaboratorView(Request $request, Activity $activity): void { $user = $request->user(); if ($user?->isSuperAdmin()) { return; } if ($user && $activity->submitted_by !== null && (int) $activity->submitted_by === (int) $user->id) { return; } if ($user && $user->venues()->where('venues.id', $activity->venue_id)->exists()) { return; } abort(403, '无权查看'); } /** * 花絮:超管、活动所属绑定场馆用户、或活动创建人可编辑。 * (活动所属场馆权限已由 {@see ActivityController::ensureVenuePermission} 或 {@see ensureVenueOrCreatorPermission} 保证。) */ 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, '只能编辑本人提交的活动花絮'); } }