hasApiAccess($user); } /** * Gilt beim Erzeugen eines Tokens und bei jedem API-Aufruf * (EnsureApiAccessIsBooked). */ public function hasApiAccess(User $user): bool { return $this->denialReason($user) === null; } public function denialReason(User $user): ?string { if (! $user->is_active) { return 'Ihr Benutzerkonto ist nicht aktiv. API-Tokens können nur für aktive Benutzer erstellt werden.'; } if ($user->subscribed() || $user->hasActivePaymentOption() || $this->hasPaidLegacyInvoice($user)) { return null; } return 'API-Tokens werden erst freigeschaltet, wenn ein aktives Abo, ein aktiver Zahlungsstatus oder freigegebener Bestandsschutz vorliegt.'; } /** * Legacy-Pfad für Altkunden ohne Zahlungsoption: die zuletzt gestellte * Legacy-Rechnung muss bezahlt sein. */ private function hasPaidLegacyInvoice(User $user): bool { return $user->latestLegacyInvoice()?->status === 'paid'; } }