/**
  * Setup user detection.
  *
  * @param \Bugsnag\Client    $client
  * @param \Silex\Application $app
  *
  * @return void
  */
 protected function setupUserDetection(Client $client, Application $app)
 {
     try {
         $tokens = $app['security.token_storage'];
         $checker = $app['security.authorization_checker'];
     } catch (InvalidArgumentException $e) {
         return;
     }
     $client->registerCallback(new CustomUser(function () use($tokens, $checker) {
         $token = $tokens->getToken();
         if (!$token || !$checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
             return;
         }
         $user = $token->getUser();
         if ($user instanceof UserInterface) {
             return ['id' => $user->getUsername()];
         }
         return ['id' => (string) $user];
     }));
 }
 /**
  * Setup the callbacks.
  *
  * @param \Bugsnag\Client                           $client
  * @param \Illuminate\Contracts\Container\Container $app
  * @param array                                     $config
  *
  * @return void
  */
 protected function setupCallbacks(Client $client, Container $app, array $config)
 {
     if (!isset($config['callbacks']) || $config['callbacks']) {
         $client->registerDefaultCallbacks();
         $client->registerCallback(function (Report $report) use($app) {
             $tracker = $app->make(Tracker::class);
             if ($context = $tracker->context()) {
                 $report->setContext($context);
             }
             if ($job = $tracker->get()) {
                 $report->setMetaData(['job' => $job]);
             }
         });
     }
     if (!isset($config['user']) || $config['user']) {
         $client->registerCallback(new CustomUser(function () use($app) {
             if ($user = $app->auth->user()) {
                 return $user->toArray();
             }
         }));
     }
 }