如何让一般用户访问cakephp中由admin创建的表单?

时间:2019-01-09 09:41:04

标签: php cakephp authorization cakephp-3.0

我正在使用Cakephp建立一个网站,这对我来说是一个新手。我已经创建了一个表单作为Admin,这是课程的一部分。然后,一般用户将注册该课程,并且必须作为课程的一部分填写该表格。我在CoursesEnrolled控制器中设置了一个页面,我需要一个普通用户才能访问表单(从Forms控制器)。当前,当我单击链接进入表单时,我收到警报“警告!您无权访问该位置。”

下面是我在“表单/添加”页面(表单所在的位置)中的代码:

class FormsController extends AppController
{

public function isAuthorized($user){
    // Account denied by admin
     if ($user['role'] == 'denied' || $user['role'] == 'archived') {
         return false;
     }

    //Everyone has basic view
    if (in_array($this->request->action, ['index','view','add'])) {
        return true;
    }

     //only admin can delete
     return parent::isAuthorized($user);
}

在add()中:

        //allow user to add form from formTemplates
    $conditions = $this->buildConditions($this->Forms->FormTemplates);
    $userView = false;
    if(!$this->isAdmin()){
        $conditions['Forms.user_id'] = $this->Auth->user('id');
        $userView = true;
    }

    $this->paginate = [
        'contain' => ['Users','FormTemplates'],
        'conditions'=>$conditions
    ];

    $this->set(compact('form', 'formTemplate', 'preview','userView'));

表单本身是在FormTemplates控制器中创建的。 Forms和CoursesEnrolled表通过user_id连接。

我不确定我在做什么错,因此我们将不胜感激。

0 个答案:

没有答案