fix: email verification / forgot password

This commit is contained in:
Andras Bacsai 2024-01-11 08:52:30 +01:00
parent d03b8420f8
commit 890a6925d1
2 changed files with 11 additions and 39 deletions

View File

@ -3,14 +3,13 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Events\TestEvent; use App\Events\TestEvent;
use App\Models\InstanceSettings;
use App\Models\S3Storage;
use App\Models\StandalonePostgresql;
use App\Models\TeamInvitation; use App\Models\TeamInvitation;
use App\Models\User; use App\Models\User;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController; use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Crypt;
@ -35,25 +34,25 @@ class Controller extends BaseController
public function verify() { public function verify() {
return view('auth.verify-email'); return view('auth.verify-email');
} }
public function email_verify() { public function email_verify(EmailVerificationRequest $request) {
request()->fulfill(); $request->fulfill();
$name = request()->user()?->name; $name = request()->user()?->name;
send_internal_notification("User {$name} verified their email address."); send_internal_notification("User {$name} verified their email address.");
return redirect(RouteServiceProvider::HOME); return redirect(RouteServiceProvider::HOME);
} }
public function forgot_password() { public function forgot_password(Request $request) {
if (is_transactional_emails_active()) { if (is_transactional_emails_active()) {
$arrayOfRequest = request()->only(Fortify::email()); $arrayOfRequest = $request->only(Fortify::email());
request()->merge([ $request->merge([
'email' => Str::lower($arrayOfRequest['email']), 'email' => Str::lower($arrayOfRequest['email']),
]); ]);
$type = set_transanctional_email_settings(); $type = set_transanctional_email_settings();
if (!$type) { if (!$type) {
return response()->json(['message' => 'Transactional emails are not active'], 400); return response()->json(['message' => 'Transactional emails are not active'], 400);
} }
request()->validate([Fortify::email() => 'required|email']); $request->validate([Fortify::email() => 'required|email']);
$status = Password::broker(config('fortify.passwords'))->sendResetLink( $status = Password::broker(config('fortify.passwords'))->sendResetLink(
request()->only(Fortify::email()) $request->only(Fortify::email())
); );
if ($status == Password::RESET_LINK_SENT) { if ($status == Password::RESET_LINK_SENT) {
return app(SuccessfulPasswordResetLinkRequestResponse::class, ['status' => $status]); return app(SuccessfulPasswordResetLinkRequestResponse::class, ['status' => $status]);

View File

@ -79,38 +79,11 @@ if (isDev()) {
Route::get('/dev/compose', Compose::class)->name('dev.compose'); Route::get('/dev/compose', Compose::class)->name('dev.compose');
} }
Route::post('/forgot-password', function (Request $request) { Route::post('/forgot-password', [Controller::class, 'forgot_password'])->name('password.forgot');
if (is_transactional_emails_active()) {
$arrayOfRequest = $request->only(Fortify::email());
$request->merge([
'email' => Str::lower($arrayOfRequest['email']),
]);
$type = set_transanctional_email_settings();
if (!$type) {
return response()->json(['message' => 'Transactional emails are not active'], 400);
}
$request->validate([Fortify::email() => 'required|email']);
$status = Password::broker(config('fortify.passwords'))->sendResetLink(
$request->only(Fortify::email())
);
if ($status == Password::RESET_LINK_SENT) {
return app(SuccessfulPasswordResetLinkRequestResponse::class, ['status' => $status]);
}
if ($status == Password::RESET_THROTTLED) {
return response('Already requested a password reset in the past minutes.', 400);
}
return app(FailedPasswordResetLinkRequestResponse::class, ['status' => $status]);
}
return response()->json(['message' => 'Transactional emails are not active'], 400);
})->name('password.forgot');
Route::get('/api/v1/test/realtime', [Controller::class, 'realtime_test'])->middleware('auth'); Route::get('/api/v1/test/realtime', [Controller::class, 'realtime_test'])->middleware('auth');
Route::get('/waitlist', WaitlistIndex::class)->name('waitlist.index'); Route::get('/waitlist', WaitlistIndex::class)->name('waitlist.index');
Route::get('/verify', [Controller::class, 'verify'])->middleware('auth')->name('verify.email'); Route::get('/verify', [Controller::class, 'verify'])->middleware('auth')->name('verify.email');
Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) { Route::get('/email/verify/{id}/{hash}', [Controller::class, 'email_verify'])->middleware(['auth'])->name('verify.verify');
$request->fulfill();
send_internal_notification("User {$request->user()->name} verified their email address.");
return redirect(RouteServiceProvider::HOME);
})->middleware(['auth'])->name('verify.verify');
Route::middleware(['throttle:login'])->group(function () { Route::middleware(['throttle:login'])->group(function () {
Route::get('/auth/link', [Controller::class, 'link'])->name('auth.link'); Route::get('/auth/link', [Controller::class, 'link'])->name('auth.link');
}); });