2010-08-05 3 views
1

Может ли кто-нибудь объяснить мне, что работает Auth->authorize = "actions"
В моем проекте я планирую дать тп.
Как this научил меня авторизированные будет называть $this->Aro->check($user,"controllers/:controller/:action")проверить разрешение против группы не пользователей, использующих Auth-> authorize = "действия"

Это будет проверять против права пользователя ??
Это означает, что пользователь должен находиться в таблице аросов.
Но мне это не нужно, чтобы проверять пользователя, но мне нужно проверить группу
Как я могу добиться этого.

теперь, когда пользователи не в Аро таблице он показывая

Так что будет Аро только группы и добавление пользователей к Aros требуется

thankz заранее

ответ

1

Полученный раствор
с помощью этого reference
я продлил AuthComponent к CustomAuth и переопределить метод isAutorized() в AuthComponent следующим

в контроллеры/компоненты/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; 
    } 
} 
?> 

в app_ controller.php

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

Это решило мою проблему :)

0

Тейк посмотрите на это chapter. Чтобы проверить разрешение группы сделать это («модель» и значения «foreign_key» взяты из ARoS таблицы):

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

но так auth-> Авторизоваться = «действия» дается проверка будет сделано автоматически правильно? – RSK

+1

Правильно. Вам нужно будет использовать метод '$ this-> Auth-> authorize = 'controller';' и 'isAuthorized()' (http://book.cakephp.org/view/396/authorize). – bancer

+0

, но если я даю '$ this-> Auth-> authorize = 'controller';' мне нужно перейти к каждому контроллеру и переопределить 'isAuthorized()'. Как я могу избежать этого переопределения в каждом контроллере? – RSK