Unikałbym dodawania do poświadczeń pola active
- jest to problem autoryzacji, a nie uwierzytelniania.
Do tego użyłbym oprogramowania pośredniego, aby sprawdzić, czy zalogowany użytkownik jest aktywny lub nieaktywny. 5.3, middleware będzie wyglądać następująco:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfInactive
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($user = Auth::guard('web')->user()) {
if (! $user->active)
return redirect(route('account_inactive'));
}
return $next($request);
}
}
Niniejsza middleware musi następnie zostać zarejestrowany wewnątrz Kernel.php
:
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'inactive' => \App\Http\Middleware\RedirectIfInactive::class,
];
i wreszcie możemy chronić wszystkie nasze trasy z nim:
Route::get('inactive', ['as' => 'account_inactive', function() {
return view('inactive');
}]);
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => 'inactive'], function() {
Route::get('/', ['as' => 'admin.home', 'uses' => '[email protected]']);
});
Zaletą tego podejścia jest oczywiście to, że możemy wyświetlić bardziej trafny komunikat o błędzie niż ogólne "Te poświadczenia nie pasują do naszego rekordu ds, że ludzie mają złe dane auth. Użytkownik wie, że to nie ich wina, że nie mogą się zalogować.
W każdym razie, stosując podejście przyjęte w przyjętej odpowiedzi, upewnij się, że zrobiłeś to samo, gdy użytkownik pomyślnie resetuje swoje hasło, ponieważ są one również automatycznie zalogowany wtedy.
Nie jest dobrym pomysłem na zastąpienie podstawowych plików. Możesz zastąpić metodę w 'Auth \ RegisterController', więc jeśli kiedykolwiek pojawi się aktualizacja, to nie usunie tego, co dostosowałeś. –