/**
  * Handle user photo uploads
  *
  * @param Request $request
  * @param ImageHandlerInterface $imageHandler
  * @return \Illuminate\Http\RedirectResponse
  */
 public function upload(Request $request, ImageHandlerInterface $imageHandler)
 {
     $user = Auth::user();
     $croppedPhotoData = $request->input('photoDataURI');
     $upload = $imageHandler->uploadUserPhoto($user, $croppedPhotoData);
     // @todo Add validation to prevent any kind of injection
     $request->session()->flash($upload['flash'], $upload['message']);
     if ($request->has('redirectTo')) {
         return Response::redirectTo($request->input('redirectTo'));
     }
     return Response::redirectTo('/');
 }
 /**
  * Execute the console command.
  *
  * @param ImageHandlerInterface $imageHandler
  * @param CacheHandlerInterface $cacheHandler
  * @param SearchHandlerInterface $searchHandler
  * @return mixed
  */
 public function handle(ImageHandlerInterface $imageHandler, CacheHandlerInterface $cacheHandler, SearchHandlerInterface $searchHandler)
 {
     // Find all links with photos URLs that need thumbnails
     $links = Link::with('item', 'item.user')->whereNull('photo')->take(100)->get();
     /* @var $link \App\Models\Link */
     foreach ($links as $link) {
         // Try to generate a thumbnail for the desired photo
         try {
             $generatedFilename = $imageHandler->generateThumbnail($link->photo_url);
             if ($generatedFilename) {
                 $link->photo = $generatedFilename;
                 $link->save();
                 // Update Search
                 $searchHandler->update($link);
                 // Update cache for user
                 $cacheHandler->del(CacheHandlerInterface::MAINPAGE, $link->item->user->id);
             }
         } catch (\Exception $e) {
             error_log($e);
         }
     }
 }