Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/10/2012, 19:30
Avatar de kivpson
kivpson
 
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 7
Zend_Auth DB grabar dato en campo de tabla session

Hola a todos, resulta que he venido trabajando con Zend_Auth durante un buen tiempo y jamás me ah dado problemas hasta ahora que debo grabar el id_usuario en la tabla session:

SESSION
----------
id (primary)
modified (modifiedColumn)
lifetime (lifetimeColumn)
data (datacolumn)
id_user (id del usuario)


Código PHP:
$authAdapter = new Zend_Auth_Adapter_DbTable($db);
$select $authAdapter->getDbSelect();
$select->where("estado=?"1);
$authAdapter->setTableName'usuarios' );
$authAdapter->setIdentityColumn('email');
$authAdapter->setCredentialColumn('password');
# Verificando
$authAdapter->setIdentity($email);
$authAdapter->setCredentialHash::getPassword($password) );
# Instanciando
$auth Zend_Auth::getInstance();

$aResult $auth->authenticate($authAdapter);


switch(
$aResult->getCode()){
    case 
Zend_Auth_Result::SUCCESS:
        
        
$dataAuth $authAdapter->getResultRowObject(null'password');
        
        
$auth->getStorage()->write($dataAuth);
        
        
# Actualizamos el campo id_usuario en tabla session
        
$usuarioModel->actualizarIdUsuarioEnSesion(Zend_Session::getId(), $dataAuth->id_usuario);
        
        
// Mas procedimientos
        
        
break;
    case 
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
        
// procedimiento si no se encuentra usuario
        
break;
    case 
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
        
// Procedimiento si falla contraseña
        
break;

Como ven lo que hago es tomar los datos de adaptador y luego mediante el modelo actualizar el campo id_usuario con otra consulta, pero no creo que sea lo indicado, alguna idea de como hacerlo de una forma más optima usando el mismo Zend_Auth??

Saludos.