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

Zend_Auth_Adapter_DbTable inner join

Estas en el tema de Zend_Auth_Adapter_DbTable inner join en el foro de Zend en Foros del Web. Que tal? nuevamente aprendiendo un poco mas de uds. estoy haciendo un poco mas gral mi aplicacion que la idea es que empiece a crecer ...
  #1 (permalink)  
Antiguo 12/10/2010, 08:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Zend_Auth_Adapter_DbTable inner join

Que tal?

nuevamente aprendiendo un poco mas de uds.

estoy haciendo un poco mas gral mi aplicacion que la idea es que empiece a crecer y crecer

en la parte de autentificacion estaba usando Zend_Auth_Adapter_DbTable
despues le pasaba los nomobre de los campos en la tabla
Código PHP:
    protected function getAuthAdapter()
    {
        
$this->_db Zend_Registry::get('db');
        
$authAdapter = new Zend_Auth_Adapter_DbTable($this->_db);
        
$authAdapter->setTableName('Usuario')
                    ->
setIdentityColumn('login')
                    ->
setCredentialColumn('pass')
                    ->
setCredentialTreatment('MD5(?)');
        return 
$authAdapter;
    } 
procesaba, verificaba y escribia

Código PHP:
    $authAdapter $this->getAuthAdapter();
        
$authAdapter -> setIdentity($user)
                       ->
setCredential($pass);
        
$auth=Zend_Auth::getInstance();
    
$result=$auth->authenticate($authAdapter);
    if (
$result->isValid())
    {
         
$identity $authAdapter->getResultRowObject();
                   
$authStorage=$auth->getStorage();
                       
$authStorage->write($identity);
         .
         .
         . 
todo va perfecto, pero quiero poner una tabla que es catalogo de roles, por tanto en mi tabla Usuario tengo solo "id_rol"

donde deberia de poner el inner join para obtener el rol?

pero si ademas estoy formalizando mi capa de negocios, como podria escribir mi clase que obtenga los datos??


mil gracias
  #2 (permalink)  
Antiguo 12/10/2010, 08:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Zend_Auth_Adapter_DbTable inner join

Recuerda que Zend_Auth solo trabaja para la autorización, lo que tendrías que hacer es después de iniciar sesión hagas una consulta nuevamente para obtner el id_rol que necesitas y haces ya el join.

Saludos.
  #3 (permalink)  
Antiguo 12/10/2010, 10:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Zend_Auth_Adapter_DbTable inner join

gracias por la luz

quedo de la sig forma:
Código PHP:
                $result=$auth->authenticate($authAdapter);
                if (
$result->isValid())
                {
                    
$datos = new DatosAcceso();
                    
$identity=$datos->getUsuario($user);
                    
$authStorage=$auth->getStorage();
                    
$authStorage->write($identity);
                    
$this->redirector('index''index');
                } 
y el modelo
Código PHP:
    function getUsuario($login)
    {
        
$this->_db Zend_Registry::get('db');
        
$select $this->_db->select()
                       ->
from(array('usuario'=>$this->_Usuario),
                         array(
'nombre','paterno','materno','iniciales','puestos.nombre as role' ,'login') )
                       ->
join(array('puestos'=>$this->_cat_puestos),
                       
'usuario.id_puesto=puestos.id_puesto')
                       ->
where('usuario.login=?',$login);
        
$result $this->_db->fetchRow($select);
        return 
$result;
    } 
gracias :D

Etiquetas: join, php
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 10:26.