承接 forest-lynx/moonshine-resource-lock 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

forest-lynx/moonshine-resource-lock

Composer 安装命令:

composer require forest-lynx/moonshine-resource-lock

包简介

README 文档

README

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

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.

Note

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

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

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

preview

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

ForestLynx\MoonShine\Resources\LockResource.

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

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

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

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

php artisan resource-lock:clear-old

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

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

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

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

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

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

Лицензия

Лицензия MIT.

forest-lynx/moonshine-resource-lock 适用场景与选型建议

forest-lynx/moonshine-resource-lock 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 575 次下载、GitHub Stars 达 13, 最近一次更新时间为 2024 年 07 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「resource lock」 「moonshine」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 forest-lynx/moonshine-resource-lock 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 forest-lynx/moonshine-resource-lock 我们能提供哪些服务?
定制开发 / 二次开发

基于 forest-lynx/moonshine-resource-lock 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 575
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 13
  • 点击次数: 12
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 13
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-07-04