2010-08-05 84 views
1

Quelqu'un peut-il m'expliquer le fonctionnement de Auth->authorize = "actions"
Dans mon projet, je prévois tp donner ceci.
Comme this m'a appris l'authorize appellera le $this->Aro->check($user,"controllers/:controller/:action")vérifier la permission contre le groupe pas les utilisateurs en utilisant Auth-> authorize = "actions"

Cela vérifiera le contre le droit d'utilisateur ??
cela signifie que l'utilisateur doit être présent dans la table aros.
Mais je n'ai pas besoin de vérifier l'utilisateur, mais je dois vérifier auprès d'un groupe
Comment puis-je obtenir ceci.

maintenant lorsque les utilisateurs ne sont pas dans le tableau Aro indiquant les

Afin que les OMHS sera seulement les groupes et en ajoutant des utilisateurs au Aros est nécessaire

thankz à l'avance

Répondre

1

A obtenu la solution
utilisant ce reference
i étendu AuthComponent à CustomAuth et réécrite la méthode 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 :)

0

Prenez un coup d'oeil à ce chapter. Pour vérifier une autorisation de groupe faire (valeurs « modèle » et « foreign_key » sont de aros tableau):

$this->Acl->check(
    array('model' => 'Group', 'foreign_key' => 2), 
    'controller/action' 
); 
+0

mais depuis Auth-> = "actions autorisent que" est donné la vérification se fera automatiquement droit? – RSK

+1

C'est vrai. Vous devrez utiliser la méthode '$ this-> Auth-> authorize = 'controller';' et 'isAuthorized()' (http://book.cakephp.org/view/396/authorize). – bancer

+0

mais si je donne '$ this-> Auth-> authorize = 'controller';' je dois aller à chaque contrôleur et remplacer 'isAuthorized()'. Comment puis-je éviter cette surcharge dans chaque contrôleur ?? – RSK