2017-07-03 8 views
1

私の焦点は、ユーザーが有効な資格情報を使用してログインしようとすると、あなたは「まだアクティブではない、またはまだアクティブになっていません」というエラーメッセージを表示することですフィールドは0(非アクティブ)です。Laravel 5.4、ユーザーがアクティブでないときにエラーメッセージの認証ログインを表示する

LoginControllerの下の機能によってステータスが無効な場合、ユーザーをログインページにリダイレクトすることができます。

protected function credentials(\Illuminate\Http\Request $request) { 
    return ['email' => $request->{$this->username()}, 'password' => $request->password, 'status' => 1]; 

     } 

私はこれをLaravel 5.4でどのように達成できますか?

いずれのガイドも役立ちます。前もって感謝します。

+0

チェック:https://laravel.com/docs/5.4/session#flash-data – Troyer

+0

私が欲しいものではない厥。私はフラッシュメッセージについて知っています。しかし、私の質問は、ユーザーが非アクティブだが有効な詳細でログインしようとすると、フラッシュメッセージを設定する方法です。 –

答えて

5

あなたのLoginController.php

パスでsendFailedLoginResponse機能を変更しようとすることができます:アプリ\のHttpコントローラ\ \ LoginController

を照らし\のHttp \要求とApp \ユーザーを(ここではアプリケーションでインポートすることを忘れないでください\ Models \ UserはユーザーモデルをApp \ Modelsに移動したためです)。

<?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.notactivated')]; 
     } 

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

はところで、私は、\ EN \ auth.php私は(「auth.notactivated」)、トランスを使用することができますので、私のエラーメッセージなどのリソース\ LANGの行を追加します。フラッシュメッセージについて

<?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.', 
]; 
関連する問題