Регистрация политик Laravel возвращает false на Voyager

Я добавил в свой проект Voyager, который использует политику, чтобы проверить, может ли пользователь просматривать / редактировать конкретный проект.

Когда я пытаюсь открыть таблицу проектов из Voyager, я получаю ошибку 403.

Кажется, что когда я удаляю политику из своего массива политик в AuthServiceProvider, я могу получить доступ к таблице проектов в Voyager.

Я попытался добавить в свою политику проверку $ user- ›role_id == 1 (проверить, является ли пользователь администратором), но все равно безуспешно, даже если я заменю ответ политики на true.

Есть идеи, в чем может быть проблема? Спасибо

Редактировать:

Желаемое поведение: я хочу ограничить пользователя от редактирования / просмотра проектов, которые ему не принадлежат, однако я хочу, чтобы администратор имел доступ ко всем проектам из Voyager.


person Joe Abdel Sater    schedule 26.06.2020    source источник


Ответы (2)


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

Похоже, что после того, как вы зарегистрируете политику, Voyager заберет ее, поэтому вам нужно сообщить ему, как он должен себя вести.

<?php

namespace App\Policies;

use App\User;
use App\Project;
use Illuminate\Support\Facades\DB;

use Illuminate\Auth\Access\HandlesAuthorization;

class ProjectPolicy
{
    use HandlesAuthorization;

    /**
     * Create a new policy instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    public function browse(){
        return true;
    }
    
    public function add(){
        return true;
    }

    public function delete(){
        return true;
    }

    public function edit(){
        return true;
    }

    public function read(){
        return true;
    }


    public function access(User $user, Project $project){
        return $project->owner_id == $user->id ;
    }
}

person Joe Abdel Sater    schedule 27.06.2020

Вы пробовали базовые шаги, например: php artisan route:clear composer dump-autoload

person r0ulito    schedule 27.06.2020