Skip to content

Latest commit

 

History

History
172 lines (137 loc) · 9.28 KB

README.md

File metadata and controls

172 lines (137 loc) · 9.28 KB

Блокировка ресурсов

Latest Stable Version Total Downloads Software License
Laravel PHP PHP

Documentation in English

Добавляет функцию блокировки ресурсов в административную панель MoonShine. Когда пользователь редактирует запись, ресурс блокируется, чтобы другие пользователи не могли одновременно вносить изменения.

Версия пакета Версия админ-панели MoonShine
^1.x ^2.18.0
^2.x ^3.x

Содержание

Установка

Команда для установки:

composer require forest-lynx/moonshine-resource-lock

Затем запустите команду установки:

php artisan resource-lock:install

Команда запустит миграции, и предложит опубликовать конфигурационный файл и языковые файлы.

Использование

Пакет resource-lock позволяет заблокировать ресурс и предотвратить его редактирование другими пользователями. В настоящее время блокировка применяется только при редактировании ресурса в режиме отдельной страницы.

Активация блокировки ресурса

Для активации блокировки ресурса необходимо добавить в ModelResource трейт WithResourceLock.

<?php
//...
use ForestLynx\MoonShine\Traits\WithResourceLock;

class PostResource extends ModelResource
{
    use WithResourceLock;
//...

Теперь Ваш ресурс может быть заблокирован.

Конфигурация

preview

Время блокировки ресурса.

По умолчанию ресурс будет заблокирован на 10 минут, или до момента его сохранения, в зависимости от того что наступит раньше. Время блокировки регулируется параметром lock_time, который указан в конфигурационном файле, значение указывается в минутах.

Отображение информации о пользователе заблокировавшем ресурс

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

За вывод информации о пользователе отвечает параметр show_owner_modal (который по умолчанию имеет значение true) в конфигурационном файле.

В модальном окне отображается только имя пользователя, заблокировавшего доступ к ресурсу. Для отображения иной информации вы можете создать свой класс, который будет унаследован от ResourceLockOwnerAction, и зарегистрировать его в конфигурационном файле. Таким образом, вы сможете настроить отображение дополнительных сведений о заблокировавшем доступ пользователе в модальном окне. Например:

<?php

namespace App\Actions;

use ForestLynx\ResourceLock\Actions\ResourceLockOwnerAction;

class CustomActions extends ResourceLockOwnerAction
{
    public function execute(Model|Authenticatable $user): ?string
    {
        return $user->email;
    }
}

Затем внести его в конфигурационный файл:

    //...
    -'resource_lock_owner' => \ForestLynx\MoonShine\Actions\ResourceLockOwnerAction::class
    +'resource_lock_owner' => \App\Actions\CustomActions::class
    //...
Редирект для блокировки ресурса

По умолчанию, когда вы нажимаете кнопку «Назад» в модальном окне заблокированного ресурса, происходит переход на индексную страницу ресурса. Однако вы можете изменить URL страницы редиректа, переопределив метод getReturnUrlResourceLock в вашем ресурсе.

<?php
//...
class PostResource extends ModelResource
{
    //...
    use WithResourceLock;
    //...
    protected function getReturnUrlResourceLock(): string
    {
        return 'https://...';
    }
    //...
}
Отображение информации о заблокированном ресурсе на индексной странице

На индексной странице ресурса по умолчанию отображается информация о том, что доступ к ресурсу был заблокирован другим пользователем. Это отображается в виде специального значка: preview

Чтобы скрыть эту информацию на индексной странице ресурса, можно в конфигурационном файле установить для параметра resource_lock_to_index_page значение false. В зависимости от ваших потребностей, вы можете настроить отображение информации о заблокированном ресурсе на индексной странице ресурса с помощью объявления метода в вашем ресурсе isDisplayOnIndexPage(). Этот метод должен возвращать логическое значение true или false. Например:

<?php
//...
class PostResource extends ModelResource
{
    //...
    use WithResourceLock;
    //...
    public function isDisplayOnIndexPage(): bool
    {
        return false;
    }
    //...
}

Caution

Пока это работает только для ресурсов с отображением через TableBuilder.

Отображение всех блокировок

В этом пакете можно настроить отображение всех заблокированных ресурсов.

preview

Название ресурса для использования в меню административной панели MoonShine:

ForestLynx\MoonShine\Resources\LockResource.

Удаление записи приводит к разблокировке ресурса.

Чтобы узнать больше о доступных вариантах отображения, обратитесь к документации административной панели MoonShine

Очистка от устаревших записей о блокировке ресурсов

Для очистки таблицы базы данных от всех устаревших записей о блокировке ресурсов запустите команду:

php artisan resource-lock:clear-old

Публикация конфигурации и языковых файлов

Чтобы опубликовать конфигурационный файл запустите команду:

php artisan vendor:publish --tag=resource-lock-config

Подробнее о конфигурации пакета.

Для публикации языковых файлов запустите команду:

php artisan vendor:publish --tag=resource-lock-lang

Лицензия

Лицензия MIT.