Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-08-2009 10:25:55

blaise4714
Nouveau membre
Date d'inscription: 28-08-2009
Messages: 1

exemple authorisation et identification pour dummies

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

 

#2 28-08-2009 14:37:34

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: exemple authorisation et identification pour dummies

voilà ce que je fais dans toutes mes action (mutualisé dans une classe)

Code:

         $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

Code:

         $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

 

#3 28-08-2009 15:48:14

gcr01
Membre
Date d'inscription: 28-08-2009
Messages: 17

Re: exemple authorisation et identification pour dummies

Dans le fichier .ini de ton application:

Code:

 
; 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

Code:

    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)

Code:

    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 :

Code:

    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

 

#4 10-07-2012 10:28:01

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: exemple authorisation et identification pour dummies

oups

Dernière modification par yoann92 (10-07-2012 10:36:12)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages