Ich würde vermeiden, das Feld active
zu den Berechtigungsnachweisen hinzuzufügen - das ist ein Autorisierungsproblem und nicht ein Authentifizierungsfehler.
Dafür würde ich eine Middleware verwenden, um zu überprüfen, ob ein angemeldeter Benutzer aktiv oder inaktiv ist. In 5.3 würde die Middleware wie folgt aussehen:
<?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);
}
}
Diese Middleware dann in Kernel.php
registriert werden:
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,
];
Und dann schließlich schützen wir alle unsere Routen mit ihm:
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]']);
});
Der Vorteil dieses Ansatzes ist natürlich, dass wir eine relevantere Fehlermeldung als die allgemeine anzeigen können 'Diese Anmeldeinformationen stimmen nicht mit unserem Datensatz überein ds 'dass Leute mit schlechten Auth Details bekommen. So würde der Benutzer wissen, dass es nicht ihre Schuld ist, dass sie sich nicht einloggen können.
Wie auch immer, mit dem Ansatz in der angenommenen Antwort, stellen Sie sicher, dass Sie dasselbe getan haben, wenn der Benutzer sein Passwort erfolgreich zurücksetzt, da sie auch automatisch sind. eingeloggt dann.
Es ist keine gute Idee, Kerndateien zu überschreiben. Sie können die Methode in Ihrem 'Auth \ RegisterController' überschreiben. Wenn es jemals ein Update gibt, wird es nicht löschen, was Sie angepasst haben. –