Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
"email": "connor@sourcetoad.com"
}
],
"minimum-stability": "dev",
"config": {
"sort-packages": true
},
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"ext-json": "*",
Expand All @@ -34,7 +37,10 @@
"laravel": {
"providers": [
"Sourcetoad\\Logger\\LoggerServiceProvider"
]
],
"aliases": {
"Logger": "Sourcetoad\\Logger\\LoggerFacade"
}
}
},
"require-dev": {
Expand Down
13 changes: 1 addition & 12 deletions src/Commands/AuditModelResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,10 @@

class AuditModelResolver extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'logger:audit-resolver';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Identifiers users associated with models/changes logged.';

public function handle()
public function handle(): void
{
AuditChange::query()->where('processed', false)->chunkById(200, function ($items) {
/** @var AuditChange $item */
Expand Down
6 changes: 1 addition & 5 deletions src/Helpers/AuditResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@

class AuditResolver
{
/**
* @param Model|null $model
* @return int|null
*/
public static function findUserId($model): ?int
public static function findUserId(Model|null $model): ?int
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about nullable type hint?

Suggested change
public static function findUserId(Model|null $model): ?int
public static function findUserId(?Model $model): ?int

{
if (empty($model)) {
return null;
Expand Down
4 changes: 1 addition & 3 deletions src/Listeners/LogExplicitLogout.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@

class LogExplicitLogout
{
public function handle(Logout $event)
public function handle(Logout $event): void
{
resolve(Logger::class)->logExplicitLogout();

return true;
}
}
2 changes: 1 addition & 1 deletion src/Listeners/LogFailedLogin.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class LogFailedLogin
{
public function handle(Failed $event)
public function handle(Failed $event): void
{
resolve(Logger::class)->logFailedLogin();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Listeners/LogLockedLogins.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class LogLockedLogins
{
public function handle(Lockout $event)
public function handle(Lockout $event): void
{
resolve(Logger::class)->logLockedLogin();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Listeners/LogPasswordReset.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class LogPasswordReset
{
public function handle(PasswordReset $passwordReset)
public function handle(PasswordReset $passwordReset): void
{
resolve(Logger::class)->logPasswordReset();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Listeners/LogSuccessfulLogin.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class LogSuccessfulLogin
{
public function handle(Login $event)
public function handle(Login $event): void
{
resolve(Logger::class)->logSuccessfulLogin();
}
Expand Down
40 changes: 17 additions & 23 deletions src/Logger.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
class Logger
{
/** @var Model[] */
private static $retrievedModels = [];
private static array $retrievedModels = [];
private static array $changedModels = [];

/** @var array */
private static $changedModels = [];
public static string $userModel = 'App/User';

public function logSuccessfulLogin()
public function logSuccessfulLogin(): AuditActivity
{
$type = ActivityType::SUCCESSFUL_LOGIN;

Expand All @@ -34,7 +34,7 @@ public function logSuccessfulLogin()
return $this->logActivity($type, $keys);
}

public function logExplicitLogout()
public function logExplicitLogout(): AuditActivity
{
$type = ActivityType::LOGOUT;

Expand All @@ -46,7 +46,7 @@ public function logExplicitLogout()
return $this->logActivity($type, $keys);
}

public function logFailedLogin()
public function logFailedLogin(): AuditActivity
{
$type = ActivityType::FAILED_LOGIN;

Expand All @@ -55,7 +55,7 @@ public function logFailedLogin()
return $this->logActivity($type, $keys);
}

public function logLockedLogin()
public function logLockedLogin(): AuditActivity
{
$type = ActivityType::LOCKED_OUT;

Expand All @@ -64,7 +64,7 @@ public function logLockedLogin()
return $this->logActivity($type, $keys);
}

public function logPasswordReset()
public function logPasswordReset(): AuditActivity
{
$type = ActivityType::PASSWORD_CHANGE;

Expand All @@ -88,7 +88,7 @@ public function logChangedModel(Model $model, array $fields): void
];
}

public function logActivity(int $type, array $keys = [])
public function logActivity(int $type, array $keys = []): AuditActivity
{
$path = Request::path();
$verb = $this->getHttpVerb(Request::method());
Expand Down Expand Up @@ -190,19 +190,13 @@ private function getNumericMorphMap(Model $model): int

private function getHttpVerb(string $verb): int
{
switch (strtolower($verb)) {
case 'get':
return HttpVerb::GET;
case 'post':
return HttpVerb::POST;
case 'patch':
return HttpVerb::PATCH;
case 'put':
return HttpVerb::PUT;
case 'delete':
return HttpVerb::DELETE;
default:
return HttpVerb::UNKNOWN;
}
return match (strtolower($verb)) {
'get' => HttpVerb::GET,
'post' => HttpVerb::POST,
'patch' => HttpVerb::PATCH,
'put' => HttpVerb::PUT,
'delete' => HttpVerb::DELETE,
default => HttpVerb::UNKNOWN,
};
}
}
2 changes: 1 addition & 1 deletion src/LoggerFacade.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

class LoggerFacade extends Facade
{
protected static function getFacadeAccessor()
protected static function getFacadeAccessor(): string
{
return 'logger';
}
Expand Down
17 changes: 9 additions & 8 deletions src/LoggerServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@
namespace Sourcetoad\Logger;

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Sourcetoad\Logger\Commands\AuditModelResolver;
use Sourcetoad\Logger\Middleware\LogOutputtedKeys;

class LoggerServiceProvider extends ServiceProvider
{
public static $morphs = [];
public static array $morphs = [];

protected $listeners = [
protected array $listeners = [
\Illuminate\Auth\Events\Login::class => [
\Sourcetoad\Logger\Listeners\LogSuccessfulLogin::class,
],
Expand All @@ -30,7 +31,7 @@ class LoggerServiceProvider extends ServiceProvider
],
];

public function boot()
public function boot(): void
{
if ($this->app->runningInConsole()) {
$this->loadMigrationsFrom(__DIR__ . '/../database/migrations');
Expand All @@ -44,7 +45,7 @@ public function boot()
], 'logger');
}

public function register()
public function register(): void
{
$this->app->singleton(Logger::class, function () {
return new Logger();
Expand All @@ -57,21 +58,21 @@ public function register()
$this->registerMiddleware();
}

private function registerMiddleware()
private function registerMiddleware(): void
{
app(Kernel::class)->pushMiddleware(LogOutputtedKeys::class);
}

private function registerMorphMaps()
private function registerMorphMaps(): void
{
self::$morphs = config('logger.morphs', []);
}

private function registerEventListeners()
private function registerEventListeners(): void
{
foreach ($this->listeners as $key => $listeners) {
foreach ($listeners as $listener) {
\Event::listen($key, $listener);
Event::listen($key, $listener);
}
}
}
Expand Down
18 changes: 4 additions & 14 deletions src/Middleware/LogOutputtedKeys.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,18 @@
use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
use Sourcetoad\Logger\Enums\ActivityType;
use Sourcetoad\Logger\Logger;

class LogOutputtedKeys
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): mixed
{
return $next($request);
}

/**
* @param Request $request
* @param $response
*/
public function terminate(Request $request, $response)
public function terminate(Request $request, $response): void
{
$leadingStatusCodeNumber = substr((string) $response->getStatusCode(), 0, 1);

Expand All @@ -48,7 +38,7 @@ public function terminate(Request $request, $response)
$data = [];
} else {
$data = [];
\Log::warning('Could not decode class to extract data keys: ' . get_class($response));
Log::warning('Could not decode class to extract data keys: ' . get_class($response));
}

if ($request->method() === 'GET') {
Expand Down
Loading