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

plugin AccessChek

Estas en el tema de plugin AccessChek en el foro de Zend en Foros del Web. Buenas a todos, una consulta, que es el plugin_AccessCheck, estoy ocupando zend_Acl. desde ya muchas gracias...

  #1 (permalink)  
Antiguo 23/02/2012, 16:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
plugin AccessChek

Buenas a todos, una consulta, que es el plugin_AccessCheck, estoy ocupando zend_Acl. desde ya muchas gracias
  #2 (permalink)  
Antiguo 23/02/2012, 16:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

No existe tal plugin, es algo que tienes que implementar me imagino, pero al menos dentro de Zend no existe.

Saludos.
  #3 (permalink)  
Antiguo 24/02/2012, 06:45
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

ahh BIen, por que estoy haciendo permisos con zend Acl y me estoy ayudando con este video.
http://www.youtube.com/watch?NR=1&fe...&v=n31mQGZxtbE

desde ya muchas gracias!!!
  #4 (permalink)  
Antiguo 24/02/2012, 10:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

una consulta mas, la carpeta plugin que tengo que crear va dentro de application o dentro de cada uno de los modulos???
  #5 (permalink)  
Antiguo 24/02/2012, 10:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

Depende del plugin, sí es del modulo default, pues debe de ir dentro de application, si es un plugin de algún modulo, debe de ir dentro de la carpeta plugins del módulo.

Saludos.
  #6 (permalink)  
Antiguo 24/02/2012, 10:42
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

muchas gracias!!!, al igual que las llamas en el bootstrap tienen que ir dentro del modulo, lo que estoy haciendo es dar permisos a usuarios, y los tutoriales y videos siempre me lo muestran sin trabajar en modulos, y hay algunas cosas que todavia me confunden. muchas gracias por la ayuda
  #7 (permalink)  
Antiguo 24/02/2012, 12:14
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Los plugin se registra en al application.ini??, por que si se registran, me sale el siguiente error:

Cita:
Fatal error: Class 'Qclientes_Plugins_AccessCheck' not found in /var/www/qaz/library/Zend/Application/Resource/Frontcontroller.php on line 111
  #8 (permalink)  
Antiguo 24/02/2012, 12:17
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: plugin AccessChek

http://framework.zend.com/manual/en/...rontcontroller

Postea como lo estas registrando.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 24/02/2012, 12:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

de esta forma_

Cita:
resources.frontController.plugins.AccessCheck = "Qclientes_Plugins_AccessCheck"
Qclientes es el modulo que tengo
la estructura seria asi

modules ->Qclientes->controller
->plugins
->forms
->models
->view
  #10 (permalink)  
Antiguo 24/02/2012, 13:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

Es Qclientes_Plugin_AccessCheck, para que el module autoloader lo encuentre y lo registre.

Saludos.
  #11 (permalink)  
Antiguo 24/02/2012, 14:05
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

si lo coloque asi, pero no funciona me sale el error que ya postie!!
  #12 (permalink)  
Antiguo 24/02/2012, 14:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

Tu clase se debe de llamar AccessCheck.php, debe de estar en la carpeta /modules/Qclientes/plugins/AccessCheck.php y la clase se debe de llamar Qclientes_Plugin_AccessCheck, verifica eso.

Saludos.
  #13 (permalink)  
Antiguo 25/02/2012, 08:15
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Lo hice tal cual!!! pero el error sigue!!! no se bien que puede ser!!!, esto va en el bootstrap del Qclientes??
  #14 (permalink)  
Antiguo 25/02/2012, 08:29
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: plugin AccessChek

Bootstrap ? no lo estas registrando en el application.ini ?, si hiciste lo que te indico GatorV y sigue sin funcionar comprueba que el Bootstrap del modulo se esta ejecutando.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 25/02/2012, 10:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

ahora muestro todo.

application.ini

Código PHP:
pluginPaths.plugin APPLICATION_PATH "/Plugins"
resources.frontController.plugin.AccessCheck "Qclienets_Plugins_AccessCheck" 
bootstrap module Qclientes:
Código PHP:
<?php

