From 2dcc070af29a552851a60ff8b50422cd1a2d39cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Wed, 28 Feb 2024 17:55:13 +0100 Subject: [PATCH] Remove Authentication --- app/Livewire/BillingPortal/Authentication.php | 197 ------------------ .../v3/authentication.blade.php | 91 -------- 2 files changed, 288 deletions(-) delete mode 100644 app/Livewire/BillingPortal/Authentication.php delete mode 100644 resources/views/billing-portal/v3/authentication.blade.php diff --git a/app/Livewire/BillingPortal/Authentication.php b/app/Livewire/BillingPortal/Authentication.php deleted file mode 100644 index d567c4eb159f..000000000000 --- a/app/Livewire/BillingPortal/Authentication.php +++ /dev/null @@ -1,197 +0,0 @@ - true, // Use as preference. E-mail/password or OTP. - 'login_form' => false, - 'otp_form' => false, - 'initial_completed' => false, - ]; - - public function initial() - { - $this->validateOnly('email', ['email' => 'required|bail|email:rfc']); - - $this->state['initial_completed'] = true; - - if ($this->state['otp']) { - return $this->withOtp(); - } - - return $this->withPassword(); - } - - public function withPassword() - { - $contact = ClientContact::where('email', $this->email) - ->where('company_id', $this->subscription->company_id) - ->first(); - - if ($contact) { - return $this->state['login_form'] = true; - } - - $this->state['login_form'] = false; - - $contact = $this->createClientContact(); - - auth()->guard('contact')->loginUsingId($contact->id, true); - - $this->dispatch('purchase.context', property: 'contact', value: $contact); - $this->dispatch('purchase.next'); - } - - public function handlePassword() - { - $this->validate([ - 'email' => 'required|bail|email:rfc', - 'password' => 'required', - ]); - - $attempt = auth()->guard('contact')->attempt([ - 'email' => $this->email, - 'password' => $this->password, - 'company_id' => $this->subscription->company_id, - ]); - - if ($attempt) { - $this->dispatch('purchase.next'); - } - - session()->flash('message', 'These credentials do not match our records.'); - } - - public function withOtp() - { - $code = rand(100000, 999999); - $email_hash = "subscriptions:otp:{$this->email}"; - - Cache::put($email_hash, $code, 600); - - $cc = new ClientContact(); - $cc->email = $this->email; - - $nmo = new NinjaMailerObject(); - $nmo->mailable = new OtpCode($this->subscription->company, $this->context['contact'] ?? null, $code); - $nmo->company = $this->subscription->company; - $nmo->settings = $this->subscription->company->settings; - $nmo->to_user = $cc; - - NinjaMailerJob::dispatch($nmo); - - if (app()->environment('local')) { - session()->flash('message', "[dev]: Your OTP is: {$code}"); - } - - $this->state['otp_form'] = true; - } - - public function handleOtp() - { - $this->validate([ - 'otp' => 'required|numeric|digits:6', - ]); - - $code = Cache::get("subscriptions:otp:{$this->email}"); - - if ($this->otp != $code) { //loose comparison prevents edge cases - $errors = $this->getErrorBag(); - $errors->add('otp', ctrans('texts.invalid_code')); - - return; - } - - $contact = ClientContact::where('email', $this->email) - ->where('company_id', $this->subscription->company_id) - ->first(); - - if ($contact) { - auth()->guard('contact')->loginUsingId($contact->id, true); - - $this->dispatch('purchase.context', property: 'contact', value: $contact); - $this->dispatch('purchase.next'); - - return; - } - - $contact = $this->createClientContact(); - - auth()->guard('contact')->loginUsingId($contact->id, true); - - $this->dispatch('purchase.context', property: 'contact', value: $contact); - $this->dispatch('purchase.next'); - } - - private function createClientContact() - { - $company = $this->subscription->company; - $user = $this->subscription->user; - $user->setCompany($company); - - $client_repo = new ClientRepository(new ClientContactRepository()); - $data = [ - 'name' => '', - 'group_settings_id' => $this->subscription->group_id, - 'contacts' => [ - ['email' => $this->email], - ], - 'client_hash' => Str::random(40), - 'settings' => ClientSettings::defaults(), - ]; - - $client = $client_repo->save($data, ClientFactory::create($company->id, $user->id)); - - $contact = $client->fresh()->contacts()->first(); - - return $contact; - } - - public function mount() - { - if (auth()->guard('contact')->check()) { - $this->dispatch('purchase.context', property: 'contact', value: auth()->guard('contact')->user()); - $this->dispatch('purchase.next'); - } - } - - public function render() - { - return view('billing-portal.v3.authentication'); - } -} diff --git a/resources/views/billing-portal/v3/authentication.blade.php b/resources/views/billing-portal/v3/authentication.blade.php deleted file mode 100644 index f1261a101643..000000000000 --- a/resources/views/billing-portal/v3/authentication.blade.php +++ /dev/null @@ -1,91 +0,0 @@ -
- @if (session()->has('message')) - @component('portal.ninja2020.components.message') - {{ session('message') }} - @endcomponent - @endif - -
-

{{ ctrans('texts.contact') }}

-
- - @if($state['initial_completed'] === false) -
- @csrf - - - - -
- @endif - - @if($state['login_form']) -
- @csrf - -
- {{ ctrans('texts.email_address') }} - - - @error('email') - - @enderror -
- -
- {{ ctrans('texts.password') }} - - - @error('password') - - @enderror -
- - -
- @endif - - @if($state['otp_form']) -
- @csrf - -
- {{ ctrans('texts.code') }} - - - @error('otp') - - @enderror -
- - -
- @endif -