Selamlar "tymon/jwt-auth": "^2.0"
, "laravel/framework": "^10.10",
paketlerini kullanıyorum.
User modelimin içerisinde is_active (boolean) tipinde bir field mevcut bu false ise login olunca JWT Token hiç üretilmemesini istiyorum.
Token üretilse bile kullanıldığında token'ı blacklist içerisine atıcak şekilde middleware ayarladım fakat en başta hiç jwt token vermemesini istiyorum.
Bunu Controller içerisinde de yapabilirim fakat çok sağlıklı gelmedi bunu Middleware ile çözmek istiyorum. Birkaç yöntem denedim fakat user modeline jwt henüz üretilmediği için ulaşamadım. After yöntemini denedim fakat onuda yapamadım.
Controller:
public function __construct()
{
$this->middleware('auth:api', ['except' => ['login', 'register']]);
}
Login function:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if ($token = $this->guard()->attempt($credentials)) {
return $this->respondWithToken($token);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
Route:
Route::group([
'middleware' => 'api',
'namespace' => 'App\Http\Controllers',
'prefix' => 'auth',
], function () {
Route::post('register', [AuthController::class, 'register']);
Route::post('login', [AuthController::class, 'login']);
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
});