Fatal error: Class 'Symfony\...\SessionCsrfProvider' not found
merolhack opened this issue · 2 comments
merolhack commented
Hi,
i received the next error:
Fatal error: Class 'Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider' not found in ..\silex-oauth\vendor\silex\silex\src\Silex\Provider\FormServiceProvider.php on line 105
How can i solve this error?
My composer.json is:
{
"require": {
"php": ">=5.3.3",
"silex/silex": "~1.3,<2.0",
"twig/twig": "^1.23",
"symfony/security": "~2.4,<3.0",
"gigablah/silex-oauth": "~1.3"
}
}
My index.php code is:
<?php
define('__ROOT', __DIR__);
define('DS', DIRECTORY_SEPARATOR);
error_reporting(E_ALL);
ini_set('display_errors', 1);
define('FACEBOOK_API_KEY', '');
define('FACEBOOK_API_SECRET', '');
define('TWITTER_API_KEY', '');
define('TWITTER_API_SECRET', '');
define('GOOGLE_API_KEY', '');
define('GOOGLE_API_SECRET', '');
define('GITHUB_API_KEY', '');
define('GITHUB_API_SECRET', '');
define('DROPBOX_API_KEY', '');
define('DROPBOX_API_SECRET', '');
require_once __ROOT . DS . 'vendor' . DS . 'autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Gigablah\Silex\OAuth\OAuthServiceProvider(), array(
'oauth.services' => array(
'Facebook' => array(
'key' => FACEBOOK_API_KEY,
'secret' => FACEBOOK_API_SECRET,
'scope' => array('email'),
'user_endpoint' => 'https://graph.facebook.com/me'
),
'Dropbox' => array(
'key' => DROPBOX_API_KEY,
'secret' => DROPBOX_API_SECRET,
'scope' => array(),
'user_endpoint' => 'https://api.dropbox.com/1/account/info'
),
'Twitter' => array(
'key' => TWITTER_API_KEY,
'secret' => TWITTER_API_SECRET,
'scope' => array(),
'user_endpoint' => 'https://api.twitter.com/1.1/account/verify_credentials.json'
),
'Google' => array(
'key' => GOOGLE_API_KEY,
'secret' => GOOGLE_API_SECRET,
'scope' => array(
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
),
'user_endpoint' => 'https://www.googleapis.com/oauth2/v1/userinfo'
),
'GitHub' => array(
'key' => GITHUB_API_KEY,
'secret' => GITHUB_API_SECRET,
'scope' => array('user:email'),
'user_endpoint' => 'https://api.github.com/user'
)
)
));
// Provides URL generation
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
// Provides CSRF token generation
$app->register(new Silex\Provider\FormServiceProvider());
// Provides session storage
$app->register(new Silex\Provider\SessionServiceProvider(), array(
'session.storage.save_path' => __ROOT . DIRECTORY_SEPARATOR . 'var' . DIRECTORY_SEPARATOR . 'cache'
));
// Provides Twig template engine
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __ROOT . DIRECTORY_SEPARATOR . 'templates'
));
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'default' => array(
'pattern' => '^/',
'anonymous' => true,
'oauth' => array(
//'login_path' => '/auth/{service}',
//'callback_path' => '/auth/{service}/callback',
//'check_path' => '/auth/{service}/check',
'failure_path' => '/',
'with_csrf' => true
),
'logout' => array(
'logout_path' => '/logout',
'with_csrf' => true
),
'users' => new Gigablah\Silex\OAuth\Security\User\Provider\OAuthInMemoryUserProvider()
)
),
'security.access_rules' => array(
array('^/auth', 'ROLE_USER')
)
));
$app->before(function (Symfony\Component\HttpFoundation\Request $request) use ($app) {
$token = $app['security']->getToken();
$app['user'] = null;
if ($token && !$app['security.trust_resolver']->isAnonymous($token)) {
$app['user'] = $token->getUser();
}
});
$app->get('/', function () use ($app) {
return $app['twig']->render('index.twig', array(
'login_paths' => $app['oauth.login_paths'],
'logout_path' => $app['url_generator']->generate('logout', array(
'_csrf_token' => $app['oauth.csrf_token']('logout')
))
));
});
$app->match('/logout', function () {
})->bind('logout');
$app->run();
gigablah commented
You need to add the symfony/form
package to your composer.json.