Files
coolify/app/Notifications/TransactionalEmails/EmailChangeVerification.php
Andras Bacsai ee502b9f76 feat(email): implement email change request and verification process
- Added functionality for users to request an email change, including generating a verification code and setting an expiration time.
- Implemented methods in the User model to handle email change requests, code validation, and confirmation.
- Created a new job to update the user's email in Stripe after confirmation.
- Introduced rate limiting for email change requests and verification attempts to prevent abuse.
- Added a new notification for email change verification.
- Updated the profile component to manage email change requests and verification UI.
2025-08-18 14:54:08 +02:00

44 lines
1.2 KiB
PHP

<?php
namespace App\Notifications\TransactionalEmails;
use App\Models\User;
use App\Notifications\Channels\TransactionalEmailChannel;
use App\Notifications\CustomEmailNotification;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Carbon;
class EmailChangeVerification extends CustomEmailNotification
{
public function via(): array
{
return [TransactionalEmailChannel::class];
}
public function __construct(
public User $user,
public string $verificationCode,
public string $newEmail,
public Carbon $expiresAt,
public bool $isTransactionalEmail = true
) {
$this->onQueue('high');
}
public function toMail(): MailMessage
{
// Use the configured expiry minutes value
$expiryMinutes = config('constants.email_change.verification_code_expiry_minutes', 10);
$mail = new MailMessage;
$mail->subject('Coolify: Verify Your New Email Address');
$mail->view('emails.email-change-verification', [
'newEmail' => $this->newEmail,
'verificationCode' => $this->verificationCode,
'expiryMinutes' => $expiryMinutes,
]);
return $mail;
}
}