0
votes

This is a continuation of my last question.

Hi,

I'm implementing, in a Symfony2 application, a custom authentication provider in order to authenticate against the Wordnik REST API.

On application load, no matter what request path, this is the exception I get:

( ! ) Fatal error: Cannot access parent:: when current class scope has no parent in /[..]/WordRot/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php on line 43

You can see the full stacktrace here.

Second to last line in the trace reveals that it is loading the DaoAuthenticationProvider:

18 0.0217 1922792 Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider->__construct( ) ../appDevDebugProjectContainer.php:3071

But none of my configuration refers to that provider, or anything that extends it. My custom provider directly implements the AuthenticationProviderInterface.

So I assume that my configuration is wrong, and somewhere I need to be explicitly setting the WordnikProvider, but I'm not sure where! Research has not provided any clues to this issue.

Any help would be much appreciated!

Files

2
FYI: His vendor folder was corrupt.hacfi

2 Answers

1
votes

the line return $this->authenticationManager->authenticate(new WordnikUserToken($username, $password, $this->providerKey)); in the WordnikListener goes to Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager (classes.php) authenticate. $this->providers are DaoAuthentificationProvider, WordnikProvider and AnonymousAuthentificationProvider. From the DaoAuthentificationProvider it only uses the method supports($token): return $token instanceof UsernamePasswordToken && $this->providerKey === $token->getProviderKey();

which returns false so next in line is WordnikProvider.

Oh..misread: the error is in the constructor: parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions); seems to fail. Running PHP 5.4.10 or so I DON'T have an error!!

Either rm -rf vendor and run composer install again or try using a different PHP version!!

0
votes

A had to create something like this a week ago. At the and, I created a custom user provider, where I simply call the api and with the response i create the user or not.

I would advise to read this:

http://symfony.com/doc/2.0/cookbook/security/custom_provider.html