feat: use queue to send email verification (#3985)

This commit is contained in:
Alexis Saettler
2020-05-10 11:35:11 +02:00
committed by GitHub
parent 386b29dd29
commit 96a5009c1e
4 changed files with 46 additions and 4 deletions
+1
View File
@@ -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
+38
View File
@@ -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());
}
}
+2 -3
View File
@@ -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);
}
}
+5 -1
View File
@@ -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;