Потом есть два варианта:
1. быстрокод — переопределяем в контроллере validateLogin, вписав любые дополнительные проверки;
2. нормальнокод — та же дока, раздел «Adding Custom User Providers».
Потому что уже есть метод find(), который ищет СТРОГО по идентификатору и возвращает одну модель, тогда как firstOrCreate() ищет по ..? правильно, по набору атрибутов, и в результате может найтись несколько моделей. Поэтому такой акцент. Достаточно открыть код метода и немного подумать.
По итогу уточнений в каментах выяснилось, что билдер получался из контейнера не так. Надо:
use Illuminate\Database\ConnectionInterface;
public function __construct(ConnectionInterface $conn)
{
$conn->query()->from(...)->insert();
// или $conn->table(...)->insert();
}