diff --git a/app/Events/EventType.php b/app/Events/EventType.php
index dd268db..1c01426 100644
--- a/app/Events/EventType.php
+++ b/app/Events/EventType.php
@@ -5,22 +5,67 @@ namespace App\Events;
class EventType
{
/**
- * When user logs in application
+ * When user registers to application
*/
public const REGISTER = 'REGISTER';
/**
- * When user logs in application
+ * When user logs into application
*/
public const LOGIN = 'LOGIN';
/**
- * When user logs in application
+ * When user verifies phone number
+ */
+ public const PHONE_VERIFICATION = 'PHONE_VERIFICATION';
+
+ /**
+ * When user logs out of application
*/
public const LOGOUT = 'LOGOUT';
/**
- * When user logs in application
+ * When user resets password
*/
public const PASSWORD_RESET = 'PASSWORD_RESET';
+
+ /**
+ * When user resets password
+ */
+ public const FAILED = 'FAILED';
+
+ /**
+ * When user resets password
+ */
+ public const ATTEMPTING = 'ATTEMPTING';
+
+ /**
+ * When user resets password
+ */
+ public const LOCKOUT = 'LOCKOUT';
+
+ /**
+ * Laravel's default events
+ */
+ public static function laravelDefaultEvents(): array
+ {
+ return [
+ 'Illuminate\\Auth\\Events\\Attempting' => self::ATTEMPTING,
+ 'Illuminate\\Auth\\Events\\Failed' => self::FAILED,
+ 'Illuminate\Auth\Events\Lockout' => self::LOCKOUT,
+ ];
+ }
+
+ /**
+ * Guest the event
+ * @param object $event
+ */
+ public static function guessEvent(string|object $event): string
+ {
+ if (is_object($event)) {
+ $event = get_class($event);
+ }
+
+ return self::laravelDefaultEvents()[$event] ?? '';
+ }
}
diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php
index dab2489..5402ea1 100644
--- a/app/Helpers/helpers.php
+++ b/app/Helpers/helpers.php
@@ -1,7 +1,6 @@
login($user);
+ storeAuthEvent(EventType::REGISTER, $request);
+
sendSMSVerification($user->phone);
return to_route('sms-verification');
@@ -109,6 +112,8 @@ class RegisterController extends Controller
'phone_verified_at' => now(),
]);
+ storeAuthEvent(EventType::PHONE_VERIFICATION, $request);
+
return redirect(Nova::path());
}
}
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
index d01673e..419a51f 100644
--- a/app/Http/Controllers/Auth/ResetPasswordController.php
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Auth;
+use App\Events\EventType;
use App\Http\Controllers\Controller;
use App\Models\System\Verification;
use App\Models\User;
@@ -97,6 +98,8 @@ class ResetPasswordController extends Controller
{
$user->update(['password' => bcrypt($request->password)]);
+ storeAuthEvent(EventType::PASSWORD_RESET, request());
+
return response()->json([
'step' => 3,
'message' => __('Your password has been updated'),
diff --git a/app/Listeners/AuthFailedListener.php b/app/Listeners/AuthFailedListener.php
new file mode 100644
index 0000000..bf17b5f
--- /dev/null
+++ b/app/Listeners/AuthFailedListener.php
@@ -0,0 +1,24 @@
+ ['App\Listeners\LoginListener'],
'Illuminate\Auth\Events\Logout' => ['App\Listeners\LogoutListener'],
+ 'Illuminate\Auth\Events\Attempting' => ['App\Listeners\AuthFailedListener'],
+ 'Illuminate\Auth\Events\Failed' => ['App\Listeners\AuthFailedListener'],
+ 'Illuminate\Auth\Events\Lockout' => ['App\Listeners\AuthFailedListener'],
];
/**
diff --git a/resources/views/vendor/nova/pages/login.blade.php b/resources/views/vendor/nova/pages/login.blade.php
index 4813568..325ded2 100644
--- a/resources/views/vendor/nova/pages/login.blade.php
+++ b/resources/views/vendor/nova/pages/login.blade.php
@@ -27,7 +27,7 @@
-
+
@error('username')