59 lines
1.8 KiB
PHP
59 lines
1.8 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Auth;
|
||
|
||
use App\Http\Controllers\Controller;
|
||
use App\Http\Requests\UpdateEmailRequest;
|
||
use App\Services\AccountService;
|
||
use Illuminate\Http\RedirectResponse;
|
||
use Illuminate\Http\Request;
|
||
use Illuminate\Support\Facades\Auth;
|
||
|
||
class EmailVerificationNotificationController extends Controller
|
||
{
|
||
public function __construct(private AccountService $accountService) {}
|
||
|
||
/**
|
||
* Send a new email verification notification.
|
||
*/
|
||
public function store(Request $request): RedirectResponse
|
||
{
|
||
if ($request->user()->hasVerifiedEmail()) {
|
||
return redirect()->intended(route('dashboard', absolute: false));
|
||
}
|
||
|
||
$request->user()->sendEmailVerificationNotification();
|
||
|
||
return back()->with('status', 'verification-link-sent');
|
||
}
|
||
|
||
/**
|
||
* Send a new email for verify the new email.
|
||
*/
|
||
public function update(UpdateEmailRequest $request)
|
||
{
|
||
$this->accountService->changeEmail($request->validated(), Auth::user()->id);
|
||
|
||
return back()->with('success', 'Wir haben einen Bestätigungslink an deine neue E-Mail-Adresse gesendet.');
|
||
}
|
||
|
||
/**
|
||
* Update the specified resource in storage.
|
||
*/
|
||
public function save(Request $request)
|
||
{
|
||
$user = Auth::user();
|
||
$saved = $this->accountService->saveChangedEmail($request->token, $user->id);
|
||
$flash = $saved ? 'success' : 'error';
|
||
$message = $saved ? 'Die E‑Mail wurde erfolgreich geändert.' : 'Der Bestätigungs-Token stimmt nicht oder ist abgelaufen.';
|
||
|
||
if ($user->role == 'student') {
|
||
return redirect()->route('student.index', ['tab' => 'settings'])
|
||
->with($flash, $message);
|
||
}
|
||
|
||
return redirect()->route('settings.account')
|
||
->with($flash, $message);
|
||
}
|
||
}
|