Laravel Community Tools by Tighten
Laravel Nova icon Nova Packages

Readme

Nova tool for activity log

StyleCI Packagist Downloads Packagist Version GitHub FOSSA Status

A tool to activity logger to monitor the users of your Laravel Nova.

screenshot

Installation

You can install the package in to a Laravel app that uses Nova via composer:

composer require bolechen/nova-activitylog

You can publish the migration with:

php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations"

Note: The default migration assumes you are using integers for your model IDs. If you are using UUIDs, or some other format, adjust the format of the subject_id and causer_id fields in the published migration before continuing.

After publishing the migration you can create the activity_log table by running the migrations:

php artisan migrate

You can optionally publish the config file with:

php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"

You may only want to log actions from nova, put this line to your .env files let default logger off.

ACTIVITY_LOGGER_ENABLED=false

How to use

Next up, you must register the tool with Nova. This is typically done in the tools method of the NovaServiceProvider.

// in app/Providers/NovaServiceProvder.php

// ...

public function tools()
{
    return [
        // ...
        new \Bolechen\NovaActivitylog\NovaActivitylog(),
    ];
}

Because the backend uses the spatie/laravel-activitylog package, you need to let your model use the Spatie\Activitylog\Traits\LogsActivity trait.

Here's an example:

use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;

class NewsItem extends Model
{
    use LogsActivity;

    protected $fillable = ['name', 'text'];
    
    protected static $logAttributes = ['name', 'text'];
}

For more advanced usage can look at the doc: https://docs.spatie.be/laravel-activitylog/v3/advanced-usage/logging-model-events

Authorizing

Typical usage of tool authorizing using ->canSee() or ->canSeeWhen() when registering the tool will NOT work. To authorize the tool, simply make and register a Laravel policy for the ActivityLog model. If a user is not able to view them according to the policy, the tool will not show.

Customize

If you want to customize the tools. Eg: add filters or cards, you can create your owner resource file extends the original like this:

use Bolechen\NovaActivitylog\Resources\Activitylog;

class Activity extends Activitylog
{
    public function filters(Request $request)
    {
        return [
            // Your customize filters, etc...
            new Filters\LogsType(),
        ];
    }
}

Next up, publish the config file with:

php artisan vendor:publish --provider="Bolechen\\NovaActivitylog\\ToolServiceProvider" --tag="config"

And change the resource in config/nova-activitylog.php to your custom nova resource.

License

The MIT License (MIT). Please see License File for more information.

FOSSA Status

Screenshots

Reviews

By M.Furkan BABUR on December 3, 2021

Those who have problems in Laravel 8 should use the following code in the model. public function getActivitylogOptions(): LogOptions { return LogOptions::defaults(); }

By Oleksandr Roskovynskyi on January 25, 2020

How do I restrict/set permissions for specific user roles? For example, how can some users not be able to edit and delete entries?

Back to Top
Added 6 years ago
Last updated 10 Months Ago
Version v0.5.1
Nova Version ^4.0|^5.0
Composer
bolechen/nova-activitylog
GitHub stars 99
Packagist downloads 659,734

Favorites

34 users favorited

Rating

4.30
(out of 5)
★★★★★
★★★★
★★★
★★
6 ratings

Contributors

Brought to you by Tighten

Issues/Feature Requests Stats Package Ideas