Код работает правильно, но Visual Studio Code подчеркивает метод login, так как он не реализован в IRepository.
Я реализовал этот метод в LoginRepository, который имплементируется от IRepository, поэтому код выполняется правильно.
Если же я укажу тип $loginRepository как LoginRepository, то в редакторе ошибка исчезнет, но в браузере Fatal error ... must be compatible with ...
Я так подозреваю, либо архитектура неправильная, либо ошибка в редакторе.
PHP 8.1