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')