Как внедрить в модель owen-it / laravel-auditing

Я хочу создать контрольный журнал в моей модели. Я уже установил пакет 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';
}

0

Решение

Как я уже говорил в своем комментарии, пакет аудита 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 событие;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector