Eviterei di aggiungere il campo active
alle credenziali: si tratta di un problema di autorizzazione piuttosto che di autenticazione.
Per questo, vorrei utilizzare un middleware per verificare se un utente connesso è attivo o inattivo. In 5.3, il middleware sarebbe simile a questa:
<?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);
}
}
Questo middleware deve quindi essere registrata all'interno 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,
];
E poi finalmente proteggiamo tutti i nostri itinerari con esso:
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]']);
});
Il vantaggio di questo approccio, naturalmente, è che possiamo visualizzare un messaggio di errore più pertinente rispetto al generale "Queste credenziali non corrispondono al nostro recor ds 'che le persone con dettagli di autenticazione cattivi ottengono. Quindi l'utente saprebbe che non è colpa loro non è possibile accedere.
In ogni caso, con l'approccio nella risposta accettata, assicurarsi di aver fatto lo stesso per quando l'utente reimposta correttamente la propria password in quanto sono anche auto- loggato allora.
Non è una buona idea sovrascrivere i file principali. Puoi sovrascrivere il metodo in 'Auth \ RegisterController', quindi se c'è un aggiornamento, non cancella ciò che hai personalizzato. –