我是CakePHP的新手,我试图只允许创建事件的用户能够编辑或删除事件,因此我将当前用户ID与事件的“user_id”字段进行比较当前事件(在用户创建事件时保存)。任何帮助将不胜感激,谢谢,我的代码(Andrew Perk)如下:
public function isAuthorized($user) {
$this->loadModel('User');
if ($user['role'] == 'admin') {
return true;
}
if (in_array($this->action, array('edit', 'delete'))) {
if ($user['id'] != $this->request->data['Event']['user_id']) { ///THIS IS THE LINE I FEEL IS WRONG - PLEASE ADVISE
//echo debug($event['user_id']);
//$this->Session->setFlash(__('You are not allowed to edit someones event'));
return false;
}
}
return true;
}
答案 0 :(得分:0)
有几种方法可以实现这一目标。我发现通常效果最好的是在模型中放置一个回调函数,该回调函数将为您尝试修改的记录设置user_id。然后,在尝试CRUD记录的任何地方,它都不必在控制器中混淆。
您可以在此处详细了解限制用户数据:http://blogchuck.com/2010/06/limit-data-by-user-with-cakephp/
这也适用于删除数据。
希望它有所帮助。快乐的编码!