Skip to content

forest-lynx/moonshine-resource-lock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.