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