verifique el permiso contra el grupo, no contra los usuarios, usando Auth->authorize=“acciones”
-
26-09-2019 - |
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
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'
);