verifique el permiso contra el grupo, no contra los usuarios, usando Auth->authorize=“acciones”

StackOverflow https://stackoverflow.com/questions/3413747

Pregunta

¿Alguien puede explicarme el funcionamiento de Auth->authorize = "actions"
En mi proyecto estoy planeando dar esto.
Como este me enseñó que la autorización llamará al $this->Aro->check($user,"controllers/:controller/:action")

Esto lo comparará con el usuario, ¿verdad?
eso significa que el usuario debería estar allí en la tabla aros.
Pero no necesito esto para compararlo con el usuario, pero necesito compararlo con un grupo.
¿Cómo puedo lograr esto?

ahora, cuando los usuarios no están en la tabla de Aro, se muestra el

Para que The Aro's sean solo los grupos y es necesario agregar usuarios a Aros

gracias de antemano

¿Fue útil?

Solución

¿Tienes la solución
el uso de este referencia
Extendí la AuthComponent a CustomAuth y reemplazado el método isAutorized() en el AuthComponent como sigue

en los controladores / componentes / custom_auth.php

    <?php
App::import('Component','Auth');
class CustomAuthComponent extends AuthComponent {

    public function isAuthorized($type = null, $object = null, $user = null) {

        $actions  = $this->__authType($type);
        if( $actions['type'] != 'actions' ){
            return parent::isAuthorized($type, $object, $user);
        }
        if (empty($user) && !$this->user()) {
            return false;
        } elseif (empty($user)) {
            $user = $this->user();
        }


        $group = array('model' => 'Group','foreign_key' =>$user['Login']['group_id']);
        $valid = $this->Acl->check($group, $this->action());
        return $valid;
    }
}
?>

en app_controller.php

function beforeFilter()
{
$this->CustomAuth->userModel = 'Login';
$this->CustomAuth->allowedActions = array('display');
$this->CustomAuth->actionPath = 'controllers/';
$this->CustomAuth->authorize = 'actions';
}

Esto resolvió mi problema:)

Otros consejos

Tome un vistazo a este capítulo . Para verificar un permiso de grupo hacer esto ( 'modelo' y 'foreign_key' son los valores de la tabla de aros):

$this->Acl->check(
     array('model' => 'Group', 'foreign_key' => 2),
    'controller/action'
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top