diff --git a/composer.json b/composer.json index 5cf7ebd..5a9db89 100644 --- a/composer.json +++ b/composer.json @@ -18,9 +18,10 @@ "require": { "php": "^8.4", "illuminate/contracts": "^12.0", - "illuminate/support": "^12.0", "illuminate/http": "^12.0", - "spatie/laravel-package-tools": "^1.16" + "illuminate/support": "^12.0", + "spatie/laravel-package-tools": "^1.16", + "spatie/laravel-stats": "^2.3" }, "require-dev": { "laravel/pint": "^1.14", diff --git a/src/Concerns/HasStatsAfterEvents.php b/src/Concerns/HasStatsAfterEvents.php new file mode 100644 index 0000000..c650c3c --- /dev/null +++ b/src/Concerns/HasStatsAfterEvents.php @@ -0,0 +1,34 @@ + StatsWriter::for(StatsEvent::class, ['name' => $model::statsClass()])->increase()); + }); + + static::deleted(function (Model $model) { + dispatch(fn() => StatsWriter::for(StatsEvent::class, ['name' => $model::statsClass()])->decrease()); + }); + } + + public static function statsQuery(): StatsQuery + { + return StatsQuery::for(StatsEvent::class, [ + 'name' => static::statsClass(), + ]); + } + + public static function statsClass(): string + { + return static::class; + } +} \ No newline at end of file diff --git a/src/Libraries/helpers.php b/src/Libraries/helpers.php index 8d882dd..786b9f9 100644 --- a/src/Libraries/helpers.php +++ b/src/Libraries/helpers.php @@ -1,5 +1,6 @@ ascii() + ->replace(['/', '\\', ':', '*', '?', '"', '<', '>', '|'], '-') + ->trim() + ->toString(); + } +} diff --git a/src/Middleware/IsDeveloper.php b/src/Middleware/IsDeveloper.php new file mode 100644 index 0000000..5ae9abf --- /dev/null +++ b/src/Middleware/IsDeveloper.php @@ -0,0 +1,19 @@ +check() && ! auth()->user()->is_dev) { + abort(403); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/src/Stats/LoginStat.php b/src/Stats/LoginStat.php new file mode 100644 index 0000000..55bbdbf --- /dev/null +++ b/src/Stats/LoginStat.php @@ -0,0 +1,7 @@ +