basic analytics

This commit is contained in:
2023-01-24 18:17:36 +10:00
parent 0b1fee1cdc
commit f888c4a718
4 changed files with 92 additions and 1 deletions

View File

@@ -43,7 +43,8 @@ class Kernel extends HttpKernel
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
// \App\Http\Middleware\ForceJsonResponse::class,
'useSanctumGuard'
'useSanctumGuard',
\App\Http\Middleware\LogRequest::class,
],
];

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use App\Models\Analytics;
class LogRequest
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
// Make it an after middleware
$response = $next($request);
try {
Analytics::create([
'type' => 'pageview',
'attribute' => $request->path(),
'useragent' => $request->userAgent(),
'ip' => $request->ip(),
]);
return $response;
} catch (\Error $e) {
report($e);
return $response;
}
}
}

18
app/Models/Analytics.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Analytics extends Model
{
use HasFactory;
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = [];
}

View File

@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('analytics', function (Blueprint $table) {
$table->id();
$table->string('type');
$table->string('attribute');
$table->text('useragent');
$table->string('ip');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('analytics');
}
};