Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2010, 04:48
Samou
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 15 años, 4 meses
Puntos: 0
Problema con Zend Auth

Hola a todos, estoy creando una zona de registro y login de usuarios en mi proyecto, pero estoy teniendo problemas con zend auth.
Tengo un Controller UsuariosController, con una accion registro, q si se efectua correctamente me redirige a PrincipalController q tiene el siguiente codigo:
Código PHP:
<?php

class PrincipalController extends Zend_Controller_Action
{

    public function 
init()
    {
        
/* Initialize action controller here */
    
}

    public function 
indexAction()
    {
        
// action body
        
$recuperando_user = new Zend_Session_Namespace('registro_user');
        
$id_user $recuperando_user->id_user;
        
$id_cons $recuperando_user->id_cons;
        
$rol $recuperando_user->rol;
        
        if(
$id_user != 0){//El usuario acaba de registrarse y ha accedido directamente a la pagina principal
            //Se carga la visa q corresponda al usuario en funcion de su rol
            
switch ($rol) {
                case 
1://Super Admin
                    
$this->_redirect('/superadmin/index');
                    break;
                case 
2://Admin
                    
$this->_redirect('/admin/');
                    break;
                case 
3://JfObra
                    
$this->_redirect('/jobra/');
                    break;
                case 
4://JfEstructura
                    
$this->_redirect('/jestru/');
                    break;
                case 
5://JfLabo
                    
$this->_redirect('/jlabo/');
                    break;
                case 
6://Arquitecto
                    
$this->_redirect('/arquitecto/');
                    break;
                case 
7://AgContable
                    
$this->_redirect('/contable/');
                    break;
                case 
8://Cliente
                    
$this->_redirect('/cliente/');
                    break;
            }          
        }
        
        else{
//Hemos de lanzar el Form de Login
            // action body
            
$this->view->setEncoding('UTF-8');
            
//Indicamos el título de la página
            
$this->view->title "Empresas - Login | Inobra - Portal de monitorizacion de Obras ";
            
//Añadimos el título, delante del título definido por defecto para nuestra aplicación
            
$this->view->headTitle($this->view->title'PREPEND');
            
//Añadimos el archivo de javascript que valide los campos de la página
            //Instanciamos el formulario
            
$form = new Form_Login();
            
//Asignamos a la vista el formulario
            
$this->view->form $form;
    
            if (
$this->getRequest()->isPost()){ //Si se envían los datos, los recuperamos del formulario
                
$formData $this->getRequest()->getPost();
                if (
$form->isValid($formData)){ //Validamos que los datos recibidos sean correctos
                    
                    
$nif strtolower($form->getValue('nif'));
                    
$dni strtolower($form->getValue('dni'));
                    
$pass strtolower($form->getValue('pass'));
                    
$rol $form->getValue('rol');                                    
                    
                    
                    
$autAdapter = new Zend_Auth_Adapter_DbTable(self::getDefaultAdapter());
                    
$autAdapter->setTableName('usuario');
                    
$autAdapter->setIdentityColumn('dni');
                    
$autAdapter->setCredentialColumn('pass');
                    
$autAdapter->setIdentity("p333348");
                    
$autAdapter->setCredential("ninguno");
                    
                    
$auth Zend_Auth::getInstance();
                
                    
$resultado $auth->authenticate($autAdapter);

                switch (
$resultado->getCode()) {
                
                    case 
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
                        
/** realiza algo para identidad inexistente **/
                        
break;
                
                    case 
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                        
/** realiza algo para credencial invalida **/
                        
break;
                
                    case 
Zend_Auth_Result::SUCCESS:
                        
/** realiza algo para autenticación exitosa **/
                        
$registro_user = new Zend_Session_Namespace('registro_user');
                        
$registro_user->id_user=4;
                        
$registro_user->rol 1;
                        
$this->_redirect('/principal/index');
                        break;
                
                    default:
                        
/** realiza algo para otras fallas **/
                        
break;
                }
                    
//Redireccionamos a la home, donde podremos ver el nuevo libro introducido.
                    
                
}
            }
        }
    }


}
Y efectivamente cuando el registro es OK se me redirige a Principal, mira el switch y como de momento solo estoy registrando Super Admin, me redirige a dicho controlador correctamente. Sin embargo, si desde la Home accedo al Login (q tb me redirecciona a PrincipalController), se me despliega bien el form q contiene pero a la hora de hacer el login siempre me vuelve a principal/index y no entra en ninguno de ls casos q tngo en el switch a pesar de q como veis estoy metiendo ls datos manualmente (tal y como estan en la tabla usuario).
A ver si m pueden exar un mano x favor