CakePHP 2.0访问视图/控制器比较的模型字段值 - 仅允许用户编辑/删除自己发布的项目

时间:2012-11-17 20:05:55

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-appmodel

我是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;
    }

1 个答案:

答案 0 :(得分:0)

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

您可以在此处详细了解限制用户数据:http://blogchuck.com/2010/06/limit-data-by-user-with-cakephp/

这也适用于删除数据。

希望它有所帮助。快乐的编码!