'handleNostrLoggedIn', 'nostrLoggedOut' => 'handleNostrLoggedOut', ]; public function mount(): void { if (NostrAuth::check()) { $this->currentPubkey = NostrAuth::pubkey(); $this->currentPleb = EinundzwanzigPleb::query() ->with([ 'paymentEvents' => fn ($query) => $query->where('year', date('Y')), 'profile', ]) ->where('pubkey', $this->currentPubkey)->first(); if ($this->currentPleb) { if ($this->currentPleb->nip05_handle) { $this->nip05Handle = $this->currentPleb->nip05_handle; // Get all NIP-05 handles for current pubkey $this->nip05VerifiedHandles = $this->getNip05HandlesForPubkey($this->currentPubkey); if (count($this->nip05VerifiedHandles) > 0) { $this->nip05Verified = true; $this->nip05VerifiedHandle = $this->nip05VerifiedHandles[0]; // Check if verified handle differs from database handle if (! in_array($this->nip05Handle, $this->nip05VerifiedHandles, true)) { $this->nip05HandleMismatch = true; } } } // Check if current year is paid $paymentEvent = $this->currentPleb->paymentEvents->first(); if ($paymentEvent && $paymentEvent->paid) { $this->currentYearIsPaid = true; } } } } public function updatedNip05Handle(): void { $this->nip05Handle = strtolower($this->nip05Handle); } public function saveNip05Handle(): void { $this->validate([ 'nip05Handle' => 'required|string|max:255|regex:/^[a-z0-9_-]+$/|unique:einundzwanzig_plebs,nip05_handle', ]); $nip05Handle = strtolower($this->nip05Handle); $this->currentPleb->update([ 'nip05_handle' => $nip05Handle, ]); Flux::toast('NIP-05 Handle gespeichert.'); } public function copyRelayUrl(): void { $relayUrl = 'wss://nostr.einundzwanzig.space'; $this->js("navigator.clipboard.writeText('{$relayUrl}')"); Flux::toast('Relay-Adresse in die Zwischenablage kopiert!'); } public function copyWatchtowerUrl(): void { $watchtowerUrl = '03a09f56bba3d2c200cc55eda2f1f069564a97c1fb74345e1560e2868a8ab3d7d0@62.171.139.240:9911'; $this->js("navigator.clipboard.writeText('{$watchtowerUrl}')"); Flux::toast('Watchtower-Adresse in die Zwischenablage kopiert!'); } public function copyBlossomUrl(): void { $blossomUrl = 'https://blossom.einundzwanzig.space'; $this->js("navigator.clipboard.writeText('{$blossomUrl}')"); Flux::toast('Blossom-Adresse in die Zwischenablage kopiert!'); } public function handleNostrLoggedIn($signedEvent = null): void { NostrAuth::loginWithSignedEvent($signedEvent); $this->mount(); } public function handleNostrLoggedOut(): void { $this->currentPleb = null; $this->currentPubkey = null; $this->currentYearIsPaid = false; $this->nip05Handle = ''; $this->nip05Verified = false; $this->nip05VerifiedHandle = null; $this->nip05HandleMismatch = false; $this->nip05VerifiedHandles = []; } } ?>
Diese Dienste betreiben wir exklusiv für aktive Vereinsmitglieder. Klicke bei jedem Dienst auf „Anleitung anzeigen", um die Einrichtung Schritt für Schritt zu sehen.
Exklusive Schreib-Rechte auf dem Premium Outbox-Relay von Einundzwanzig.
wss://nostr.einundzwanzig.space
Ein Outbox-Relay ist wie ein Postbote für deine Nostr-Nachrichten: Es speichert und verteilt deine Posts.
Gehe in deinem Nostr-Client zu den Einstellungen (meist „Settings" oder „Relays") und füge die Adresse oben als Outbox-Relay hinzu.
Tipp: Du kannst auf mehreren Relays gleichzeitig veröffentlichen – so sind deine Inhalte auch über unser Relay erreichbar.
Verifiziere deine Identität mit einem menschenlesbaren Nostr-Namen.
Deine aktivierten Handles:
Regeln für dein Handle: Nur Kleinbuchstaben (a–z), Zahlen (0–9) sowie „-" und „_". Großbuchstaben werden automatisch kleingeschrieben.
Schütze deine Lightning Channel – auch wenn deine Node offline ist.
03a09f56bba3d2c200cc55eda2f1f069564a97c1fb74345e1560e2868a8ab3d7d0@62.171.139.240:9911
Ein Watchtower überwacht deine Channel und springt ein, falls deine Node offline ist – so verhinderst du den Verlust deiner Sats bei unfairen Channel-Schließungen.
Füge die URI oben in deiner Lightning-Node-Konfiguration hinzu:
watchtower-client-Plugin mit der URIeclair.conf ergänzenWichtig: Der Watchtower überwacht passiv. Er hat keinen Zugriff auf deine privaten Schlüssel oder dein Guthaben.
Dein eigener Speicher für Bilder & Videos auf Nostr – betrieben vom Verein.
https://blossom.einundzwanzig.space
Wenn du auf Nostr ein Bild oder Video postest, muss diese Datei irgendwo gespeichert werden. Bisher landet sie oft auf fremden Gratis-Servern, die jederzeit verschwinden können. Mit unserem Blossom-Server liegen deine Medien stattdessen sicher auf einem Server des Vereins – schnell, zuverlässig und nur für Mitglieder.
So nutzt du ihn:
Sicher: Die Anmeldung passiert automatisch über deinen Nostr-Schlüssel – nur Vereinsmitglieder können hochladen, und deine privaten Schlüssel verlassen niemals dein Gerät.