Проверьте разрешение против группы, а не пользователей, использующих auth-> autorize = "Действия"
-
26-09-2019 - |
Вопрос
Может ли кто-нибудь объяснить мне работу Auth->authorize = "actions"
В моем проекте я планирую TP дать это.
Так как это научил меня разрешению позвонит $this->Aro->check($user,"controllers/:controller/:action")
Это проверит против пользователя верно ??
Это означает, что пользователь должен быть там в таблице AROS.
Но мне не нужно это проверить против пользователя, но мне нужно проверять группу
Как я могу добиться этого.
Теперь, когда пользователи не в таблице Аро, это показывает
Так что аро будет только группами, и требуется добавление пользователей к Aros
Спасибо заранее
Решение
Получил решение
Используя это ссылка
Я расширил 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';
}
Это решило мою проблему :)
Другие советы
Взгляните на это глава. Отказ Чтобы проверить групповое разрешение. Сделайте это («модель» и «Entertain_Key» из таблицы AROS):
$this->Acl->check(
array('model' => 'Group', 'foreign_key' => 2),
'controller/action'
);