attributes->get('service_caller') !== null; } protected function ownerRef(Request $request): string { if ($this->isServiceRequest($request)) { $owner = trim((string) ($request->input('owner') ?? $request->query('owner', ''))); abort_if($owner === '', 422, 'The owner parameter is required.'); return $owner; } return (string) $request->user()->public_id; } protected function organization(Request $request): Organization { if ($this->isServiceRequest($request)) { $organization = Organization::owned($this->ownerRef($request))->first(); abort_unless($organization, 404, 'Queue organization not found.'); return $organization; } $organization = app(OrganizationResolver::class)->resolveForUser($request->user()); abort_unless($organization, 404); return $organization; } protected function member(Request $request): ?Member { if ($this->isServiceRequest($request)) { return null; } return app(OrganizationResolver::class)->memberFor($request->user(), $this->organization($request)); } protected function authorizeAbility(Request $request, string $ability): void { if ($this->isServiceRequest($request)) { return; } abort_unless( app(QmsPermissions::class)->can($this->member($request), $ability), 403, ); } protected function authorizeOwner(Request $request, Model $model): void { abort_unless($model->getAttribute('owner_ref') === $this->ownerRef($request), 404); } }