The code is massive and confusing and combines different responsibilities.
AuthenticationService resolves different means of authentication: username+password, api key, access token, cookie etc.
LoginService manages the login flow, login sessions, login descriptors. It uses Authentication service for evaluating the passwords and other authentication factors.