Application Symfony utilisant phpCAS
Bonjour à tous !
Je suis sur une application sur symfony, pour l'authentification je voudrai utilisé le système d'authentification CAS, pour cela j'utilise la bibliothèque phpCAS et la classe que j'ai trouvé sur le net:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
<?php
class sfCASRequiredFilter extends sfBasicSecurityFilter
{
public function execute ($filterChain)
{
if ($this->isFirstCall() ){
//require_once('phpCAS/CAS.php');
phpCAS::setDebug();
phpCAS::client(CAS_VERSION_2_0,$this->getParameter('server_domain'), $this->getParameter('server_port'), $this->getParameter('server_path'));
// no SSL validation for the CAS server
phpCAS::setNoCasServerValidation();
$this->getContext()->getLogger()->debug('{sfCASRequiredFilter} about to force auth');
phpCAS::forceAuthentication();
$this->getContext()->getLogger()->debug('{sfCASRequiredFilter} auth is good');
$this->getContext()->getUser()->setAuthenticated(true);
$this->getContext()->getUser()->setAttribute('username', phpCAS::getUser(), 'cas');
$this->getContext()->getUser()->addCredential('username_'.phpCAS::getUser());
}
# if not initially authorized, sfBasicSecurityFilter sets $controller->forward(sfConfig::get('sf_login_module'), sfConfig::get('sf_login_action'));
# so we re-dispatch since we are already authorized
# copied from sfFrontWebController's dispatch()
$this->getContext()->getLogger()->debug('{sfCASRequiredFilter} configs are ' . sfConfig::get('sf_login_module') . '/' . sfConfig::get('sf_login_action'));
if ($this->getContext()->getModuleName() == sfConfig::get('sf_login_module')
&& $this->getContext()->getActionName() == sfConfig::get('sf_login_action')) {
$request = $this->getContext()->getRequest();
$moduleName = $request->getParameter('module');
$actionName = $request->getParameter('action');
$this->getContext()->getLogger()->debug('{sfCASRequiredFilter} forwarding to ' . $moduleName . '/' . $actionName);
$this->getContext()->getController()->forward($moduleName, $actionName);
}
// Execute next filter in the chain
$filterChain->execute();
}
}
?> |
Cette classe me permet d’accéder au serveur CAS pour l'authentification et me redirige vers mon application.
Seulement je retrouve des difficultés au niveau de la gestion des droits des utilisateurs, des sessions et la déconnexion, j'ai jamais utilisé une classe sf...Filter sur symfony donc je sais pas trop ce que c'est !
J'essaye de gérer un user dans la classe myUser.class.php mais il reconnait pas la variable $user :(
aussi je me demande si le fait de m'authentifier avec CAS m'empêcherai d'utiliser le plugin sfDoctrineGuardPlufin pour la gestion des droits !
Dois-je mettre mes fonctions de déconnexion et le reste dans cette classe sfCASRequiredFilter ???
Si vous avez des réponses n'hésitez pas !! Je bloque :cry: