feat: use queue to send email verification (#3985)
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Use queue to send email verification
|
||||
* Improve autocomplete fields on signup and login forms
|
||||
* Add cache for S3 storage, and use new standard variables
|
||||
* Remove authentication with login+password for carddav
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Models\User\User;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Auth\Notifications\VerifyEmail;
|
||||
|
||||
class SendVerifyEmail implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(User $user)
|
||||
{
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->user->notify(new VerifyEmail());
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
namespace App\Models\User;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Journal\Day;
|
||||
use App\Jobs\SendVerifyEmail;
|
||||
use App\Models\Settings\Term;
|
||||
use App\Models\Account\Account;
|
||||
use App\Models\Contact\Contact;
|
||||
@@ -11,7 +11,6 @@ use App\Helpers\ComplianceHelper;
|
||||
use App\Models\Settings\Currency;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Auth\Notifications\VerifyEmail;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
@@ -245,7 +244,7 @@ class User extends Authenticatable implements MustVerifyEmail, HasLocalePreferen
|
||||
/** @var int $count */
|
||||
$count = Account::count();
|
||||
if (config('monica.signup_double_optin') && $count > 1) {
|
||||
$this->notify(new VerifyEmail());
|
||||
SendVerifyEmail::dispatch($this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Services\User;
|
||||
|
||||
use App\Models\User\User;
|
||||
use App\Services\BaseService;
|
||||
use App\Models\Account\Account;
|
||||
|
||||
class EmailChange extends BaseService
|
||||
{
|
||||
@@ -37,7 +38,9 @@ class EmailChange extends BaseService
|
||||
// Change email of the user
|
||||
$user->email = $data['email'];
|
||||
|
||||
if (config('monica.signup_double_optin')) {
|
||||
/** @var int $count */
|
||||
$count = Account::count();
|
||||
if (config('monica.signup_double_optin') && $count > 1) {
|
||||
// Resend validation token
|
||||
$user->email_verified_at = null;
|
||||
$user->save();
|
||||
@@ -45,6 +48,7 @@ class EmailChange extends BaseService
|
||||
$user->sendEmailVerificationNotification();
|
||||
} else {
|
||||
$user->save();
|
||||
$user->markEmailAsVerified();
|
||||
}
|
||||
|
||||
return $user;
|
||||
|
||||
Reference in New Issue
Block a user