diff --git a/app/Console/Commands/WaitlistInvite.php b/app/Console/Commands/WaitlistInvite.php deleted file mode 100644 index 2e330068c..000000000 --- a/app/Console/Commands/WaitlistInvite.php +++ /dev/null @@ -1,114 +0,0 @@ -option('people'); - for ($i = 0; $i < $people; $i++) { - $this->main(); - } - } - - private function main() - { - if ($this->argument('email')) { - if ($this->option('only-email')) { - $this->next_patient = User::whereEmail($this->argument('email'))->first(); - $this->password = Str::password(); - $this->next_patient->update([ - 'password' => Hash::make($this->password), - 'force_password_reset' => true, - ]); - } else { - $this->next_patient = Waitlist::where('email', $this->argument('email'))->first(); - } - if (! $this->next_patient) { - $this->error("{$this->argument('email')} not found in the waitlist."); - - return; - } - } else { - $this->next_patient = Waitlist::orderBy('created_at', 'asc')->where('verified', true)->first(); - } - if ($this->next_patient) { - if ($this->option('only-email')) { - $this->send_email(); - - return; - } - $this->register_user(); - $this->remove_from_waitlist(); - $this->send_email(); - } else { - $this->info('No verified user found in the waitlist. 👀'); - } - } - - private function register_user() - { - $already_registered = User::whereEmail($this->next_patient->email)->first(); - if (! $already_registered) { - $this->password = Str::password(); - User::create([ - 'name' => str($this->next_patient->email)->before('@'), - 'email' => $this->next_patient->email, - 'password' => Hash::make($this->password), - 'force_password_reset' => true, - ]); - $this->info("User registered ({$this->next_patient->email}) successfully. 🎉"); - } else { - throw new \Exception('User already registered'); - } - } - - private function remove_from_waitlist() - { - $this->next_patient->delete(); - $this->info('User removed from waitlist successfully.'); - } - - private function send_email() - { - $token = Crypt::encryptString("{$this->next_patient->email}@@@$this->password"); - $loginLink = route('auth.link', ['token' => $token]); - $mail = new MailMessage; - $mail->view('emails.waitlist-invitation', [ - 'loginLink' => $loginLink, - ]); - $mail->subject('Congratulations! You are invited to join Coolify Cloud.'); - send_user_an_email($mail, $this->next_patient->email); - $this->info('Email sent successfully. 📧'); - } -} diff --git a/app/Http/Controllers/Webhook/Waitlist.php b/app/Http/Controllers/Webhook/Waitlist.php deleted file mode 100644 index dec8ca72d..000000000 --- a/app/Http/Controllers/Webhook/Waitlist.php +++ /dev/null @@ -1,63 +0,0 @@ -get('email'); - $confirmation_code = request()->get('confirmation_code'); - try { - $found = ModelsWaitlist::where('uuid', $confirmation_code)->where('email', $email)->first(); - if ($found) { - if (! $found->verified) { - if ($found->created_at > now()->subMinutes(config('constants.waitlist.expiration'))) { - $found->verified = true; - $found->save(); - send_internal_notification('Waitlist confirmed: '.$email); - - return 'Thank you for confirming your email address. We will notify you when you are next in line.'; - } else { - $found->delete(); - send_internal_notification('Waitlist expired: '.$email); - - return 'Your confirmation code has expired. Please sign up again.'; - } - } - } - - return redirect()->route('dashboard'); - } catch (Exception $e) { - send_internal_notification('Waitlist confirmation failed: '.$e->getMessage()); - - return redirect()->route('dashboard'); - } - } - - public function cancel(Request $request) - { - $email = request()->get('email'); - $confirmation_code = request()->get('confirmation_code'); - try { - $found = ModelsWaitlist::where('uuid', $confirmation_code)->where('email', $email)->first(); - if ($found && ! $found->verified) { - $found->delete(); - send_internal_notification('Waitlist cancelled: '.$email); - - return 'Your email address has been removed from the waitlist.'; - } - - return redirect()->route('dashboard'); - } catch (Exception $e) { - send_internal_notification('Waitlist cancellation failed: '.$e->getMessage()); - - return redirect()->route('dashboard'); - } - } -} diff --git a/app/Jobs/SendConfirmationForWaitlistJob.php b/app/Jobs/SendConfirmationForWaitlistJob.php deleted file mode 100755 index 7af8205fc..000000000 --- a/app/Jobs/SendConfirmationForWaitlistJob.php +++ /dev/null @@ -1,37 +0,0 @@ -email.'&confirmation_code='.$this->uuid; - $cancel_url = base_url().'/webhooks/waitlist/cancel?email='.$this->email.'&confirmation_code='.$this->uuid; - $mail->view('emails.waitlist-confirmation', - [ - 'confirmation_url' => $confirmation_url, - 'cancel_url' => $cancel_url, - ]); - $mail->subject('You are on the waitlist!'); - send_user_an_email($mail, $this->email); - } catch (\Throwable $e) { - send_internal_notification("SendConfirmationForWaitlistJob failed for {$this->email} with error: ".$e->getMessage()); - throw $e; - } - } -} diff --git a/app/Livewire/Waitlist/Index.php b/app/Livewire/Waitlist/Index.php deleted file mode 100644 index 0524b495c..000000000 --- a/app/Livewire/Waitlist/Index.php +++ /dev/null @@ -1,70 +0,0 @@ - 'required|email', - ]; - - public function render() - { - return view('livewire.waitlist.index')->layout('layouts.simple'); - } - - public function mount() - { - if (config('constants.waitlist.enabled') == false) { - return redirect()->route('register'); - } - $this->waitingInLine = Waitlist::whereVerified(true)->count(); - $this->users = User::count(); - if (isDev()) { - $this->email = 'waitlist@example.com'; - } - } - - public function submit() - { - $this->validate(); - try { - $already_registered = User::whereEmail($this->email)->first(); - if ($already_registered) { - throw new \Exception('You are already on the waitlist or registered.
Please check your email to verify your email address or contact support.'); - } - $found = Waitlist::where('email', $this->email)->first(); - if ($found) { - if (! $found->verified) { - $this->dispatch('error', 'You are already on the waitlist.
Please check your email to verify your email address.'); - - return; - } - $this->dispatch('error', 'You are already on the waitlist.
You will be notified when your turn comes.
Thank you.'); - - return; - } - $waitlist = Waitlist::create([ - 'email' => Str::lower($this->email), - 'type' => 'registration', - ]); - - $this->dispatch('success', 'Check your email to verify your email address.'); - dispatch(new SendConfirmationForWaitlistJob($this->email, $waitlist->uuid)); - } catch (\Throwable $e) { - return handleError($e, $this); - } - } -} diff --git a/app/Models/Waitlist.php b/app/Models/Waitlist.php deleted file mode 100644 index 28e5f01fd..000000000 --- a/app/Models/Waitlist.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'enabled' => env('WAITLIST', false), - 'expiration' => 10, - ], - 'sentry' => [ 'sentry_dsn' => env('SENTRY_DSN'), ], diff --git a/database/migrations/2024_12_09_105711_drop_waitlists_table.php b/database/migrations/2024_12_09_105711_drop_waitlists_table.php new file mode 100644 index 000000000..0e319369d --- /dev/null +++ b/database/migrations/2024_12_09_105711_drop_waitlists_table.php @@ -0,0 +1,31 @@ +id(); + $table->string('uuid'); + $table->string('type'); + $table->string('email')->unique(); + $table->boolean('verified')->default(false); + $table->timestamps(); + }); + } +}; diff --git a/resources/views/emails/waitlist-confirmation.blade.php b/resources/views/emails/waitlist-confirmation.blade.php deleted file mode 100644 index afd22916a..000000000 --- a/resources/views/emails/waitlist-confirmation.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - -Someone added this email to the Coolify Cloud's waitlist. [Click here]({{ $confirmation_url }}) to confirm! - -The link will expire in {{ config('constants.waitlist.expiration') }} minutes. - -You have no idea what [Coolify Cloud](https://coolify.io) is or this waitlist? [Click here]({{ $cancel_url }}) to remove you from the waitlist. - diff --git a/resources/views/livewire/waitlist/index.blade.php b/resources/views/livewire/waitlist/index.blade.php deleted file mode 100644 index 548e722fc..000000000 --- a/resources/views/livewire/waitlist/index.blade.php +++ /dev/null @@ -1,37 +0,0 @@ -
-
- -
-

Self-hosting in the cloud - - - - - - -

-
-
- - Join Waitlist - -
People waiting in the line: {{ $waitingInLine }}
-
Already using Coolify Cloud: {{ $users }}
-
- This is a paid & hosted version of Coolify.
See the pricing here. -
-
- If you are looking for the self-hosted version go here. -
-
-
diff --git a/routes/webhooks.php b/routes/webhooks.php index ed5c2e233..d8d8e094a 100644 --- a/routes/webhooks.php +++ b/routes/webhooks.php @@ -5,7 +5,6 @@ use App\Http\Controllers\Webhook\Gitea; use App\Http\Controllers\Webhook\Github; use App\Http\Controllers\Webhook\Gitlab; use App\Http\Controllers\Webhook\Stripe; -use App\Http\Controllers\Webhook\Waitlist; use Illuminate\Support\Facades\Route; Route::get('/source/github/redirect', [Github::class, 'redirect']); @@ -20,6 +19,3 @@ Route::post('/source/bitbucket/events/manual', [Bitbucket::class, 'manual']); Route::post('/source/gitea/events/manual', [Gitea::class, 'manual']); Route::post('/payments/stripe/events', [Stripe::class, 'events']); - -Route::get('/waitlist/confirm', [Waitlist::class, 'confirm'])->name('webhooks.waitlist.confirm'); -Route::get('/waitlist/cancel', [Waitlist::class, 'cancel'])->name('webhooks.waitlist.cancel');