sameCompany($user, $customField); } public function create(User $user): bool { return BouncerFacade::can('create-custom-field', CustomField::class); } public function update(User $user, CustomField $customField): bool { return BouncerFacade::can('edit-custom-field', $customField) && $this->sameCompany($user, $customField); } public function delete(User $user, CustomField $customField): bool { return $this->mayRemove($user, $customField); } /** * Restoring and erasing are governed by the delete ability as well; * definitions are not soft-deleted, so neither is reachable in practice. */ public function restore(User $user, CustomField $customField): bool { return $this->mayRemove($user, $customField); } public function forceDelete(User $user, CustomField $customField): bool { return $this->mayRemove($user, $customField); } private function mayRemove(User $user, CustomField $customField): bool { return BouncerFacade::can('delete-custom-field', $customField) && $this->sameCompany($user, $customField); } private function sameCompany(User $user, CustomField $customField): bool { return $user->hasCompany($customField->company_id); } }