0

我对 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;
    }
4

1 回答 1

0

有几种方法可以做到这一点。我发现通常效果最好的方法是在模型中放置一个回调,该回调将为您尝试修改的记录设置 user_id。然后它不必在你试图 CRUD 记录的任何地方都在控制器中混在一起。

您可以在此处阅读有关限制用户数据的更多信息:http: //blogchuck.com/2010/06/limit-data-by-user-with-cakephp/

这也适用于删除数据。

希望能帮助到你。快乐编码!

于 2012-11-28T20:47:57.910 回答