#124: Updated the user self-registration required and user self-activated e-mails to be notifications so they can be queued.
This commit is contained in:
parent
216c93a750
commit
624334570f
@ -6,9 +6,7 @@ use App\EmailLog;
|
|||||||
use App\Facade\UserConfig;
|
use App\Facade\UserConfig;
|
||||||
use App\Http\Middleware\GlobalConfiguration;
|
use App\Http\Middleware\GlobalConfiguration;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Mail\Mailer;
|
|
||||||
use Illuminate\Mail\Message;
|
use Illuminate\Mail\Message;
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
|
|
||||||
class SendEmailsCommand extends Command
|
class SendEmailsCommand extends Command
|
||||||
{
|
{
|
||||||
@ -40,8 +38,6 @@ class SendEmailsCommand extends Command
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
GlobalConfiguration::updateMailConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,6 +52,10 @@ class SendEmailsCommand extends Command
|
|||||||
$this->output->error('E-mail queueing is not enabled. E-mails are being sent immediately.');
|
$this->output->error('E-mail queueing is not enabled. E-mails are being sent immediately.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->output->writeln('Setting mail configuration');
|
||||||
|
|
||||||
|
GlobalConfiguration::updateMailConfig();
|
||||||
|
|
||||||
$this->output->writeln('E-mail queue runner started');
|
$this->output->writeln('E-mail queue runner started');
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
|
@ -6,13 +6,12 @@ use App\Facade\Theme;
|
|||||||
use App\Facade\UserConfig;
|
use App\Facade\UserConfig;
|
||||||
use App\Helpers\MiscHelper;
|
use App\Helpers\MiscHelper;
|
||||||
use App\Helpers\RecaptchaHelper;
|
use App\Helpers\RecaptchaHelper;
|
||||||
use App\Mail\UserActivationRequired;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Notifications\UserActivationRequired;
|
||||||
use App\Traits\ActivatesUsers;
|
use App\Traits\ActivatesUsers;
|
||||||
use App\User;
|
use App\User;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
class RegisterController extends Controller
|
class RegisterController extends Controller
|
||||||
@ -135,7 +134,7 @@ class RegisterController extends Controller
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Send activation e-mail
|
// Send activation e-mail
|
||||||
Mail::to($user)->send(new UserActivationRequired($user));
|
$user->notify(new UserActivationRequired());
|
||||||
$request->session()->flash('info', trans('auth.activation_required_message'));
|
$request->session()->flash('info', trans('auth.activation_required_message'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,9 @@ use Illuminate\Bus\Queueable;
|
|||||||
use Illuminate\Mail\Mailable;
|
use Illuminate\Mail\Mailable;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: This does not need converting to a notification. It should always be sent immediately and not queued.
|
||||||
|
*/
|
||||||
class TestMailConfig extends Mailable
|
class TestMailConfig extends Mailable
|
||||||
{
|
{
|
||||||
use Queueable, SerializesModels;
|
use Queueable, SerializesModels;
|
||||||
|
@ -6,11 +6,9 @@ use App\Facade\Theme;
|
|||||||
use App\Facade\UserConfig;
|
use App\Facade\UserConfig;
|
||||||
use App\User;
|
use App\User;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Mail\Mailable;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
|
|
||||||
class UserActivationRequired extends Mailable
|
class UserActivationRequired extends MailableBase
|
||||||
{
|
{
|
||||||
use Queueable, SerializesModels;
|
use Queueable, SerializesModels;
|
||||||
|
|
||||||
|
@ -6,10 +6,9 @@ use App\Facade\Theme;
|
|||||||
use App\Facade\UserConfig;
|
use App\Facade\UserConfig;
|
||||||
use App\User;
|
use App\User;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Mail\Mailable;
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
class UserSelfActivated extends Mailable
|
class UserSelfActivated extends MailableBase
|
||||||
{
|
{
|
||||||
use Queueable, SerializesModels;
|
use Queueable, SerializesModels;
|
||||||
|
|
||||||
|
53
app/Notifications/DatabaseEmailNotification.php
Normal file
53
app/Notifications/DatabaseEmailNotification.php
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Notifications;
|
||||||
|
|
||||||
|
use App\EmailLog;
|
||||||
|
use App\Facade\UserConfig;
|
||||||
|
use Illuminate\Mail\Mailable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables a notification to use a Mailable to write to the database.
|
||||||
|
*/
|
||||||
|
trait DatabaseEmailNotification
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the notification's delivery channels.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function via($notifiable)
|
||||||
|
{
|
||||||
|
$drivers = [];
|
||||||
|
|
||||||
|
if (UserConfig::get('queue_emails'))
|
||||||
|
{
|
||||||
|
$drivers[] = QueueEmailDatabaseChannel::class;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$drivers[] = 'mail';
|
||||||
|
$drivers[] = SentEmailDatabaseChannel::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $drivers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the EmailLog entry to write to the database.
|
||||||
|
* @param $notifiable
|
||||||
|
* @return EmailLog
|
||||||
|
*/
|
||||||
|
public function toEmailDatabase($notifiable)
|
||||||
|
{
|
||||||
|
return $this->toMail($notifiable)->buildEmailLog();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function setPropertiesOnMailable(Mailable $mailable, $notifiable)
|
||||||
|
{
|
||||||
|
// Set to and from properties accordingly
|
||||||
|
$mailable->from(UserConfig::get('sender_address'), UserConfig::get('sender_name'));
|
||||||
|
$mailable->to($notifiable->email, $notifiable->name);
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Notifications;
|
namespace App\Notifications;
|
||||||
|
|
||||||
use App\Facade\UserConfig;
|
|
||||||
use App\Mail\MailableBase;
|
use App\Mail\MailableBase;
|
||||||
use App\Mail\ResetMyPassword;
|
use App\Mail\ResetMyPassword;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
@ -11,6 +10,7 @@ use Illuminate\Notifications\Notification;
|
|||||||
class ResetPassword extends Notification
|
class ResetPassword extends Notification
|
||||||
{
|
{
|
||||||
use Queueable;
|
use Queueable;
|
||||||
|
use DatabaseEmailNotification;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The password reset token.
|
* The password reset token.
|
||||||
@ -30,34 +30,6 @@ class ResetPassword extends Notification
|
|||||||
$this->token = $token;
|
$this->token = $token;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the notification's delivery channels.
|
|
||||||
*
|
|
||||||
* @param mixed $notifiable
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function via($notifiable)
|
|
||||||
{
|
|
||||||
$drivers = [];
|
|
||||||
|
|
||||||
if (UserConfig::get('queue_emails'))
|
|
||||||
{
|
|
||||||
$drivers[] = QueueEmailDatabaseChannel::class;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$drivers[] = 'mail';
|
|
||||||
$drivers[] = SentEmailDatabaseChannel::class;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $drivers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toEmailDatabase($notifiable)
|
|
||||||
{
|
|
||||||
return $this->toMail($notifiable)->buildEmailLog();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the mail representation of the notification.
|
* Get the mail representation of the notification.
|
||||||
*
|
*
|
||||||
@ -66,12 +38,10 @@ class ResetPassword extends Notification
|
|||||||
*/
|
*/
|
||||||
public function toMail($notifiable)
|
public function toMail($notifiable)
|
||||||
{
|
{
|
||||||
$notification = new ResetMyPassword($notifiable, $this->token);
|
$mailable = new ResetMyPassword($notifiable, $this->token);
|
||||||
|
|
||||||
// Set to and from properties accordingly
|
$this->setPropertiesOnMailable($mailable, $notifiable);
|
||||||
$notification->from(UserConfig::get('sender_address'), UserConfig::get('sender_name'));
|
|
||||||
$notification->to($notifiable->email, $notifiable->name);
|
|
||||||
|
|
||||||
return $notification;
|
return $mailable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
39
app/Notifications/UserActivationRequired.php
Normal file
39
app/Notifications/UserActivationRequired.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Notifications;
|
||||||
|
|
||||||
|
use App\Mail\MailableBase;
|
||||||
|
use App\Mail\UserActivationRequired as UserActivationRequiredMailable;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Notifications\Notification;
|
||||||
|
|
||||||
|
class UserActivationRequired extends Notification
|
||||||
|
{
|
||||||
|
use Queueable;
|
||||||
|
use DatabaseEmailNotification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new notification instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the mail representation of the notification.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return \Illuminate\Notifications\Messages\MailMessage|MailableBase
|
||||||
|
*/
|
||||||
|
public function toMail($notifiable)
|
||||||
|
{
|
||||||
|
$mailable = new UserActivationRequiredMailable($notifiable);
|
||||||
|
|
||||||
|
$this->setPropertiesOnMailable($mailable, $notifiable);
|
||||||
|
|
||||||
|
return $mailable;
|
||||||
|
}
|
||||||
|
}
|
42
app/Notifications/UserSelfActivated.php
Normal file
42
app/Notifications/UserSelfActivated.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Notifications;
|
||||||
|
|
||||||
|
use App\Mail\MailableBase;
|
||||||
|
use App\Mail\UserSelfActivated as UserSelfActivatedMailable;
|
||||||
|
use App\User;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Notifications\Notification;
|
||||||
|
|
||||||
|
class UserSelfActivated extends Notification
|
||||||
|
{
|
||||||
|
use Queueable;
|
||||||
|
use DatabaseEmailNotification;
|
||||||
|
|
||||||
|
private $createdUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new notification instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(User $createdUser)
|
||||||
|
{
|
||||||
|
$this->createdUser = $createdUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the mail representation of the notification.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return \Illuminate\Notifications\Messages\MailMessage|MailableBase
|
||||||
|
*/
|
||||||
|
public function toMail($notifiable)
|
||||||
|
{
|
||||||
|
$mailable = new UserSelfActivatedMailable($notifiable, $this->createdUser);
|
||||||
|
|
||||||
|
$this->setPropertiesOnMailable($mailable, $notifiable);
|
||||||
|
|
||||||
|
return $mailable;
|
||||||
|
}
|
||||||
|
}
|
@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Traits;
|
namespace App\Traits;
|
||||||
|
|
||||||
use App\Mail\UserSelfActivated;
|
use App\Notifications\UserSelfActivated;
|
||||||
use App\User;
|
use App\User;
|
||||||
use App\UserActivity;
|
use App\UserActivity;
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
|
|
||||||
trait ActivatesUsers
|
trait ActivatesUsers
|
||||||
{
|
{
|
||||||
@ -30,7 +29,7 @@ trait ActivatesUsers
|
|||||||
/** @var User $adminUser */
|
/** @var User $adminUser */
|
||||||
foreach ($adminUsers as $adminUser)
|
foreach ($adminUsers as $adminUser)
|
||||||
{
|
{
|
||||||
Mail::to($adminUser)->send(new UserSelfActivated($adminUser, $createdUser));
|
$adminUser->notify(new UserSelfActivated($createdUser));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user