Ver Mensaje Individual
  #7 (permalink)  
Antiguo 30/04/2013, 09:36
mandygr87
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Verificar sesion

Vale gracias, ya me funciona perfectamente.

Ahora si no es mucha molestia tengo otra pregunta... Quiero restringir el acceso dependiendo del usuario a que sea a ciertos sitios. He estado leyendo y he visto que tengo que hacerlo con zend_acl, pero no me aclaro del todo. Me explico.

En mi base de datos tengo 3 tablas, una para clientes, otra para empleados y otra para administradores. Cuando se introducen el usuario y la contraseña en el formulario de mi controlador login lo que hago es esto.


Código PHP:
Ver original
  1. $form = new Application_Form_Loginform();
  2.  
  3.        $this->view->form = $form;
  4.  
  5.        if($this->getRequest()->isPost()){
  6.  
  7.             $formData = $this->getRequest()->getPost();
  8.            
  9.             if($form->isValid($formData)){
  10.                
  11.                 $authAdapter = new Zend_Auth_Adapter_DbTable();
  12.                 $authAdapter->setTableName('cliente');
  13.  
  14.                 $authAdapter->setIdentityColumn('dni');
  15.                 $authAdapter ->setCredentialColumn('password');
  16.  
  17.                 $authAdapter->setIdentity($form->getValue('username'));
  18.                 $authAdapter->setCredential(($form->getValue('password')));
  19.  
  20.                 //obtiene la instancia del patron singleton
  21.                 $auth = Zend_Auth::getInstance();
  22.  
  23.                 $result = $auth->authenticate($authAdapter);
  24.  
  25.        
  26.                 if($result->isValid()){
  27.                     $this->_redirect('/cliente/index');
  28.                 }else{
  29.                     $authAdapter = new Zend_Auth_Adapter_DbTable();
  30.                     $authAdapter->setTableName('administrador');
  31.                     $authAdapter->setIdentityColumn('dni');
  32.                     $authAdapter ->setCredentialColumn('password');
  33.  
  34.                     $authAdapter->setIdentity($form->getValue('username'));
  35.                     $authAdapter->setCredential(($form->getValue('password')));
  36.  
  37.                     //obtiene la instancia del patron singleton
  38.                     $auth = Zend_Auth::getInstance();
  39.  
  40.                     $result = $auth->authenticate($authAdapter);
  41.  
  42.                     if($result->isValid()){
  43.                     $this->_redirect('/admin/index');
  44.                     }else{
  45.                         $authAdapter = new Zend_Auth_Adapter_DbTable();
  46.                         $authAdapter->setTableName('empleado');
  47.                         $authAdapter->setIdentityColumn('dni');
  48.                         $authAdapter ->setCredentialColumn('password');
  49.  
  50.                         $authAdapter->setIdentity($form->getValue('username'));
  51.                         $authAdapter->setCredential(($form->getValue('password')));
  52.  
  53.                         //obtiene la instancia del patron singleton
  54.                         $auth = Zend_Auth::getInstance();
  55.  
  56.                         $result = $auth->authenticate($authAdapter);
  57.  
  58.                         if($result->isValid()){
  59.                         $this->_redirect('/empleado/index');
  60.                         }else{
  61.                             $this->_helper->flashMessenger->addMessage(array('error'=>'Usuario o contraseña incorrectos'));
  62.                         }
  63.                     }


Ahora lo que quiero crear son los roles de: 'cliente','empleado','administrador'
y los recursos que voy a tener van a ser:
cliente controler al que quiero que puedan acceder a todos los actions los perfiles con rol cliente.

empleado controler al que quiero que puedan acceder a todos los actions los perfiles con rol empleado.

administrador controler al que quiero que puedan acceder a todos los actions los perfiles con rol administrador.

Mis preguntas son: ¿cómo puedo asignar a $auth el rol que tiene?

¿Puedo comprobar en el mismo plugin que he creado si el rol que tiene esta intentado acceder a un recurso que se le ha asignado?

¿Dónde tengo que crear mi Zend_Acl?