'', 'description' => '', 'support_in_sats' => '', 'website' => '', 'accepted' => false, 'sats_paid' => 0, ]; public $file = null; #[Locked] public bool $isAllowed = false; #[Locked] public bool $isAdmin = false; public function mount(): void { $nostrUser = NostrAuth::user(); if ($nostrUser && Gate::forUser($nostrUser)->allows('create', ProjectProposal::class)) { $this->isAllowed = true; } if ($nostrUser) { $pleb = $nostrUser->getPleb(); if ($pleb && in_array($pleb->npub, config('einundzwanzig.config.current_board'), true)) { $this->isAdmin = true; } } } public function removeFile(): void { if ($this->file) { $this->file->delete(); $this->file = null; } } public function save(): void { Gate::forUser(NostrAuth::user())->authorize('create', ProjectProposal::class); $executed = RateLimiter::attempt( 'project-proposal-create:'.request()->ip(), 5, function () {}, ); if (! $executed) { abort(429, 'Too many requests.'); } $this->validate([ 'form.name' => 'required|string|max:255', 'form.description' => 'required|string', 'form.support_in_sats' => 'required|integer|min:0', 'form.website' => 'required|url|max:255', 'file' => 'nullable|file|mimes:jpeg,png,jpg,gif,webp|mimetypes:image/jpeg,image/png,image/gif,image/webp|max:10240', ]); $projectProposal = new ProjectProposal; $projectProposal->name = $this->form['name']; $projectProposal->description = $this->form['description']; $projectProposal->support_in_sats = (int) $this->form['support_in_sats']; $projectProposal->website = $this->form['website']; $projectProposal->accepted = $this->isAdmin ? $this->form['accepted'] : false; $projectProposal->sats_paid = $this->isAdmin ? $this->form['sats_paid'] : 0; $projectProposal->einundzwanzig_pleb_id = \App\Models\EinundzwanzigPleb::query()->where('pubkey', NostrAuth::pubkey())->first()->id; $projectProposal->save(); if ($this->file) { $projectProposal->addMedia($this->file)->toMediaCollection('main'); } $this->redirectRoute('association.projectSupport'); } }; ?>
Fülle das Formular aus, um eine neue Projektförderung anzulegen.
Um eine Projektförderung anzulegen, benötigst du:
@if(!NostrAuth::check()) Bitte melde dich zunächst mit Nostr an. @else Bitte kontaktiere den Vorstand, wenn du denkst, dass du berechtigt sein solltest. @endif