fix
This commit is contained in:
parent
3e18f0f238
commit
18fde01ed5
@ -36,16 +36,6 @@ public function send(User $notifiable, Notification $notification): void
|
||||
|
||||
private function bootConfigs(InstanceSettings $settings): void
|
||||
{
|
||||
config()->set('mail.default', 'smtp');
|
||||
config()->set('mail.mailers.smtp', [
|
||||
"transport" => "smtp",
|
||||
"host" => $settings->extra_attributes?->get('smtp_host'),
|
||||
"port" => $settings->extra_attributes?->get('smtp_port'),
|
||||
"encryption" => $settings->extra_attributes?->get('smtp_encryption'),
|
||||
"username" => $settings->extra_attributes?->get('smtp_username'),
|
||||
"password" => $settings->extra_attributes?->get('smtp_password'),
|
||||
"timeout" => $settings->extra_attributes?->get('smtp_timeout'),
|
||||
"local_domain" => null,
|
||||
]);
|
||||
set_transanctional_email_settings();
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,11 @@ public function via()
|
||||
|
||||
public function toMail(User $user): MailMessage
|
||||
{
|
||||
$url = url('/') . '/reset-password/' . $this->token . '?email=' . $user->email;
|
||||
if (config('app.env') === 'local') {
|
||||
$url = url('/') . ":8000" . '/reset-password/' . $this->token . '?email=' . $user->email;
|
||||
} else {
|
||||
$url = url('/') . '/reset-password/' . $this->token . '?email=' . $user->email;
|
||||
}
|
||||
$mail = new MailMessage();
|
||||
$mail->subject('Reset Password');
|
||||
$mail->view('emails.reset-password', [
|
||||
|
@ -65,3 +65,19 @@ function is_transactional_emails_active()
|
||||
{
|
||||
return data_get(InstanceSettings::get(), 'extra_attributes.smtp_host');
|
||||
}
|
||||
|
||||
function set_transanctional_email_settings()
|
||||
{
|
||||
$settings = InstanceSettings::get();
|
||||
config()->set('mail.default', 'smtp');
|
||||
config()->set('mail.mailers.smtp', [
|
||||
"transport" => "smtp",
|
||||
"host" => $settings->extra_attributes?->get('smtp_host'),
|
||||
"port" => $settings->extra_attributes?->get('smtp_port'),
|
||||
"encryption" => $settings->extra_attributes?->get('smtp_encryption'),
|
||||
"username" => $settings->extra_attributes?->get('smtp_username'),
|
||||
"password" => $settings->extra_attributes?->get('smtp_password'),
|
||||
"timeout" => $settings->extra_attributes?->get('smtp_timeout'),
|
||||
"local_domain" => null,
|
||||
]);
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="flex items-center gap-2">
|
||||
<h1>{{ __('auth.forgot_password') }}</h1>
|
||||
</div>
|
||||
<div class="w-96">
|
||||
<div>
|
||||
@if (is_transactional_emails_active())
|
||||
<form action="/forgot-password" method="POST" class="flex flex-col gap-2">
|
||||
@csrf
|
||||
@ -18,7 +18,9 @@
|
||||
<x-forms.button type="submit">{{ __('auth.forgot_password_send_email') }}</x-forms.button>
|
||||
</form>
|
||||
@else
|
||||
'asd'
|
||||
<div>Transactional emails are not active on this instance.</div>
|
||||
<div>See how to set it in our <a class="text-white" target="_blank"
|
||||
href="https://docs.coollabs.io/coolify">docs</a>, or how to manually reset password.</div>
|
||||
@endif
|
||||
@if ($errors->any())
|
||||
<div class="text-xs text-center text-error">
|
||||
|
@ -15,37 +15,27 @@
|
||||
use App\Notifications\TransactionalEmails\ResetPasswordEmail;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Fortify\Contracts\FailedPasswordResetLinkRequestResponse;
|
||||
use Laravel\Fortify\Contracts\SuccessfulPasswordResetLinkRequestResponse;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
|
||||
|
||||
Route::post('/forgot-password', function (Request $request) {
|
||||
$request->validate([
|
||||
'email' => 'required|email',
|
||||
]);
|
||||
$user = User::whereEmail($request->email)->first();
|
||||
if (!$user->exists()) {
|
||||
return back()->withErrors([
|
||||
'email' => 'No user found with that email address.',
|
||||
]);
|
||||
}
|
||||
if (is_transactional_emails_active()) {
|
||||
$token = Str::random(64);
|
||||
$token_exists = DB::table('password_reset_tokens')->whereEmail($user->email)->first();
|
||||
if ($token_exists) {
|
||||
return back()->withErrors([
|
||||
'email' => 'Token already exists.',
|
||||
]);
|
||||
}
|
||||
DB::table('password_reset_tokens')->insert([
|
||||
'email' => $user->email,
|
||||
'token' => $token,
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
$user->notify(new ResetPasswordEmail($token));
|
||||
} else {
|
||||
// $user->sendPasswordResetNotification($user->createToken('password-reset')->plainTextToken);
|
||||
if (!is_transactional_emails_active()) {
|
||||
set_transanctional_email_settings();
|
||||
$request->validate([Fortify::email() => 'required|email']);
|
||||
$status = Password::broker(config('fortify.passwords'))->sendResetLink(
|
||||
$request->only(Fortify::email())
|
||||
);
|
||||
return $status == Password::RESET_LINK_SENT
|
||||
? app(SuccessfulPasswordResetLinkRequestResponse::class, ['status' => $status])
|
||||
: app(FailedPasswordResetLinkRequestResponse::class, ['status' => $status]);
|
||||
}
|
||||
return response()->json(['message' => 'Transactional emails are not active'], 400);
|
||||
})->name('password.forgot');
|
||||
Route::prefix('magic')->middleware(['auth'])->group(function () {
|
||||
Route::get('/servers', [MagicController::class, 'servers']);
|
||||
|
Loading…
Reference in New Issue
Block a user