From b3cc8f7031f69d6a230907abd7f5b75406da81f2 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Wed, 3 Aug 2016 12:13:51 +0100 Subject: [PATCH] Added more user events --- .../Events/User/UserFailedTwoAuthEvent.php | 41 +++++++++++++++++++ app/Bus/Events/User/UserLoggedInEvent.php | 41 +++++++++++++++++++ app/Bus/Events/User/UserLoggedOutEvent.php | 41 +++++++++++++++++++ .../Events/User/UserPassedTwoAuthEvent.php | 41 +++++++++++++++++++ .../Providers/EventServiceProvider.php | 12 ++++++ app/Http/Controllers/AuthController.php | 13 ++++++ 6 files changed, 189 insertions(+) create mode 100644 app/Bus/Events/User/UserFailedTwoAuthEvent.php create mode 100644 app/Bus/Events/User/UserLoggedInEvent.php create mode 100644 app/Bus/Events/User/UserLoggedOutEvent.php create mode 100644 app/Bus/Events/User/UserPassedTwoAuthEvent.php diff --git a/app/Bus/Events/User/UserFailedTwoAuthEvent.php b/app/Bus/Events/User/UserFailedTwoAuthEvent.php new file mode 100644 index 00000000..c416e317 --- /dev/null +++ b/app/Bus/Events/User/UserFailedTwoAuthEvent.php @@ -0,0 +1,41 @@ + + */ +final class UserFailedTwoAuthEvent implements UserEventInterface +{ + /** + * The user that failed two auth. + * + * @var \CachetHQ\Cachet\Models\User + */ + public $user; + + /** + * Create a new user failed two auth event instance. + * + * @param \CachetHQ\Cachet\Models\User $user + * + * @return void + */ + public function __construct(User $user) + { + $this->user = $user; + } +} diff --git a/app/Bus/Events/User/UserLoggedInEvent.php b/app/Bus/Events/User/UserLoggedInEvent.php new file mode 100644 index 00000000..a10d1547 --- /dev/null +++ b/app/Bus/Events/User/UserLoggedInEvent.php @@ -0,0 +1,41 @@ + + */ +final class UserLoggedInEvent implements UserEventInterface +{ + /** + * The user that logged in. + * + * @var \CachetHQ\Cachet\Models\User + */ + public $user; + + /** + * Create a new user logged in event instance. + * + * @param \CachetHQ\Cachet\Models\User $user + * + * @return void + */ + public function __construct(User $user) + { + $this->user = $user; + } +} diff --git a/app/Bus/Events/User/UserLoggedOutEvent.php b/app/Bus/Events/User/UserLoggedOutEvent.php new file mode 100644 index 00000000..9c51c6e3 --- /dev/null +++ b/app/Bus/Events/User/UserLoggedOutEvent.php @@ -0,0 +1,41 @@ + + */ +final class UserLoggedOutEvent implements UserEventInterface +{ + /** + * The user that logged out. + * + * @var \CachetHQ\Cachet\Models\User + */ + public $user; + + /** + * Create a new user logged out event instance. + * + * @param \CachetHQ\Cachet\Models\User $user + * + * @return void + */ + public function __construct(User $user) + { + $this->user = $user; + } +} diff --git a/app/Bus/Events/User/UserPassedTwoAuthEvent.php b/app/Bus/Events/User/UserPassedTwoAuthEvent.php new file mode 100644 index 00000000..be775510 --- /dev/null +++ b/app/Bus/Events/User/UserPassedTwoAuthEvent.php @@ -0,0 +1,41 @@ + + */ +final class UserPassedTwoAuthEvent implements UserEventInterface +{ + /** + * The user that passed two auth. + * + * @var \CachetHQ\Cachet\Models\User + */ + public $user; + + /** + * Create a new user passed two auth event instance. + * + * @param \CachetHQ\Cachet\Models\User $user + * + * @return void + */ + public function __construct(User $user) + { + $this->user = $user; + } +} diff --git a/app/Foundation/Providers/EventServiceProvider.php b/app/Foundation/Providers/EventServiceProvider.php index aaff317e..051f3e8e 100644 --- a/app/Foundation/Providers/EventServiceProvider.php +++ b/app/Foundation/Providers/EventServiceProvider.php @@ -87,6 +87,18 @@ class EventServiceProvider extends ServiceProvider 'CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasVerifiedEvent' => [ // ], + 'CachetHQ\Cachet\Bus\Events\User\UserFailedTwoAuthEvent' => [ + // + ], + 'CachetHQ\Cachet\Bus\Events\User\UserLoggedInEvent' => [ + // + ], + 'CachetHQ\Cachet\Bus\Events\User\UserLoggedOutEvent' => [ + // + ], + 'CachetHQ\Cachet\Bus\Events\User\UserPassedTwoAuthEvent' => [ + // + ], 'CachetHQ\Cachet\Bus\Events\User\UserWasAddedEvent' => [ // ], diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index b6d63570..950f0434 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -11,6 +11,9 @@ namespace CachetHQ\Cachet\Http\Controllers; +use CachetHQ\Cachet\Bus\Events\User\UserFailedTwoAuthEvent; +use CachetHQ\Cachet\Bus\Events\User\UserLoggedOutEvent; +use CachetHQ\Cachet\Bus\Events\User\UserPassedTwoAuthEvent; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Auth; @@ -62,6 +65,8 @@ class AuthController extends Controller // We probably want to add support for "Remember me" here. Auth::attempt($loginData); + event(new UserLoggedInEvent(Auth::user())); + return Redirect::intended('dashboard'); } @@ -99,8 +104,14 @@ class AuthController extends Controller $valid = Google2FA::verifyKey(Auth::user()->google_2fa_secret, $code); if ($valid) { + event(new UserPassedTwoAuthEvent(Auth::user())); + + event(new UserLoggedInEvent(Auth::user())); + return Redirect::intended('dashboard'); } else { + event(new UserFailedTwoAuthEvent(Auth::user())); + // Failed login, log back out. Auth::logout(); @@ -118,6 +129,8 @@ class AuthController extends Controller */ public function logoutAction() { + event(new UserLoggedOutEvent(Auth::user())); + Auth::logout(); return Redirect::to('/');