add event types and ip detection
This commit is contained in:
@@ -54,7 +54,7 @@ class EventType
|
||||
return [
|
||||
'Illuminate\\Auth\\Events\\Attempting' => self::ATTEMPTING,
|
||||
'Illuminate\\Auth\\Events\\Failed' => self::FAILED,
|
||||
'Illuminate\Auth\Events\Lockout' => self::LOCKOUT,
|
||||
'Illuminate\\Auth\\Events\\Lockout' => self::LOCKOUT,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -87,4 +87,22 @@ class EventType
|
||||
|
||||
return self::laravelDefaultEvents()[$event] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Log type
|
||||
*/
|
||||
public static function logType(string $name): string
|
||||
{
|
||||
return match ($name) {
|
||||
self::REGISTER => 'notice',
|
||||
self::LOGIN => 'notice',
|
||||
self::PHONE_VERIFICATION => 'info',
|
||||
self::LOGOUT => 'notice',
|
||||
self::PASSWORD_RESET => 'info',
|
||||
self::FAILED => 'warning',
|
||||
self::ATTEMPTING => 'info',
|
||||
self::LOCKOUT => 'alert',
|
||||
default => 'info',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,17 @@ use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Psr7\Request as GuzzleRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Stevebauman\Location\Facades\Location;
|
||||
|
||||
/**
|
||||
* Check if a client IP is in our Server subnet
|
||||
*
|
||||
* @param string $server_ip
|
||||
*/
|
||||
function isLocalIp(string $ip = ''): bool
|
||||
{
|
||||
return ! filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Un mask phone from "+(993)-xx-xx-xx-xx"
|
||||
@@ -67,7 +78,7 @@ function sendSMSVerification(string|int $phone_number): ?Verification
|
||||
function storeAuthEvent(string $name, Request $request): void
|
||||
{
|
||||
Log::channel('auth_activity')
|
||||
->info(sprintf(
|
||||
->{EventType::logType($name)}(sprintf(
|
||||
'%s, APP_NAME: %s, REQUEST_TYPE: %s, SOURCE_IP: %s, SOURCE_PORT: %s, SOURCE_URL: %s, DESTINATION_IP: %s, DESTINATION_PORT: %s, DESTINATION_COUNTRY: %s, USER_ID: %s',
|
||||
$name,
|
||||
config('app.name'),
|
||||
@@ -77,7 +88,7 @@ function storeAuthEvent(string $name, Request $request): void
|
||||
$request->url(),
|
||||
$request->host(),
|
||||
$request->getPort(),
|
||||
'tk',
|
||||
isLocalIp($request->ip()) ? 'TM' : Location::get($request->ip()),
|
||||
$request->user()->id ?? '-',
|
||||
));
|
||||
}
|
||||
@@ -100,7 +111,7 @@ function storeResourceEvent(string $name, array $data, Request $request): void
|
||||
}
|
||||
|
||||
Log::channel('resource_activity')
|
||||
->info(sprintf(
|
||||
->{EventType::logType($name)}(sprintf(
|
||||
'%s, APP_NAME: %s, REQUEST_TYPE: %s, SOURCE_IP: %s, SOURCE_PORT: %s, SOURCE_URL: %s, DESTINATION_IP: %s, DESTINATION_PORT: %s, DESTINATION_COUNTRY: %s, USER_ID: %s, MODEL_NAME: %s, BEFORE: %s, AFTER: %s',
|
||||
$name,
|
||||
config('app.name'),
|
||||
@@ -110,7 +121,7 @@ function storeResourceEvent(string $name, array $data, Request $request): void
|
||||
$request->url(),
|
||||
$request->host(),
|
||||
$request->getPort(),
|
||||
'tk',
|
||||
isLocalIp($request->ip()) ? 'TM' : Location::get($request->ip()),
|
||||
$request->user()->id ?? '-',
|
||||
get_class($data[0]),
|
||||
json_encode($before),
|
||||
|
||||
@@ -23,8 +23,9 @@ class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
Model::shouldBeStrict(! app()->isProduction());
|
||||
|
||||
Event::listen(['eloquent.created: *', 'eloquent.updated: *', 'eloquent.deleted: *'], function (string $eventName, array $data) {
|
||||
storeResourceEvent($eventName, $data, request());
|
||||
});
|
||||
Event::listen(
|
||||
events: ['eloquent.created: *', 'eloquent.updated: *', 'eloquent.deleted: *'],
|
||||
listener: fn (string $eventName, array $data) => storeResourceEvent($eventName, $data, request())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user