vérifier l'autorisation contre groupe non utilisateurs en utilisant Auth-> autoriser = « actions »
-
26-09-2019 - |
Question
Quelqu'un peut-il me expliquer le fonctionnement de Auth->authorize = "actions"
Dans mon projet, je prévois donner tp cela.
Comme cette m'a appris l'authorize appellera le $this->Aro->check($user,"controllers/:controller/:action")
vérifiera l'encontre de l'utilisateur droit ??
cela signifie que l'utilisateur doit être là dans aros table.
Mais je ne veux pas besoin de ceci pour vérifier contre l'utilisateur, mais je dois vérifier contre un groupe
Comment puis-je y parvenez.
lorsque les utilisateurs ne sont pas dans le tableau Aro indiquant les
Alors que de l'Aro sera seulement les groupes et en ajoutant des utilisateurs au Aros est nécessaire
thankz à l'avance
La solution
A obtenu la solution
en utilisant cette référence
i étendu le AuthComponent à CustomAuth et réécrite la méthode de isAutorized()
dans le AuthComponent comme suit
dans les contrôleurs / composants / 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;
}
}
?>
dans app_controller.php
function beforeFilter()
{
$this->CustomAuth->userModel = 'Login';
$this->CustomAuth->allowedActions = array('display');
$this->CustomAuth->actionPath = 'controllers/';
$this->CustomAuth->authorize = 'actions';
}
Ceci a résolu mon problème:)
Autres conseils
Jetez un oeil à cette chapitre . Pour vérifier une autorisation de groupe faire (valeurs « modèle » et « foreign_key » sont de la table aros):
$this->Acl->check(
array('model' => 'Group', 'foreign_key' => 2),
'controller/action'
);