2016-09-28 5 views
3

私はLaravel Authentication(クイックスタート)を使用しました。しかし、ユーザーのステータス(承認済み/保留中)を確認する必要があります。承認されていない場合は、ログインページにエラーが表示されます。どのファイルを変更する必要があるのか​​、その変更は何かを知る必要があります。現在、私はLaravel 5.3に取り組んでいます。laravel 5.3でログイン中にユーザーステータスを確認するにはどうすればよいですか?

答えて

6

あなたはLaravel Middlewareを作成することができます追加の情報のためのリンクを確認してください

php artisan make:middleware CheckStatus 

<?php 
namespace App\Http\Middleware; 
use Closure; 
use Illuminate\Support\Facades\Auth; 
class CheckStatus 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $response = $next($request); 
     //If the status is not approved redirect to login 
     if(Auth::check() && Auth::user()->status_field != 'approved'){ 
      Auth::logout(); 
      return redirect('/login')->with('erro_login', 'Your error text'); 
     } 
     return $response; 
    } 
} 

は、あなたのKernel.phpに

'checkstatus' => \App\Http\Middleware\CheckStatus::class, 

をあなたのミドルウェアを追加し、最終的に私は願っています

Route::post('/login', [ 
    'uses'   => 'Auth\[email protected]', 
    'middleware' => 'checkstatus', 
]); 

あなたのルートにミドルウェアを追加取得するには、あなたのミドルウェアを変更助けてください

+0

web.phpにそのようなルートがないため、私のルートにミドルウェアを追加するにはどうすればいいですか? – Zaman

+0

@Efazあなたの 'Auth :: routes();'をオーバーライドするには、[this](https://laracasts.com/discuss/channels/general-discussion/how-to-name-laravel-52-auth-routes)をチェックしてください。 –

+0

これは5.3で動作しません。* please –

0

まず

public function authenticate() 
{ 
    if (Auth::attempt(['email' => $email, 'password' => $password, 'is_approved'=>1])) { 
     // Authentication passed... 
     return redirect()->intended('dashboard'); 
    } 
} 

・ホープ、このファイルのApp/HTTP /コントローラ/認証/ LoginControllerで(is_approved仮定)ユーザーテーブルに

を列を追加...手順に従ってください助けてくれるでしょう

1

上部の答えは、これはあなたのアプリケーションのパフォーマンスが非常に低いにつながる状況

+0

@ saadこのコードを追加するファイル –

0

私は、上の答えに同意しないが、チェックします私に

if (Auth::attempt(['email'=>$input['email'],'password'=>$input['password'], 'user_status'=>1 ])) 

を保存し、また、Laravelのソースコードを変更することも推奨していません。

ですから、あなたのアプリにgetCredentials機能を書き換えることができます\のHttp \コントローラが認証\ AuthController.phpは、このようなファイル:\

<?php 
//app\Http\Controllers\Auth\AuthController.php 
namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 
use Illuminate\Http\Request; 

class AuthController extends Controller 
{ 
use AuthenticatesAndRegistersUsers, ThrottlesLogins; 

    //you need add this function 
    protected function getCredentials(Request $request) 
    { 
     $data = $request->only($this->loginUsername(), 'password'); 
     $data['is_approved'] = 1; 
     return $data; 
    } 
} 

は、あなたが直接Laravel認証(クイックスタート)を使用することができます。

希望すると、これが役立ちます。

関連する問題