【问题标题】:How to implement owen-it/laravel-auditing in a model如何在模型中实现 owen-it/laravel-auditing
【发布时间】:2017-10-13 17:27:21
【问题描述】:

我想在我的模型中创建审计跟踪。我已经通过 Composer 安装了 owen-it/laravel-auditing 包。我的问题是如何在我的模型或控制器中实现它。请在下面查看我的控制器和模型代码。谢谢

我的控制器:

<?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';
}

【问题讨论】:

  • 您提交的代码看起来不错。请解释什么不起作用,或者您期望看到/发生什么。 documentation 应该有你需要的一切。
  • @QuetzyGarcia 只是想问一下说的 laravel-auditing 包是否可以应用在默认包 'Auth' 中?
  • 您的问题不清楚。您想知道user resolver 是否可以使用其他包而不是Auth(例如Sentinel)?
  • @QuetzyGarcia 我指的是登录,因为我使用的是“Auth”。我对那个 laravel-auditing 包的理解是,它不记录查看或登录。它只记录一些数据更改或注销,对吧?
  • 包审计数据库操作,所以如果你想审计登录/注销,每次发生时你都必须在数据库中创建一条记录。

标签: php laravel model laravel-5.4 audit


【解决方案1】:

就像我在评论中所说的,Laravel 审计包只会触发对涉及 Eloquent 模型和事件的数据库操作的审计(默认情况下,createdupdateddeletedrestored)。

话虽如此,以下是登录/注销时创建审核的步骤列表:

  • Illuminate\Auth\Events\Login 事件创建监听器;
  • 一旦触发,更新users 表中跟踪最新登录日期/时间的列(例如latest_login_at);
  • (可选)使用以前的登录日期/时间更新列(例如last_login_at);
  • 通过对users 表进行这些更新,Auditor 开始发挥作用;
  • 您还可以侦听OwenIt\Auditing\Events\AuditingOwenIt\Auditing\Events\Audited 事件并在需要时应用更多逻辑;
  • Illuminate\Auth\Events\Logout 事件执行相同的步骤;

【讨论】:

  • 我正在寻找一种审核自定义事件(如登录和注销)的方法,您能否详细说明您的答案以阐明如何实现此目标@Quetzy Garcia
  • 你到底有什么不明白的?
猜你喜欢
  • 2016-02-28
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 2021-11-29
  • 2014-05-31
  • 2019-03-21
相关资源
最近更新 更多