diff --git a/.env.example b/.env.example index c79758db..4f344dbe 100644 --- a/.env.example +++ b/.env.example @@ -59,6 +59,9 @@ RESEND_API_KEY= # Drip Emails (welcome, onboarding, promo codes, etc.) DRIP_EMAILS_ENABLED=true +# Email Verification (disable in local to auto-verify new users) +EMAIL_VERIFICATION_ENABLED=false + AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index aebff5e4..e18b759c 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -30,10 +30,16 @@ class CreateNewUser implements CreatesNewUsers 'password' => $this->passwordRules(), ])->validate(); - return User::create([ + $user = User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => $input['password'], ]); + + if (! config('mail.email_verification_enabled')) { + $user->markEmailAsVerified(); + } + + return $user; } } diff --git a/config/mail.php b/config/mail.php index 457ad3f0..af5c76e4 100644 --- a/config/mail.php +++ b/config/mail.php @@ -15,6 +15,19 @@ return [ 'drip_emails_enabled' => env('DRIP_EMAILS_ENABLED', true), + /* + |-------------------------------------------------------------------------- + | Email Verification + |-------------------------------------------------------------------------- + | + | When disabled, new users are automatically verified at registration. + | This is useful for local development where emails are not delivered. + | Enabled by default for production environments. + | + */ + + 'email_verification_enabled' => env('EMAIL_VERIFICATION_ENABLED', true), + /* |-------------------------------------------------------------------------- | Default Mailer diff --git a/tests/Feature/Auth/RegistrationTest.php b/tests/Feature/Auth/RegistrationTest.php index 7b76ba19..0bf3f732 100644 --- a/tests/Feature/Auth/RegistrationTest.php +++ b/tests/Feature/Auth/RegistrationTest.php @@ -54,3 +54,20 @@ test('new users are not verified after registration', function () { expect($user->hasVerifiedEmail())->toBeFalse(); }); + +test('new users are auto-verified when email verification is disabled', function () { + Queue::fake(); + + config(['mail.email_verification_enabled' => false]); + + $this->post(route('register.store'), [ + 'name' => 'Test User', + 'email' => 'test@example.com', + 'password' => 'password', + 'password_confirmation' => 'password', + ]); + + $user = User::where('email', 'test@example.com')->first(); + + expect($user->hasVerifiedEmail())->toBeTrue(); +});