Add pageview logging via PostHog

This commit is contained in:
floppydiskette 2024-06-11 21:36:58 +01:00
parent 210363d173
commit e89a7bb329
Signed by: fwoppydwisk
SSH key fingerprint: SHA256:Hqn452XQ1ETzUt/FthJu6+OFkS4NBxCv5VQSEvuk7CE
7 changed files with 114 additions and 14 deletions

View file

@ -26,3 +26,6 @@ MEMCACHED_HOST=127.0.0.1
LASTFM_KEY= LASTFM_KEY=
LASTFM_USER= LASTFM_USER=
POSTHOG_KEY=
POSTHOG_HOST=

View file

@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use PostHog\PostHog;
use Symfony\Component\HttpFoundation\Response;
class PageView
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
PostHog::capture([
'distinctId' => request()->ip(),
'event' => '$pageview',
'properties' => array(
'$current_url' => url()->current(),
),
]);
return $next($request);
}
}

View file

@ -2,23 +2,27 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use PostHog\PostHog;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider {
{
/** /**
* Register any application services. * Register any application services.
*/ */
public function register(): void public function register(): void {
{
// //
} }
/** /**
* Bootstrap any application services. * Bootstrap any application services.
*/ */
public function boot(): void public function boot(): void {
{ PostHog::init(
// Config::get('services.posthog.key'),
[
'host' => 'https://'.Config::get('services.posthog.host')
]
);
} }
} }

View file

@ -10,6 +10,7 @@
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10", "laravel/framework": "^10.10",
"laravel/tinker": "^2.8", "laravel/tinker": "^2.8",
"posthog/posthog-php": "^3.3",
"scrivo/highlight.php": "v9.18.1.10", "scrivo/highlight.php": "v9.18.1.10",
"sentry/sentry-laravel": "^4.1", "sentry/sentry-laravel": "^4.1",
"spatie/laravel-honeypot": "^4.3", "spatie/laravel-honeypot": "^4.3",

56
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "c228a32331b8e43e449ba12dc4439757", "content-hash": "3204be06a1b7a37cc0af50a0babca0a0",
"packages": [ "packages": [
{ {
"name": "auth0/auth0-php", "name": "auth0/auth0-php",
@ -3041,6 +3041,60 @@
], ],
"time": "2023-11-12T21:59:55+00:00" "time": "2023-11-12T21:59:55+00:00"
}, },
{
"name": "posthog/posthog-php",
"version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/PostHog/posthog-php.git",
"reference": "34301d0f20e20b785d465c574557278d18620f31"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PostHog/posthog-php/zipball/34301d0f20e20b785d465c574557278d18620f31",
"reference": "34301d0f20e20b785d465c574557278d18620f31",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": ">=8.0"
},
"require-dev": {
"overtrue/phplint": "^3.0",
"phpunit/phpunit": "^9.0",
"slope-it/clock-mock": "^0.4.0",
"squizlabs/php_codesniffer": "^3.7"
},
"bin": [
"bin/posthog"
],
"type": "library",
"autoload": {
"psr-4": {
"PostHog\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PostHog <hey@posthog.com>",
"homepage": "https://posthog.com/"
}
],
"description": "PostHog PHP Library",
"homepage": "https://github.com/PostHog/posthog-php",
"keywords": [
"posthog"
],
"support": {
"issues": "https://github.com/PostHog/posthog-php/issues",
"source": "https://github.com/PostHog/posthog-php/tree/3.3.2"
},
"time": "2024-04-03T13:19:42+00:00"
},
{ {
"name": "psr-discovery/all", "name": "psr-discovery/all",
"version": "1.0.1", "version": "1.0.1",

View file

@ -17,5 +17,10 @@
'lastfm' => [ 'lastfm' => [
'key' => env('LASTFM_KEY'), 'key' => env('LASTFM_KEY'),
'user' => env('LASTFM_USER'), 'user' => env('LASTFM_USER'),
],
'posthog' => [
'key' => env('POSTHOG_KEY'),
'host' => env('POSTHOG_HOST'),
] ]
]; ];

View file

@ -9,6 +9,7 @@
use App\Http\Controllers\GuestbookController; use App\Http\Controllers\GuestbookController;
use App\Http\Controllers\HomeController; use App\Http\Controllers\HomeController;
use App\Http\Controllers\MusicController; use App\Http\Controllers\MusicController;
use App\Http\Middleware\PageView;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
@ -22,14 +23,18 @@
| |
*/ */
// Run the PageView middleware for *all* public GET routes
Route::middleware(PageView::class)->group(function () {
Route::get('/', [HomeController::class, 'show']); Route::get('/', [HomeController::class, 'show']);
Route::get('/bookmarks', [BookmarksController::class, 'show']); Route::get('/bookmarks', [BookmarksController::class, 'show']);
Route::get('/guestbook', [GuestbookController::class, 'show']); Route::get('/guestbook', [GuestbookController::class, 'show']);
Route::post('/guestbook', [GuestbookController::class, 'addEntry'])
->middleware('rate_limit');
Route::get('/calculators', [CalculatorsController::class, 'show']); Route::get('/calculators', [CalculatorsController::class, 'show']);
Route::get('/computers', [ComputersController::class, 'show']); Route::get('/computers', [ComputersController::class, 'show']);
Route::get('/music', [MusicController::class, 'show']); Route::get('/music', [MusicController::class, 'show']);
});
Route::post('/guestbook', [GuestbookController::class, 'addEntry'])
->middleware('rate_limit');
// Admin pages // Admin pages
Route::get('/admin/guestbook', [AdminGuestbookController::class, 'show']) Route::get('/admin/guestbook', [AdminGuestbookController::class, 'show'])