From 34492b413ec2ca2512e83a21b2f07b22a845b92c Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 29 Apr 2019 13:27:37 -0400 Subject: [PATCH 1/6] fix: match mutator in terms of getting md5 from route --- src/Models/AuditRoute.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/AuditRoute.php b/src/Models/AuditRoute.php index 2315c87..b50f952 100644 --- a/src/Models/AuditRoute.php +++ b/src/Models/AuditRoute.php @@ -39,7 +39,7 @@ protected function setRouteAttribute($value) public static function createOrFind(string $route): AuditRoute { - $routeHash = md5(strtolower($route)); + $routeHash = md5(strtolower(trim($route))); /** @var AuditRoute $route */ $route = AuditRoute::query()->firstOrCreate([ From d4d6b4eb5ab4df9e2d5c96248582028c4f0b8989 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 1 Jul 2019 14:04:54 -0400 Subject: [PATCH 2/6] build: add translation package --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c14665d..40ff1d5 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,8 @@ "php": ">=7.1.3", "illuminate/config": "5.6.*", "illuminate/database": "5.6.*", - "illuminate/support": "5.6.*" + "illuminate/support": "5.6.*", + "illuminate/translation": "5.6.*" }, "autoload": { "psr-4": { From 7a150c1c47c8558c88801be7b0c7e969178a5704 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 1 Jul 2019 14:10:25 -0400 Subject: [PATCH 3/6] style: add missing property (verb) --- src/Models/AuditActivity.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Models/AuditActivity.php b/src/Models/AuditActivity.php index 45b88f2..7eb8681 100644 --- a/src/Models/AuditActivity.php +++ b/src/Models/AuditActivity.php @@ -18,6 +18,7 @@ * @property int|null $entity_id * @property int $type * @property string $ip_address + * @property int $verb * @property Carbon $created_at * @property-read AuditRoute $route * @property-read AuditKey $key From f0dc79235e18932afd1780071d6779a3cc131175 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 1 Jul 2019 14:10:37 -0400 Subject: [PATCH 4/6] feat: basic translations for verbs/activities --- resources/lang/en/enums.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 resources/lang/en/enums.php diff --git a/resources/lang/en/enums.php b/resources/lang/en/enums.php new file mode 100644 index 0000000..6b0974c --- /dev/null +++ b/resources/lang/en/enums.php @@ -0,0 +1,21 @@ + 'Failed Login', + 'activity_type_logout' => 'Logout', + 'activity_type_logged_in' => 'Logged In', + 'activity_type_locked_out' => 'Locked Out', + 'activity_type_password_change' => 'Password Change', + 'activity_type_get_data' => 'Get Data', + 'activity_type_modify_data' => 'Modify Data', + + // verbs + 'verb_get' => 'GET', + 'verb_post' => 'POST', + 'verb_patch' => 'PATCH', + 'verb_put' => 'PUT', + 'verb_delete' => 'DELETE', + 'verb_unknown' => 'UNKNOWN', +]; \ No newline at end of file From 3b309c4228942e75e930348991803050821d1c87 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 1 Jul 2019 14:16:48 -0400 Subject: [PATCH 5/6] fix: load proper translations --- src/LoggerServiceProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/LoggerServiceProvider.php b/src/LoggerServiceProvider.php index 5fc9fc0..1b440c7 100644 --- a/src/LoggerServiceProvider.php +++ b/src/LoggerServiceProvider.php @@ -37,6 +37,7 @@ public function boot() $this->commands([AuditModelResolver::class]); } + $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'logger'); $this->mergeConfigFrom(__DIR__ . '/../config/logger.php', 'logger'); $this->publishes([ __DIR__ . '/../config/logger.php' => config_path('logger.php') From c6373108a1a4c0257df6b8c34e143118d383da93 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 1 Jul 2019 14:17:02 -0400 Subject: [PATCH 6/6] feat: add methods for human readable verb/activity --- src/Models/AuditActivity.php | 57 ++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/Models/AuditActivity.php b/src/Models/AuditActivity.php index 7eb8681..be34cde 100644 --- a/src/Models/AuditActivity.php +++ b/src/Models/AuditActivity.php @@ -5,6 +5,8 @@ use App\User; use Carbon\Carbon; +use Sourcetoad\Logger\Enums\ActivityType; +use Sourcetoad\Logger\Enums\HttpVerb; use Sourcetoad\Logger\Traits\Immutable; /** @@ -23,6 +25,8 @@ * @property-read AuditRoute $route * @property-read AuditKey $key * @property-read User $user + * @property-read string $human_verb + * @property-read string $human_activity */ class AuditActivity extends BaseModel { @@ -61,6 +65,59 @@ public function setUpdatedAtAttribute($value) { // Nothing } + + public function getHumanVerbAttribute(): string + { + switch ($this->verb) { + case HttpVerb::GET: + return trans('logger::enums.verb_get'); + + case HttpVerb::POST: + return trans('logger::enums.verb_post'); + + case HttpVerb::PATCH: + return trans('logger::enums.verb_patch'); + + case HttpVerb::PUT: + return trans('logger::enums.verb_patch'); + + case HttpVerb::DELETE: + return trans('logger::enums.verb_delete'); + + case HttpVerb::UNKNOWN: + default: + return trans('logger::enums.verb_unknown'); + } + } + + public function getHumanActivityAttribute(): string + { + switch ($this->type) { + case ActivityType::FAILED_LOGIN: + return trans('logger::enums.activity_type_failed_login'); + + case ActivityType::LOGOUT: + return trans('logger::enums.activity_type_logout'); + + case ActivityType::SUCCESSFUL_LOGIN: + return trans('logger::enums.activity_type_logged_in'); + + case ActivityType::LOCKED_OUT: + return trans('logger::enums.activity_type_locked_out'); + + case ActivityType::PASSWORD_CHANGE: + return trans('logger::enums.activity_type_password_change'); + + case ActivityType::GET_DATA: + return trans('logger::enums.activity_type_get_data'); + + case ActivityType::MODIFY_DATA: + return trans('logger::enums.activity_type_modify_data'); + + default: + throw new \Exception('Unknown enum type: ' . $this->type); + } + } //-------------------------------------------------------------------------------------------------------------- // Relations