2017-02-26 6 views
0

임 건물 인증 프로세스 laravel 5.4 기본 인증을 사용하여, 나의 계획은 내가에 로그인하기 전에 '활성화해야합니다 사용자 이메일'몇 가지 추가 조건을 확인하려는 것입니다 쇼 오류 메시지 인증 로그인,Laravel 5.4, 사용자가 활성화되지

나는 내 소원 등이

protected function attemptLogin(Request $request) 
{     
    $qLogin = [ 
     'user_email'  => $this->credentials($request)[$this->username()], 
     'password'   => $this->credentials($request)[$this->password()], 
     'active'   => 1 
    ];   


    return $this->guard()->attempt(
     $qLogin, $request->has('remember') 
    ); 
} 

코드 유효성 검사처럼 내 인 LoginController에 방법 attempLogin를 오버라이드 (override)하는 것을 시도했다, 그러나 나는, 그/그녀가/경우 이메일을 활성 확인해야합니다 사용자에게 몇 가지 오류 메시지를 표시 할 그들이 로그인하려면

laravel 님, 죄송합니다. 도움을 받으실 수 있습니다.

+0

동일한 문제가 있습니다. –

답변

0

사용자가 활성화되었는지 확인하기 위해 자격 증명 기능을 추가 할 수 있습니다. sendFailedLoginResponse 함수를 수정하여 오류 메시지를 사용자 정의 할 수 있습니다.

경로 : 응용 프로그램 \ HTTP를 컨트롤러

가를 분명히 \ HTTP를 \ 요청 및 앱 \ 사용자를 (다음 앱 \ 모델이 나는 앱 \ 모델 내 사용자 모델을 이동 사용하기 때문에 \입니다) 가져 기억 인 LoginController \ \;

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 
use Illuminate\Http\Request; 
use App\Models\User; 


class LoginController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Login Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles authenticating users for the application and 
    | redirecting them to your home screen. The controller uses a trait 
    | to conveniently provide its functionality to your applications. 
    | 
    */ 

    use AuthenticatesUsers; 

    /** 
    * Where to redirect users after login. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/home'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest')->except('logout'); 
    } 

    protected function credentials(Request $request) { 
     return array_merge($request->only($this->username(), 'password'), ['active' => 1]); 
    } 

    /** 
    * Get the failed login response instance. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\RedirectResponse 
    */ 
    protected function sendFailedLoginResponse(Request $request) 
    { 
     $errors = [$this->username() => trans('auth.failed')]; 

     // Load user from database 
     $user = User::where($this->username(), $request->{$this->username()})->first(); 

     // Check if user was successfully loaded, that the password matches 
     // and active is not 1. If so, override the default error message. 
     if ($user && \Hash::check($request->password, $user->password) && $user->active != 1) { 
      $errors = [$this->username() => trans('auth.noactive')]; 
     } 

     if ($request->expectsJson()) { 
      return response()->json($errors, 422); 
     } 
     return redirect()->back() 
      ->withInput($request->only($this->username(), 'remember')) 
      ->withErrors($errors); 
    } 
} 

는 그런데, 나는 \ EN \ auth.php 내가 ('auth.notactivated') 트랜스 사용할 수 있도록 내 오류 메시지로 자원 \ 랭의 라인을 추가합니다.

<?php 

return [ 
    'failed' => 'These credentials do not match our records.', 
    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 
    'notactivated' => 'This account has not been activated yet.', 
];