2016-08-07 5 views
0

이전 버전의 laravel에서 뿌리가 치기 전에 해고 된 일부 논리를 설정할 수 있음을 기억합니다. 내가 뭘 찾고 있어요 것은 :Laravel 5.2 보내기 전/루트가 발생 함 확인 조건

if(Auth::check()) 
{ 
    if(!Auth::user()->email || is_null(Auth::user()->email)) 
    { 
     return redirect('/dashboard')->with('error', 'You have not provided an email address'); 
    } 
} 

이유는 내가 사회적 로그인이 트위터 로그인이 이메일 주소를 제공하거나 일부 페이스 북 로그인을하지 않는 것.

대시 보드로 사용자를 리디렉션하는 것보다 더 나은 옵션을 생각하면 이메일 양식을 추가하십시오. 등록 할 때 이벤트 처리자와 수신자를 통해 환영 이메일을 보내면 이메일을 보내 주시면됩니다. 이벤트를 시작하기 전에 컨트롤러에서 동일한 로직.

+2

미들웨어에서이 파일을 추가하십시오. –

답변

1

이 검사를 수행하는 middleware을 추가하거나 응용 프로그램의 기존 Authenticate 미들웨어에 다른 조건으로 추가 할 수 있습니다.

코드가 추가 된 Laravel 5.2의 기본값은 Authenticate 미들웨어입니다. (이 파일은 app/Http/Middleware/Authenticate.php에 있습니다.)

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class Authenticate 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->guest()) { 
      if ($request->ajax() || $request->wantsJson()) { 
       return response('Unauthorized.', 401); 
      } 
      return redirect()->guest('login'); 
     } 

     /* YOUR ADDED CODE STARTS HERE */ 

     // Note that you don't need to call `Auth::check` because 
     // `Auth::guest` has already been called above and has returned 
     // `false` in order to get here. 

     if(!Auth::user()->email || is_null(Auth::user()->email)) 
     { 
      return redirect('/dashboard')->with('error', 'You have not provided an email address'); 
     } 

     /* YOUR ADDED CODE ENDS HERE */ 

     return $next($request); 

    } 

}