Я могу контролировать свое приложение с помощью ACL
, все сделано отлично, и приложение работает плавно с ACL
и Auth
.CakePHP 2.x ACL - Контроль на уровне владельца
Теперь проблема:
У меня есть две таблицы, users
и posts
. RBAC
(управление доступом на основе ролей). Я устанавливаю deny
и allow
для каждого пользователя, например, следуйте инструкциям.
//allow User1 to do everything
$user->id=1;
$this->ACL->allow($user,'controllers');
//allow User2 to add, edit and view the posts
$user->id=2;
$this->Acl->deny($user, 'controllers');
$this->Acl->allow($user, 'controllers/Posts');
, но здесь я получаю одну проблему:
user2
является получение доступа к edit
posts
из user1
.
пример:
User1
создал post1
.
Теперь User2
вошли в систему, он может редактировать сообщение The User1
«s (т.е. post1- /localhost/myApp/posts/edit/1
)
Вопрос: Как я могу установить разрешение ACL этой проблемы, владелец пост может только редактировать пост и другие не могу.
я могу добиться этого в уровне контроллера просто проверка
if($_SESSION['Auth']['User']['id'] == $Post['Post']['user_id']){
// you're the owner, so u can edit
}else{
//u cant edit, this is not ur post
}
, но мне нужно ACL
работать здесь, Можно ли ?, Пожалуйста, помогите
Благодарности
если у меня есть вопрос javascript, я получу немедленные результаты, но моя неудача, этот трюк. очень плохо, :( –
Не уверен, что если он работает, вы попробовали что-то вроде: '$ this-> Acl-> allow ($ user, 'controllers/Posts'/edit/1)' an so on? – arilia
@ arilia, спасибо за комментарий, я попробовал, не работаю, вы можете предложить любые другие решения :) –