History of database changes with Eloquent

I use this structure for create API

I want adding a history to certain tables, to know what the users are doing.

I saw that illuminate/database has a specific package for that illuminate/events

I have managed to make the observers work, but I can not access from the user’s session to be able to register it in the table.


    namespace Circe\Models;

    use Illuminate\Database\Eloquent\Model;

    class Events extends Model
        protected $fillable = [

        public static function boot()

            static::setEventDispatcher( new \Illuminate\Events\Dispatcher() );

            static::observe(new ReadOnlyObserver());


class ReadOnlyObserver {

    public function updating ($model, callable $func = null, $table = null, $id = null)
        // Allow for overriding of table if it's not the model table
        $table = $table ?: $model->getTable();
        // Allow for overriding of id if it's not the model id
        $id = $id ?: $model->id;
        // Allow for customization of the history record if needed
        $func = $func ?: [$this, 'getHistoryBody'];

            ->map(function ($value, $field) use ($func) {
                return call_user_func_array($func, [$value, $field]);

    protected function getHistoryBody($value, $field)
        return [
            'body' => "Updated {$field} to ${value}",

    protected function getUpdated($model)
        return collect($model->getDirty())->filter(function ($value, $key) {
            // We don't care if timestamps are dirty, we're not tracking those
            return !in_array($key, ['created_at', 'updated_at']);
        })->mapWithKeys(function ($value, $key) {
            // Take the field names and convert them into human readable strings for the description of the action
            // e.g. first_name -> first name
            return [str_replace('_', ' ', $key) => $value];

How to access the user from the ReadOnlyObserver class?

Thanks for the help.