diff --git a/app/Classes/ValueObjects/Constants/RouteType.php b/app/Classes/ValueObjects/Constants/RouteType.php new file mode 100644 index 00000000..f2e43f78 --- /dev/null +++ b/app/Classes/ValueObjects/Constants/RouteType.php @@ -0,0 +1,11 @@ + [ 'throttle:300,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\ApiRouteLogs::class, ], ]; diff --git a/app/Http/Middleware/ApiRouteLogs.php b/app/Http/Middleware/ApiRouteLogs.php new file mode 100644 index 00000000..984ff5ea --- /dev/null +++ b/app/Http/Middleware/ApiRouteLogs.php @@ -0,0 +1,64 @@ +fullUrl()); + $request_method = $request->method(); + $platform = $request->header('sec-ch-ua-platform'); + $browser = Str::after($request->header('sec-ch-ua'), 'Not?A_Brand";v="8", "Chromium";v="108", "'); + $geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$ip_address")); + $longitude = $geo["geoplugin_longitude"]; + $latitude = $geo["geoplugin_latitude"]; + $last_page = url()->previous(); + $countryName = $geo["geoplugin_countryName"]; + + $user_id = Auth::user() ? Auth::user()->id : 0; + + // if ($user_id != 0) { + // // $ip_address + // $webRouteLogWithSameIp = RouteLog::where('ip_address', $ip_address)->where('user_id', 0)->get(); + // dd($webRouteLogWithSameIp); + // foreach($webRouteLogWithSameIp as $result){ + // $result + // } + // } + + $route_log = [ + 'user_id' => $user_id, + // 'ip_address' => $request->ip(), + 'ip_address' => $ip_address, + 'url' => $url, + 'request_method' => $request_method, + 'browser' => $browser, + 'platform' => $platform, + 'longitude' => $longitude, + 'latitude' => $latitude, + 'last_page' => $last_page, + 'countryname' => $countryName, + 'route_type' => RouteType::API, + ]; + + RouteLog::create($route_log); + + return $next($request); + } +} diff --git a/app/Http/Middleware/WebRouteLogs.php b/app/Http/Middleware/WebRouteLogs.php new file mode 100644 index 00000000..b5200de6 --- /dev/null +++ b/app/Http/Middleware/WebRouteLogs.php @@ -0,0 +1,55 @@ +fullUrl(); + $request_method = $request->method(); + $platform = $request->header('sec-ch-ua-platform'); + $browser = Str::after($request->header('sec-ch-ua'), 'Not?A_Brand";v="8", "Chromium";v="108", "'); + $geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$ip_address")); + $longitude = $geo["geoplugin_longitude"]; + $latitude = $geo["geoplugin_latitude"]; + $last_page = url()->previous(); + $countryName = $geo["geoplugin_countryName"]; + + $route_log = [ + 'user_id' => Auth::user() ? Auth::user()->id : 0, + // 'ip_address' => $request->ip(), + 'ip_address' => $ip_address, + 'url' => $url, + 'request_method' => $request_method, + 'browser' => $browser, + 'platform' => $platform, + 'longitude' => $longitude, + 'latitude' => $latitude, + 'last_page' => $last_page, + 'countryname' => $countryName, + 'route_type' => RouteType::WEB, + ]; + + // dd($route_log); + + RouteLog::create($route_log); + + return $next($request); + } +} diff --git a/app/Models/RouteLog.php b/app/Models/RouteLog.php new file mode 100644 index 00000000..5d99a604 --- /dev/null +++ b/app/Models/RouteLog.php @@ -0,0 +1,22 @@ +id(); + $table->foreignId('user_id')->unsigned(); + $table->string('ip_address'); + $table->string('url', 255); + $table->string('request_method'); + $table->string('browser')->nullable(); + $table->string('platform')->nullable(); + $table->string('longitude')->nullable(); + $table->string('latitude')->nullable(); + $table->string('last_page')->nullable(); + $table->string('countryname')->nullable(); + $table->integer('route_type'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('route_logs'); + } +}