Foros del Web » Programando para Internet » PHP » Zend »

Zend_Auth DB grabar dato en campo de tabla session

Estas en el tema de Zend_Auth DB grabar dato en campo de tabla session en el foro de Zend en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/10/2012, 19:30
Avatar de kivpson  
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 7 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.
  #2 (permalink)  
Antiguo 13/10/2012, 20:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Zend_Auth DB grabar dato en campo de tabla session

Y no te sirve agregar el id a $dataAuth antes de hacer el write ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 13/10/2012, 22:14
Avatar de kivpson  
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Zend_Auth DB grabar dato en campo de tabla session

Que tal masterpuppet, gracias por responder, te refieres a algo como:

Código PHP:
$dataAuth $authAdapter->getResultRowObject(null'password');
$dataAuth->id_user $id_user// Asumiendo que obtengo el dato 
$auth->getStorage()->write($dataAuth); 
No se si es lo que me sugerías, bueno lo hice pero no obtengo el resultado deseado, aquello almacena el id_usuario en el campo data de la tabla session, pero dicha tabla tiene un campo id_user, que es en donde deseo almacenar el id.

Le llevo dando vueltas y buscando ejemplos, manuales, la misma documentación de Zend pero no doy...
  #4 (permalink)  
Antiguo 14/10/2012, 06:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Zend_Auth DB grabar dato en campo de tabla session

Lo tuve que mirar porque hace mucho tiempo que ni lo tocaba y la solución es que te crees tu propio handler extendiendo de Zend_Session_SaveHandler_DbTable y lo modifiques acorde a lo que necesitas porque por defecto mapea a data.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 14/10/2012, 13:18
Avatar de kivpson  
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Zend_Auth DB grabar dato en campo de tabla session

Gracias nuevamente Masterpuppet, eh estado investigando sobre lo mismo, tocará extender la clase en todo caso, pensé que habría ya una forma predefinida de hacerlo, saludos.

Etiquetas: zend_auth, zend-framework
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:37.