Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous!
je viens de debuter en ZF et j ai besoin d' un petit pousse. Je suis à la recherche d un exemple autonome sur l authentification et identification en ZF ( cad en utilisant Zend_auth_adapter_ldap).
Merci d avance
Hors ligne
voilà ce que je fais dans toutes mes action (mutualisé dans une classe)
$this->_auth = $parameters->fast->get('auth', false);
if($this->_auth) {
$user = Zend_Auth::getInstance()->getIdentity();
if ($user)
{
$this->view->user = clone($user);
if(isset($user->profile)) $this->view->user->profile = clone($user->profile);
}
}et dans le bootstrap
$auth = $parameters->fast->get('auth', false);
if($auth) {
Zend_Loader::loadClass('Zend_Auth');
if (!$config->get($parameters->fast->db)) {
Zend_Loader::loadClass('Fast_Exception_Db');
throw new Fast_Exception_Db(Fast_Exception_Db::PARAMETERS_NOT_FOUND);
}
}a+JYT
Hors ligne
Dans le fichier .ini de ton application:
; Active directory: first server ldap.server1.host = <host> ldap.server1.useSsl = false ldap.server1.accountDomainName = <domain> ldap.server1.accountDomainNameShort = <domain> ldap.server1.accountCanonicalForm = 3 ldap.server1.baseDn = "CN=Users,DC=blabla,DC=Local" ; Active directory: second server if server1 not responding ldap.server2.host = <host2> ldap.server2.useSsl = false ldap.server2.accountDomainName = <domain> ldap.server2.accountDomainNameShort = <domain> ldap.server2.accountCanonicalForm = 3 ldap.server2.baseDn = "CN=Users,DC=blabla,DC=Local"
Dans le fichier AuthController.php
public function loginAction()
{
// action body
$auth = Zend_Auth::getInstance();
$form = new Form_Login();
$form->submit->setLabel('Login');
$this->view->form = $form;
// ****** FORM VALIDATION ******
if ($this->getRequest()->isPost())
{
$formData = $this->getRequest()->getPost();
if($form->isValid($formData))
{
$login=$form->getvalue('login');
$password=$form->getvalue('password');
$config=Zend_Registry::get('config');
// check that the user exists in the active directory
$options_ldap = $config->ldap->toArray();
$adapter = new Zend_Auth_Adapter_Ldap($options_ldap, $login, $password);
try
{
$result = $auth->authenticate($adapter);
}
catch(Zend_Ldap_Exception $zle)
{
Zend_Debug::dump($zle->getMessage());
}
// ... ACTIVE DIRECTORY
// ... CHECK USER EXISTENCE IN USERS TABLE
if (!$result->isValid())
{
Zend_Debug::dump('Error Ldap');
foreach ($result->getMessages() as $message)
{
Zend_Debug::dump($message);
}
//TODO Change flashmessenger?
Zend_Auth::getInstance()->clearIdentity();
Zend_Debug::dump('Error Login');
$this->_forward("login");
}
else
{
Zend_Session::regenerateId();
$username = $auth->getIdentity() ;
Zend_Debug::dump($username);
$this->_redirect("Releasestatus/list");
}
}
$this->_redirect( 'Auth/login');
}
}
public function logoutAction()
{
$auth = Zend_Auth::getInstance();
$auth->clearIdentity();
$this->_redirect( 'Auth/login');
}Ensuite, la form_login (login.php)
public function __construct($options = null)
{
parent::__construct($options);
$this->setName('Login');
$this->getDecorator('HtmlTag')->setOption('class', 'form medium');
$login = new Zend_Form_Element_Text('login');
$login ->setLabel('Login')
->setRequired(true)
->addFilter('StringToLower')
->addValidator('NotEmpty');
$this->addElement($login);
// password
$password = new Zend_Form_Element_Password('password');
$password ->setLabel('Password')
->setRequired(true)
->setDescription('Give the Windows password')
->addValidator('NotEmpty');
$this->addElement($password);
$submit = new Zend_Form_Element_Submit('submit');
$this->addElement($submit);
}Ensuite, dans les controllers que tu veux contrôler avec un login :
public function preDispatch()
{
$auth = Zend_Auth::getInstance();
if (!$auth->hasIdentity())
{
$this->_redirect('Auth/login');
}
}Dernière modification par gcr01 (28-08-2009 15:49:01)
Hors ligne
oups
Dernière modification par yoann92 (10-07-2012 10:36:12)
Hors ligne
Pages: 1