class Qclientes_Bootstrap extends Zend_Application_Module_Bootstrap
{
      protected  function 
_initAutoload()
    {
        
$modelLoader = new Zend_Application_Module_Autoloader(array(
                                    
'namespace' => '',
                                    
'basePath' => APPLICATION_PATH ));

        
$this->_acl = new Qclientes_Model_LibraryAcl();
        
$this->_auth Zend_Auth::getInstance();
        
$fc Zend_Controller_Front::getInstance();
        
$fc ->registerPlugin(new Qclientes_Plugin_AccessCheck());

return 
$modelLoader;

    }

}
clases AccessCkeck.php en Qclientes / plugins

Código PHP:
<?php
class Qclientes_Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract
{
    public function  
preDispatch()
    {
        echo 
"Predispacthed action";
    }



}

Models : LibraryAcl en Qclientes/models

Código PHP:
<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class Qclientes_Model_LibraryAcl extends Zend_Acl{

    public function  
__construct() {

        
$this->add(new Zend_Acl_Resource('index'));
    }


}

?>
eso es todo lo que tengo y no funciona, muchas gracias por la ayuda
  #16 (permalink)  
Antiguo 25/02/2012, 10:30
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: plugin AccessChek

Es que no funciona por arte de magia, uno debe comprender lo que esta haciendo, ahora bien:
  1. Primero si el nombre de la clase es Qclientes_Plugin_AccessCheck porque registras Qclientes_Plugins_AccessCheck ?
  2. Segundo si lo estas registrando en el application.ini porque lo registras de nuevo en el Bootstrap ?,
  3. Tercero el bootstrap del modulo se encarga de inicializar el autoloader para ese modulo, no es necesario el autoloader que tienes en _initAutoload
  4. Cuarto estas seguro que ese plugin no recibe por parámetros el acl y el auth ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #17 (permalink)  
Antiguo 25/02/2012, 13:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

También revisa en tu application.ini, pluginPaths.plugin = APPLICATION_PATH "/Plugins" no es para los plugins del frontController, si no para los del bootstrap así que esa linea no es necesaria.
  #18 (permalink)  
Antiguo 28/02/2012, 06:21
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Bien, aun no termino de resolver esta dificultad pero... voy entendiendo,

