From 778780f3f2737189688bd00dfdf44e6d139b67fa Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sat, 30 Dec 2017 20:39:17 -0600 Subject: [PATCH] Notify admin of new user registration --- ...ener.php => NotificationEventListener.php} | 21 ++++++++++---- app/Mail/Admin/UserRegistered.php | 29 +++++++++++++++++++ app/Providers/EventServiceProvider.php | 2 +- .../views/emails/admin/registered.blade.php | 9 ++++++ 4 files changed, 55 insertions(+), 6 deletions(-) rename app/Listeners/{EmailEventListener.php => NotificationEventListener.php} (76%) create mode 100644 app/Mail/Admin/UserRegistered.php create mode 100644 resources/views/emails/admin/registered.blade.php diff --git a/app/Listeners/EmailEventListener.php b/app/Listeners/NotificationEventListener.php similarity index 76% rename from app/Listeners/EmailEventListener.php rename to app/Listeners/NotificationEventListener.php index a652d5ef..612bde2c 100644 --- a/app/Listeners/EmailEventListener.php +++ b/app/Listeners/NotificationEventListener.php @@ -2,24 +2,27 @@ namespace App\Listeners; -use App\Events\UserStateChanged; use Log; use Illuminate\Support\Facades\Mail; use App\Models\Enums\PilotState; -use \App\Events\UserRegistered; /** * Handle sending emails on different events * @package App\Listeners */ -class EmailEventListener +class NotificationEventListener { public function subscribe($events) { $events->listen( - UserRegistered::class, - 'App\Listeners\EmailEventListener@onUserRegister' + \App\Events\UserRegistered::class, + 'App\Listeners\NotificationEventListener@onUserRegister' + ); + + $events->listen( + \App\Events\UserStateChanged::class, + 'App\Listeners\NotificationEventListener@onUserStateChange' ); } @@ -34,6 +37,14 @@ class EmailEventListener . PilotState::label($event->user->state) . ', sending active email'); + # First send the admin a notification + $admin_email = setting('general.admin_email'); + if (!empty($admin_email)) { + $email = new \App\Mail\Admin\UserRegistered($event->user); + Mail::to($admin_email)->send($email); + } + + # Then notify the user if($event->user->state === PilotState::ACTIVE) { $email = new \App\Mail\UserRegistered( $event->user, diff --git a/app/Mail/Admin/UserRegistered.php b/app/Mail/Admin/UserRegistered.php new file mode 100644 index 00000000..7d1af3da --- /dev/null +++ b/app/Mail/Admin/UserRegistered.php @@ -0,0 +1,29 @@ +subject = $subject ?: 'A new user registered'; + $this->user = $user; + } + + public function build() + { + return $this->markdown('emails.admin.registered') + ->subject($this->subject) + ->with(['user' => $this->user]); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index d37720b3..39891a04 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -19,7 +19,7 @@ class EventServiceProvider extends ServiceProvider ]; protected $subscribe = [ - 'App\Listeners\EmailEventListener', + 'App\Listeners\NotificationEventListener', ]; /** diff --git a/resources/views/emails/admin/registered.blade.php b/resources/views/emails/admin/registered.blade.php new file mode 100644 index 00000000..9df1eb2b --- /dev/null +++ b/resources/views/emails/admin/registered.blade.php @@ -0,0 +1,9 @@ +@component('mail::message') +A new user has signed up! + +Name: {!! $user->name !!}! +Email: {!! $user->email !!} +State: {!! PilotState::label($user->state) !!} + +{{ config('app.name') }} +@endcomponent