diff --git a/app/Observers/UserObserver.php b/app/Observers/UserObserver.php new file mode 100644 index 000000000..62e8a484c --- /dev/null +++ b/app/Observers/UserObserver.php @@ -0,0 +1,95 @@ +getRawOriginal() as $key => $value) { + if ($user->getRawOriginal()[$key] != $user->getAttributes()[$key]) { + + // Do not store the hashed password in changes + if ($key!='password') { + $changed[$key]['old'] = $user->getRawOriginal()[$key]; + $changed[$key]['new'] = $user->getAttributes()[$key]; + } else { + $changed[$key]['old'] = '*************'; + $changed[$key]['new'] = '*************'; + } + } + } + + $logAction = new Actionlog(); + $logAction->item_type = User::class; + $logAction->item_id = $user->id; + $logAction->created_at = date('Y-m-d H:i:s'); + $logAction->user_id = Auth::id(); + $logAction->log_meta = json_encode($changed); + $logAction->logaction('update'); + } + + /** + * Listen to the Asset created event, and increment + * the next_auto_tag_base value in the settings table when i + * a new asset is created. + * + * @param User $user + * @return void + */ + public function created(User $user) + { + $logAction = new Actionlog(); + $logAction->item_type = User::class; // can we instead say $logAction->item = $asset ? + $logAction->item_id = $user->id; + $logAction->created_at = date('Y-m-d H:i:s'); + $logAction->user_id = Auth::id(); + $logAction->logaction('create'); + } + + /** + * Listen to the User deleting event. + * + * @param User $user + * @return void + */ + public function deleting(User $user) + { + $logAction = new Actionlog(); + $logAction->item_type = User::class; + $logAction->item_id = $user->id; + $logAction->created_at = date('Y-m-d H:i:s'); + $logAction->user_id = Auth::id(); + $logAction->logaction('delete'); + } + + /** + * Listen to the User deleting event. + * + * @param User $user + * @return void + */ + public function restoring(User $user) + { + $logAction = new Actionlog(); + $logAction->item_type = User::class; + $logAction->item_id = $user->id; + $logAction->created_at = date('Y-m-d H:i:s'); + $logAction->user_id = Auth::id(); + $logAction->logaction('restore'); + } + + +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 325fb8ad1..dcd8d0127 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -7,10 +7,12 @@ use App\Models\Asset; use App\Models\Component; use App\Models\Consumable; use App\Models\License; +use App\Models\User; use App\Models\Setting; use App\Models\SnipeSCIMConfig; use App\Observers\AccessoryObserver; use App\Observers\AssetObserver; +use App\Observers\UserObserver; use App\Observers\ComponentObserver; use App\Observers\ConsumableObserver; use App\Observers\LicenseObserver; @@ -58,6 +60,7 @@ class AppServiceProvider extends ServiceProvider Schema::defaultStringLength(191); Asset::observe(AssetObserver::class); + User::observe(UserObserver::class); Accessory::observe(AccessoryObserver::class); Component::observe(ComponentObserver::class); Consumable::observe(ConsumableObserver::class);