bearerToken(); if (!$plain) { return response()->json(['message' => 'Token akses tidak ditemukan.'], 401); } $token = ApiToken::with('user')->where('token_hash', hash('sha256', $plain))->first(); if (!$token || !$token->user || ($token->expires_at && $token->expires_at->isPast())) { return response()->json(['message' => 'Token akses tidak valid atau sudah kedaluwarsa.'], 401); } $token->forceFill(['last_used_at' => now()])->saveQuietly(); $request->setUserResolver(fn () => $token->user); $request->attributes->set('api_token', $token); return $next($request); } }