UserAbstract authenticate() method now takes Login and Firewall as parameters. Firewall object has access to createPasswordHash and verifyPasswordHash methods so there is no need to introduce new class to the developer.