1° Ya cambie el nombre, lo que pasa que tanto tocar y cambiar nombres no me habia dado cuenta de ese error.
2° Ya lo saque del application.ini. los dos registros.
3° Bien, tambien ya lo elimine, estoy empezando con todo esto y hay cosas como los inicios que no entiendo pero a medida que van habiendo errores los busco para entender.
4° mucho no se, pero hice
Código PHP:
zend_debug::dump($this_acly  zend_debug::dump($this_auth)  y  zend_debug::dump($fc
despues de esta linea .
Código PHP:
  $fc Zend_Controller_Front::getInstance(); 
y muestra, pero en la ultima linea no muestra nada y sale el error: desde ya muchas gracias por la ayuda!!!!!
  #19 (permalink)  
Antiguo 28/02/2012, 09:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

¿Que error te sale ahora?
  #20 (permalink)  
Antiguo 28/02/2012, 10:34
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Fatal error: Class 'Qclientes_Plugin_AccessCheck' not found in, como que no lo encuentra!!!
  #21 (permalink)  
Antiguo 28/02/2012, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

¿Te haz asegurado de ponerlo donde debe de ir?

Recuerda la estructura:

application/modules/qclientes/plugins/AccessCheck.php (Qclientes_Plugin_AccessCheck)

Tiene que ir en esa carpeta ya que es parte de tu modulo Qclientes.
  #22 (permalink)  
Antiguo 28/02/2012, 10:41
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

si, esta colocado asi tal cual!!!, pero no se por que no lo toma, pero es eso que no lo encuentra
  #23 (permalink)  
Antiguo 28/02/2012, 11:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

¿Ya removiste el Autoloader?

Tu init debe estar mas o menos así:
Código PHP:
Ver original
  1. <?php
  2.  
  3. class Qclientes_Bootstrap extends Zend_Application_Module_Bootstrap
  4. {
  5.       protected  function _initPlugins()
  6.     {
  7.         $this->bootstrap('frontController');
  8.         $fc = $this->getResource('frontController');
  9.  
  10.         $acl = new Qclientes_Model_LibraryAcl();
  11.         $auth = Zend_Auth::getInstance();
  12.  
  13.         $fc ->registerPlugin(new Qclientes_Plugin_AccessCheck($acl, $auth));
  14.  
  15.     }
  16.  
  17. }
  #24 (permalink)  
Antiguo 28/02/2012, 12:07
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

tal cual hice lo que me dijiste y nada
este es el error que sale.

Cita:

Fatal error: Class 'Qclientes_Plugin_AccessCheck' not found in /var/www/qaz/application/modules/Qclientes/Bootstrap.php on line 13
No se si tendra algo que ver pero coloque la palabras Plugins en minuscula. ya no se que es!!!!
  #25 (permalink)  
Antiguo 28/02/2012, 12:09
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

solucionado!!!!!!!!!!!!!!!!! , esta mañana le cambie el nombre al plugin, pero con lo que vos me pasaste funciono!!! muchas gracias!!!
  #26 (permalink)  
Antiguo 28/02/2012, 13:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: plugin AccessChek

Sí, debe de ser plugins, verifica el autoloader (Zend/Application/Module/Autoloader):
Código PHP:
Ver original
  1. /**
  2.      * Initialize default resource types for module resource classes
  3.      *
  4.      * @return void
  5.      */
  6.     public function initDefaultResourceTypes()
  7.     {
  8.         $basePath = $this->getBasePath();
  9.         $this->addResourceTypes(array(
  10.             'dbtable' => array(
  11.                 'namespace' => 'Model_DbTable',
  12.                 'path'      => 'models/DbTable',
  13.             ),
  14.             'mappers' => array(
  15.                 'namespace' => 'Model_Mapper',
  16.                 'path'      => 'models/mappers',
  17.             ),
  18.             'form'    => array(
  19.                 'namespace' => 'Form',
  20.                 'path'      => 'forms',
  21.             ),
  22.             'model'   => array(
  23.                 'namespace' => 'Model',
  24.                 'path'      => 'models',
  25.             ),
  26.             'plugin'  => array(
  27.                 'namespace' => 'Plugin',
  28.                 'path'      => 'plugins',
  29.             ),
  30.             'service' => array(
  31.                 'namespace' => 'Service',
  32.                 'path'      => 'services',
  33.             ),
  34.             'viewhelper' => array(
  35.                 'namespace' => 'View_Helper',
  36.                 'path'      => 'views/helpers',
  37.             ),
  38.             'viewfilter' => array(
  39.                 'namespace' => 'View_Filter',
  40.                 'path'      => 'views/filters',
  41.             ),
  42.         ));
  43.         $this->setDefaultResourceType('model');
  44.     }

Ahí puedes ver los namespaces y las carpetas en las que busca los files.

¡Saludos!
  #27 (permalink)  
Antiguo 28/02/2012, 13:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Muchas gracias!!!, por la ayuda!!!, bueno y como cada vez esto se va haciendo complejo me sale otro error, jajaja!!!

Cita:
Notice: Undefined property: stdClass::$us_role in /var/www/qaz/application/modules/Qclientes/plugins/AccessCheck.php on line 24
Código PHP:
public function  preDispatch(Zend_Controller_Request_Abstract $request)
    {
        
$resource $request->getControllerName();
        
$action $request->getActionName();

        
$identity $this->_auth->getStorage()->read();
        
$role $identity->us_role;

        if (!
$this->_acl->isAllowed($role$resource$action)) {
            
$request->setModuleName('Qlogin')
                          ->
setControllerName('Qlogin')
                          ->
setActionName('index');
        } 
el $identity->us_role pertenece al campo de la bd??
  #28 (permalink)  
Antiguo 28/02/2012, 13:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: plugin AccessChek

Esa propiedad pertenece al objeto que esta en el storage por defecto, session, por lo general cuando haces login guardas en session un objeto con las propiedades que quieres persistir entre request's, bueno ese objeto no tiene la propiedad que estas intentando acceder, comprueba que guardas en session.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #29 (permalink)  
Antiguo 28/02/2012, 13:47
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

bien!! en realidad yo lo tengo como $user en vez de $identity

Código PHP:

  $user 
$adapter->getResultRowObject();
            
$auth->getStorage()->write($user); 
pero cuando lo cambio me sale este otro error, será por las sessiones??

Cita:
Notice: Undefined variable: user in /var/www/qaz/application/modules/Qclientes/plugins/AccessCheck.php on line 24
  #30 (permalink)  
Antiguo 28/02/2012, 14:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 16 años
Puntos: 20
Respuesta: plugin AccessChek

Bien!!! ya esta solucionado y esta funcionado!!! el Zend_Acl, perdon por postear errores antes de terminar de revisar todo. muchas gracias por la ayuda!!!!!

Etiquetas: plugin
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 07:11.