From 412c11913199dfb20bc02ca1adf0f41a86232ce4 Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Wed, 9 Dec 2015 15:29:41 -0600 Subject: [PATCH 1/3] Added subcriber verified scope and already subscribed msg --- .../Incident/SendIncidentEmailNotificationHandler.php | 2 +- .../SendMaintenanceEmailNotificationHandler.php | 2 +- app/Http/Controllers/SubscribeController.php | 5 +++++ app/Models/Subscriber.php | 10 ++++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php b/app/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php index 6e8ed357..7c1dcbb6 100644 --- a/app/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php +++ b/app/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php @@ -65,7 +65,7 @@ class SendIncidentEmailNotificationHandler // Only send emails for public incidents. if ($event->incident->visible === 1) { - foreach ($this->subscriber->all() as $subscriber) { + foreach ($this->subscriber->verified()->get() as $subscriber) { $mail = [ 'email' => $subscriber->email, 'subject' => 'New incident reported.', diff --git a/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php b/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php index 70530ce2..77c61454 100644 --- a/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php +++ b/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php @@ -62,7 +62,7 @@ class SendMaintenanceEmailNotificationHandler $data = AutoPresenter::decorate($event->incident); - foreach ($this->subscriber->all() as $subscriber) { + foreach ($this->subscriber->verified()->get() as $subscriber) { $mail = [ 'email' => $subscriber->email, 'subject' => 'Scheduled maintenance.', diff --git a/app/Http/Controllers/SubscribeController.php b/app/Http/Controllers/SubscribeController.php index 6cb348ad..21173bf2 100644 --- a/app/Http/Controllers/SubscribeController.php +++ b/app/Http/Controllers/SubscribeController.php @@ -15,6 +15,7 @@ use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Commands\Subscriber\SubscribeSubscriberCommand; use CachetHQ\Cachet\Commands\Subscriber\UnsubscribeSubscriberCommand; use CachetHQ\Cachet\Commands\Subscriber\VerifySubscriberCommand; +use CachetHQ\Cachet\Exceptions\AlreadySubscribedException; use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Subscriber; use GrahamCampbell\Binput\Facades\Binput; @@ -50,6 +51,10 @@ class SubscribeController extends Controller { try { $this->dispatch(new SubscribeSubscriberCommand(Binput::get('email'))); + } catch (AlreadySubscribedException $e) { + return Redirect::route('subscribe.subscribe') + ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.subscriber.email.failure'))) + ->withErrors($e->getMessage()); } catch (ValidationException $e) { return Redirect::route('subscribe.subscribe') ->withInput(Binput::all()) diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php index 4d3adbe5..fb86b843 100644 --- a/app/Models/Subscriber.php +++ b/app/Models/Subscriber.php @@ -62,6 +62,16 @@ class Subscriber extends Model implements HasPresenter }); } + /** + * Scope a query to only include verified subscribers. + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeVerified($query) + { + return $query->whereNotNull('verified_at'); + } + /** * Determines if the subscriber is verified. * From e5c90b25b24b10d92a64459510e5f54c94694c61 Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Wed, 9 Dec 2015 17:32:18 -0600 Subject: [PATCH 2/3] Make subscribers is verified a attribute getter --- app/Http/Controllers/SubscribeController.php | 4 ++-- app/Models/Subscriber.php | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/SubscribeController.php b/app/Http/Controllers/SubscribeController.php index 21173bf2..8c4e5145 100644 --- a/app/Http/Controllers/SubscribeController.php +++ b/app/Http/Controllers/SubscribeController.php @@ -81,7 +81,7 @@ class SubscribeController extends Controller $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - if (!$subscriber || $subscriber->verified()) { + if (!$subscriber || $subscriber->is_verified) { throw new BadRequestHttpException(); } @@ -106,7 +106,7 @@ class SubscribeController extends Controller $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - if (!$subscriber || !$subscriber->verified()) { + if (!$subscriber || !$subscriber->is_verified) { throw new BadRequestHttpException(); } diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php index fb86b843..8e03c55c 100644 --- a/app/Models/Subscriber.php +++ b/app/Models/Subscriber.php @@ -14,6 +14,7 @@ namespace CachetHQ\Cachet\Models; use AltThree\Validator\ValidatingTrait; use CachetHQ\Cachet\Presenters\SubscriberPresenter; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Builder; use McCool\LaravelAutoPresenter\HasPresenter; class Subscriber extends Model implements HasPresenter @@ -65,9 +66,11 @@ class Subscriber extends Model implements HasPresenter /** * Scope a query to only include verified subscribers. * + * @param \Illuminate\Database\Eloquent\Builder $query + * * @return \Illuminate\Database\Eloquent\Builder */ - public function scopeVerified($query) + public function scopeVerified(Builder $query) { return $query->whereNotNull('verified_at'); } @@ -77,7 +80,7 @@ class Subscriber extends Model implements HasPresenter * * @return bool */ - public function verified() + public function getIsVerifiedAttribute() { return $this->verified_at !== null; } From f1772a210862c9f4a50091d3647d5a35499b2858 Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Wed, 9 Dec 2015 18:38:06 -0500 Subject: [PATCH 3/3] Applied fixes from StyleCI --- app/Models/Subscriber.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php index 8e03c55c..8303641f 100644 --- a/app/Models/Subscriber.php +++ b/app/Models/Subscriber.php @@ -13,8 +13,8 @@ namespace CachetHQ\Cachet\Models; use AltThree\Validator\ValidatingTrait; use CachetHQ\Cachet\Presenters\SubscriberPresenter; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; use McCool\LaravelAutoPresenter\HasPresenter; class Subscriber extends Model implements HasPresenter