67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace Modules\Auth\Components;
 | |
| 
 | |
| use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Validation\ValidationException;
 | |
| use Livewire\Attributes\Layout;
 | |
| use Livewire\Component;
 | |
| 
 | |
| class PasswordReset extends Component
 | |
| {
 | |
| 
 | |
|     use SendsPasswordResetEmails;
 | |
| 
 | |
|     public string $email = '';
 | |
| 
 | |
|     protected function validateEmail(Request $request)
 | |
|     {
 | |
|         $this->validate([
 | |
|             'email' => 'required|max:255|string|email',
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     protected function sendResetLinkFailedResponse(Request $request, $response)
 | |
|     {
 | |
|         throw ValidationException::withMessages([
 | |
|             'email' => [trans($response)],
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     protected function credentials(Request $request)
 | |
|     {
 | |
|         return ['email' => $this->email];
 | |
|     }
 | |
| 
 | |
|     public function submit()
 | |
|     {
 | |
|         $this->sendResetLinkEmail(request());
 | |
|         $this->dispatch('success', 'Du hast weitere Instruktionen per E-Mail erhalten.');
 | |
|     }
 | |
| 
 | |
|     #[Layout('components.layouts.full')]
 | |
|     public function render(): string
 | |
|     {
 | |
|         return <<<'HTML'
 | |
|             <x-page::full heading="Passwort vergessen" title="Passwort vergessen">
 | |
|                 <form wire:submit.prevent="submit">
 | |
|                     <div class="grid gap-5">
 | |
|                         <span class="text-gray-500 text-sm"
 | |
|                             >Hier kannst du dein Passwort zurücksetzen.<br />
 | |
|                             Gebe dafür die E-Mail-Adresse deines Benutzerkontos ein.<br />
 | |
|                             Anschließend bekommst du eine E-Mail<br />
 | |
|                             mit weiteren Anweisungen.</span
 | |
|                         >
 | |
|                         <x-form::text name="email" wire:model="email" label="E-Mail-Adresse"></x-form::text>
 | |
|                         <x-ui::button type="submit">Passwort zurücksetzen</x-ui::button>
 | |
|                         <div class="flex justify-center">
 | |
|                             <a href="/login" class="text-gray-500 text-sm hover:text-gray-300">Zurück zum Login</a>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </form>
 | |
|             </x-page::full>
 | |
|         HTML;
 | |
|     }
 | |
| }
 |