Как я могу дать обычному пользователю доступ к форме, созданной администратором в cakephp? - PullRequest
0 голосов
/ 09 января 2019

Я настраиваю сайт с помощью Cakephp, который я очень новичок в использовании. Я создал форму в качестве администратора, которая является частью курса. Обычный пользователь затем записывается на этот курс и должен заполнить эту форму как часть курса. У меня есть страница, настроенная в контроллере CoursesEnrolled, и мне нужен обычный пользователь, чтобы иметь возможность доступа к форме (из контроллера форм). В настоящее время, когда я нажимаю на ссылку, чтобы перейти к форме, я получаю предупреждение «Предупреждение! У вас нет прав доступа к этому местоположению».

Ниже приведен мой код на странице «Формы / добавить» (где находится форма):

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);
}

А внутри надстройки ():

        //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.

Я не уверен, что я делаю здесь неправильно, поэтому любая помощь будет высоко ценится.

...