CakePHP:删除前检查用户的group_id

时间:2014-01-20 23:40:39

标签: php cakephp

我试图通过检查group_id来保护管理员免于意外删除CakePHP 2.4中的对方。我尝试使用以下删除方法,但它仍然删除用户,不重定向。如何返回用户的group_id,然后重定向并显示“管理员无法删除”的相应闪存?

public function delete($id = null) {
    if (!$this->request->is('post')) {
        throw new MethodNotAllowedException();
    }
    $this->User->id = $id;
    if (!$this->User->exists()) {
        throw new NotFoundException(__('Invalid user'));
    }
    if ($user['User']['group_id'] == 1) { //Check user group
        $this->Session->setFlash(__('Administrators can not be deleted'), 'flash/error');
        $this->redirect(array('action' => 'index'));
        }

    if (!$this->User->delete()) {
        $this->Session->setFlash(__('User could not be deleted'), 'flash/error');
        $this->redirect(array('action' => 'index'));
        }

    if ($this->User->delete()) {
        $this->Session->setFlash(__('User deleted'), 'flash/success');
        $this->redirect(array('action' => 'index'));

}}

1 个答案:

答案 0 :(得分:1)

  1. 您的代码中有拼写错误 - 将=更改为==;那么你的if语句不应该一直评估为真

    if ($user['User']['group_id'] == '1') 
    
  2. Session是一个组件(Controller层的一部分)或一个帮助器(View层的一部分) - 它不打算在Model中使用,也不应该在模型中使用,通常。而redirect()只是一个控制器方法。只需让beforeDelete返回false,然后在你的控制器中检查删除是否失败(即它返回false),如果是,则显示你的错误flash消息,并重定向。