Laravel добавляет шлюз с поставщиком: опубликовать

#laravel #laravel-7

#laravel #laravel-7

Вопрос:

Итак, я разрабатываю пакет composer, который добавляет несколько моих повторно используемых кодов в новый проект Laravel. До сих пор мне удавалось добавлять основные файлы перевода и некоторые модели, маршруты в моем сервис-провайдере с помощью $this-&&t;publishes() и $this-&&t;loadRoutesFrom() в моем boot() методе.

Теперь я хочу добавить Gate в этот пакет, но я застрял. Каким-то образом я должен зарегистрировать их в AuthServiceProvider проекте при запуске. Было бы очень приятно, если бы кто-нибудь мог дать мне несколько советов, как выполнить эту задачу.

Комментарии:

1. Как это связано с Composer?

2. Поскольку я создаю пакет composer. Но я подчеркиваю, что это больше связано с laravel.

Ответ №1:

Если вы хотите зарегистрировать политики, нет необходимости использовать AuthServiceProvider, вы можете просто использовать IlluminateSupportFacadesGate::policy($key, $value) .

Вы можете сделать это в своем собственном ServiceProvider вашего пакета. Если вы хотите определить возможности, вы можете добавить boot метод, подобный этому:

     use IlluminateContractsAuthAccessGate as GateContract;

    // ...

    public function boot(GateContract $&ate)
    {
        $&ate-&&t;define('update-post', function ($user, $post) {
            return $user-&&t;id === $post-&&t;user_id;
        });
    }
  

Это разрешит экземпляр &ate для вас и позволит вам определить возможности. Важно использовать boot метод, поскольку таким образом вы можете быть уверены, что каждая служба уже зарегистрирована.