У меня есть приложение со сторонним плагином, который обрабатывает управление ACL, работает нормально, но у меня есть некоторые проблемы с функцией isAuthorized. Пользователь передается в функцию, и когда я отлаживаю переменную, я вижу всю правильную информацию в наборе данных, но когда скрипт выполняет запрос поиска, он возвращается пустым. Дело в том, что модель, по которой я выполняю запрос, отличается от плагина, который я использую. Таким образом, я выполняю поиск в моем приложении на модели, которая находится в моем плагине. Для меня это не идеально, тем не менее, я работаю с плагином, который не был создан для конкретного приложения. Чтобы выполнить поиск, автор добавил
App::uses('User', 'AuthAcl.Model');
так что найти можно было бы. Теперь, когда это сказано, я подправил одну вещь в части условий условия, потому что я получил столбец id в списке полей — неоднозначная ошибка SQL. Я начал получать эту ошибку, потому что я добавил некоторые отношения в приложение.
Я говорю все это, чтобы сказать это — так как я загружаю модель через App Uses, я не должен быть в состоянии выполнить поиск так
$this->User->Find('First');
Я попробовал это, и это говорит, что я выполняю на не объекте. Вот код для этого скрипта. Мне нужен вклад. Когда я выполняю свой сценарий без отладки, он блокирует приложение, и, читая код и отлаживая его, я думаю, что это происходит, потому что поиск возвращается пустым. И еще одно замечание — пожалуйста, потерпите меня — я не писал этот код, и я нахожусь в фазе обучения пониманию кода других разработчиков. Я использую CAKEPHP 2.3 Спасибо, ребята!
public function isAuthorized($user = null) {
App::uses('User', 'AuthAcl.Model');
App::uses('Group', 'AuthAcl.Model');
$authFlag = false;
$this->set('login_user',$user);
$userModel = new User();
$group = new Group();
//die(debug($user));
$rs = $this->$userModel->find('first',array('conditions'=>array('user.id' => $user['id'])));
die(debug($rs));
$action = 'controllers';
if (!empty($this->plugin)){
$action .= '/'.$this->plugin;
}
$action .= '/'.$this->name;
$action .= '/'.$this->action;if (!empty($rs['Group'])){
foreach ($rs['Group'] as $group){
$authFlag = $this->Acl->check(array('Group' => array('id' => $group['id'])), $action);
if ($authFlag == true){
break;
}
}
}
if ($authFlag == false && !empty($user)){
$authFlag = $this->Acl->check(array('User' => array('id' => $user['id'])), $action);
//die(debug($authFlag));
}
if ($authFlag == false && !empty($user)){
$this->redirect(array('controller' => 'accessDenied', 'action' => 'index','plugin' =>'auth_acl'));
}
if (!empty($user)){
$user = $userModel->find('first',array('conditions' => array('user.id' => $user['id'])));
$this->Session->write('auth_user',$user);
$this->request->data['auth_plugin'] = $this->plugin;
$this->request->data['auth_controller'] = $this->name;
$this->request->data['auth_action'] = $this->action;
}
return $authFlag;
}
}
Задача ещё не решена.
Других решений пока нет …