2017-05-15 2 views
0

Ich möchte einen Audit-Trail in meinem Modell erstellen. Ich habe bereits das owen-it/laravel-Auditing-Paket via Composer installiert. Meine Frage ist, wie kann ich es in meinem Modell oder Controller implementieren. Bitte beachten Sie meinen Code für Controller und Model unten. DankSo implementieren Sie owen-it/Laravel-Auditing in einem Modell

Mein Controller:

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


} 

Für mein Modell:

<?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

Der Code, den Sie eingereicht haben, sieht gut aus. Bitte erklären Sie, was nicht funktioniert oder was Sie erwarten. Die [Dokumentation] (http://www.laravel-auditing.com/docs/4.0) sollte alles haben, was Sie brauchen. –

+0

@QuezyGarcia Ich möchte nur fragen, ob das genannte Laravel-Auditing-Paket im Standardpaket 'Auth' angewendet werden kann. – sack

+0

Ihre Frage ist nicht klar. Möchten Sie wissen, ob der [User Resolver] (http://www.laravel-auditing.com/docs/4.0/general-settings) ein anderes Paket als "Auth" (zum Beispiel "Sentinel") verwenden kann? ? –

Antwort

1

Wie ich in meinem Kommentar angegeben, das Laravel Revisionspaket nur löst eine Prüfung auf einer Datenbankoperation ein beredtes Modell beteiligt und Ereignis (standardmäßig created, updated, deleted, restored).

Having said that, hier ist eine Liste von Schritten, um eine Prüfung zu schaffen, wenn in/out Anmeldung:

  • einen Listener für das Illuminate\Auth\Events\Login Ereignis erstellen;
  • Einmal gefeuert, aktualisieren Sie eine Spalte in der users Tabelle, die den neuesten Login-Datum/Uhrzeit verfolgt (latest_login_at, zum Beispiel);
  • (Optional) Aktualisieren Sie eine Spalte mit dem vorherigen Login-Datum/Uhrzeit (last_login_at, zum Beispiel);
  • Durch diese Aktualisierungen der users Tabelle, die Auditor tritt;
  • Sie können auch nach den Ereignissen OwenIt\Auditing\Events\Auditing oder OwenIt\Auditing\Events\Audited lauschen und bei Bedarf weitere Logik anwenden;
  • Folgen Sie den gleichen Schritten für das Ereignis Illuminate\Auth\Events\Logout;
Verwandte Themen