2016-07-14 2 views
0

Mon objectif est de transmettre le contexte utilisateur comme un e-mail ou un ID à Sentry pour que je puisse voir quels utilisateurs ont cassé quelque chose.Impossible de faire passer user_context dans Sentry avec Laravel 5.1

J'ai configuré un composant de Global Middleware pour ajouter du contexte utilisateur à mes erreurs Sentry. Voici la classe:

 class AddUserToSentry 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 

     if(Auth::user()) 
     { 
      //dd(Auth::user()->email); 
      app('sentry')->user_context(array(
       'email' => Auth::user()->email 
      )); 
     } 
     return $next($request); 
    } 
} 

Dans mon Handler.php je:

/** 
* Report or log an exception. 
* 
* This is a great spot to send exceptions to Sentry, Bugsnag, etc. 
* 
* @param \Exception $e 
* @return void 
*/ 
public function report(Exception $e) 
{ 

    if ($this->shouldReport($e)) { 
     app('sentry')->captureException($e); 

    } 
    parent::report($e); 
} 

Qu'est-ce que je manque pour faire ce travail? Tout ce que j'obtiens pour le contexte utilisateur est l'adresse IP, ce qui n'est pas très utile dans mon cas.

Merci beaucoup,

Josh

Répondre

0

Vous devez fournir un accès à Auth Façade de Laravel dans votre contrôleur comme ceci:

Use Auth;

1

Voici un exemple complet, le source provient de la documentation officielle de Sentry. Pour éviter d'avoir à ajouter use Auth;, vous pouvez simplement utiliser la fonction d'assistance auth().

namespace App\Http\Middleware; 

use Closure; 

class SentryContext 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure     $next 
    * 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if (app()->bound('sentry')) { 
      /** @var \Raven_Client $sentry */ 
      $sentry = app('sentry'); 

      // Add user context 
      if (auth()->check()) { 
       $sentry->user_context(['id' => auth()->user()->id, 'email' => auth()->user()->email]); 
      } 

      // Add tags context 
      // $sentry->tags_context(['foo' => 'bar']); 
     } 

     return $next($request); 
    } 
}