add lockout, failed and attemting events
This commit is contained in:
@@ -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] ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Models\System\Verification;
|
||||
use Exception;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Psr7\Request as GuzzleRequest;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -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;
|
||||
@@ -48,6 +49,8 @@ class RegisterController extends Controller
|
||||
|
||||
Auth::guard()->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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'),
|
||||
|
||||
24
app/Listeners/AuthFailedListener.php
Normal file
24
app/Listeners/AuthFailedListener.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\EventType;
|
||||
|
||||
class AuthFailedListener
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*/
|
||||
public function handle(object $event): void
|
||||
{
|
||||
storeAuthEvent(EventType::guessEvent($event), request());
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,9 @@ class EventServiceProvider extends ServiceProvider
|
||||
protected $listen = [
|
||||
'Illuminate\Auth\Events\Login' => ['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'],
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<label class="block mb-2" for="username">
|
||||
{{ __('Username') }}
|
||||
</label>
|
||||
<input class="form-control form-input form-input-bordered w-full @error('username') form-input-border-error @enderror" id="username" type="text" name="username" autofocus="">
|
||||
<input class="form-control form-input form-input-bordered w-full @error('username') form-input-border-error @enderror" id="username" type="text" name="username" autofocus="" value="{{ old('username') }}">
|
||||
|
||||
@error('username')
|
||||
<span class="text-red-500 text-italic">
|
||||
|
||||
Reference in New Issue
Block a user