Я хочу создать контрольный журнал в моей модели. Я уже установил пакет owen-it / laravel-auditing через Composer. Мой вопрос заключается в том, как я могу реализовать это в моей модели или контроллере. Пожалуйста, смотрите мой код для контроллера и модели ниже. Спасибо
Мой контроллер:
<?php
namespace App\Http\Controllers;
use App\Events\Test;
use App\Letter;
use App\Notifications\LetterNotification;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Validator;
class LetterController extends Controller
{
public function viewLetter()
{
return view('welcome');
}
/**
* Saves email into database
*
* @param array $data
* @return Letter
*/
protected function create(array $data)
{
$letter = Letter::create([
'email' => $data['email']
]);
$this->letterNotify($letter);
return $letter;
}
/**
* Validates email
*/
public function createLetter(Request $request)
{
$this->validate($request,[
'email' => 'required|email|max:255|unique:letters'
],[
'email.required' => 'Email is required.',
'email.unique' => 'Already registered.',
'email.email' => 'Please put a valid Email address'
]);
$this->create($request->all());
return redirect('/')->with('info','You are now registered.');
}
protected function letterNotify($letter)
{`enter code here`
Notification::send($letter, new LetterNotification($letter));
}}
Для моей модели:
<?php
namespace App;
use OwenIt\Auditing\Auditable;
use OwenIt\Auditing\Contracts\Auditable as AuditableContract;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
class Letter extends Model implements AuditableContract
{
use Notifiable;
use Auditable;
protected $fillable = ['email'];
protected $table = 'letters';
}
Как я уже говорил в своем комментарии, пакет аудита Laravel только запускает аудит операции с базой данных, включающей модель и событие Eloquent (по умолчанию created
, updated
, deleted
, restored
).
Сказав это, вот список шагов для создания аудита при входе / выходе:
Illuminate\Auth\Events\Login
событие;users
таблица, которая отслеживает последнюю дату / время входа в систему (latest_login_at
, например);last_login_at
, например);users
стол, Auditor
удары в;OwenIt\Auditing\Events\Auditing
или же OwenIt\Auditing\Events\Audited
события и применять больше логики, если это необходимо;Illuminate\Auth\Events\Logout
событие;Других решений пока нет …