帖子

Laravel 插件管理器安装步骤的说明

Global Sticky Senior Digest

如何在 #Laravel# 中引入 #应用市场管理器##插件管理器##命令字管理器# 呢?

插件市场管理器与应用管理器都是独立存在于 Laravel 之外的项目。引入管理器的步骤有下面 6 个:

  1. 全新初始化一个 Laravel 项目。
  2. 修改项目的依赖要求,允许安装 dev 开发版的扩展包。
  3. 引入插件管理器。 3.1. 配置应用市场管理器与插件管理器的 vcs 安装源,保证能从最新的版本进行安装(仅管理器贡献者需要配置此步骤)。
  4. 配置项目的数据库连接信息。
  5. 初始化 plugins 表迁移。确保后续可以执行插件激活命令,并且将插件信息记录到本地数据库中。
  6. 开始使用,挑选插件。
  7. 安装通用插件 SanctumAuth 配置插件管理授权。
  8. 创建自己的业务插件。

下面,分别演示一下这 6个步骤的具体执行过程与执行结果。

  1. 全新初始化一个 Laravel 项目。 composer create-project --prefer-dist laravel/laravel project-test

截至记录时间(2023-02-15),Laravel 已经发布了 Laravel 10。

  1. 修改项目的依赖要求,允许安装 dev 开发版的扩展包。 编辑项目的 composer.json 文件,找到 "minimum-stability": "stable", 修改为 "minimum-stability": "dev".

修改此项的目的是,允许项目安装开发版的扩展包,能保证项目的部分依赖修复高于稳定版。

  1. 引入插件管理器。 composer require plugins-world/market-manager

3.1. 配置应用市场管理器与插件管理器的 vcs 安装源,保证能从最新的版本进行安装(仅管理器贡献者需要配置此步骤)。

# 配置应用市场管理器、插件管理器、命令字管理器的安装源
composer config repositories.market-manager vcs https://gitee.com/fresns/market-manager
composer config repositories.plugin-manager vcs https://gitee.com/fresns/plugin-manager
composer config repositories.cmd-word-manager vcs https://gitee.com/fresns/cmd-word-manager

在项目中,应用市场管理器和插件管理器。允许项目安装 Laravel 插件。并且进行插件的启用停用等操作。

应用市场管理器与插件管理器等职责不同: 应用市场管理器负责:插件的安装、卸载、插件入库等。需要和数据库、Laravel 应用市场打交道的场景离不开它。 插件管理器负责:插件的安装阶段解压,静态资源分发、卸载阶段的静态资源移除、插件开发阶段的各种日常使用等等。安装插件与开发插件少了它,都将丢失一大利器。

  1. 配置项目的数据库连接信息。
# 配置数据库与项目信息
	APP_NAME
	APP_URL

	DB_HOST
	DB_DATABASE
	DB_USERNAME
	DB_PASSWORD

在 .env 中需要配置上方与应用、数据库相关的配置。

应用市场管理器中存在迁移文件:create_plugins_table。此迁移的作用是方便从数据库层面对插件进行管理。即管理后台点击按钮完成插件的安装、卸载、启用、停用等,以及一些附属表,由插件开发者使用。

  1. 初始化 plugins 表迁移。确保后续可以执行插件激活命令,并且将插件信息记录到本地数据库中。 php artisan migrate

配置好数据库信息后,便可以执行数据库迁移了。迁移执行完成后,数据库将增加一个数据表 plugins,并在 migrations 表增加迁移记录。

  1. 开始使用,挑选插件。
# 正确配置目录的权限,下方以宝塔 linux 环境为例
chown www:www -R .

php artisan fresns

# 此步骤可以在插件管理后台进行在线操作。
php artisan market:require SanctumAuth

php artisan plugin:list

访问 http://域名/market-manager,打开左侧的插件市场菜单,并在其中查找需要的插件。进入插件详情页后点击安装。

⚠️注意:独立打开插件市场,不会显示安装按钮。

  1. 安装通用插件 SanctumAuth 配置插件管理授权。

⚠️注意:

  • MarketManager 默认只允许 localdevelop 环境访问。
  • Plugin 默认全部放行访问。
  • 如果需要限制访问权限,可以在 app/Providers/AppServiceProvider.phpboot 函数中,通过指定 MarketManager 如何进行认证来完成限制,参考如下:

操作步骤:

  1. 安装 SanctumAuth 插件
  2. 通过 artisan 命令 app:user-add 创建一个初始账号
  3. 正确配置主程序。下面是配置参考
  • 通过 AppServiceProvider 授权
\Plugins\MarketManager\MarketManager::auth(function ($request, $next) {
    // return \Illuminate\Support\Facades\Auth::onceBasic() ?: $next($request);
});

\Plugins\MarketManager\MarketManager::pluginAuth(function ($request, $next) {
    // return \Illuminate\Support\Facades\Auth::onceBasic() ?: $next($request);
});

# 配置首页默认路由,并进行 basic 认证(需要在数据库创建 users 信息,通过 email, password 登录)
Route::domain(parse_url(config('app.url'), PHP_URL_HOST))->get('/', function () {
    return redirect('/market-manager');
    return view('welcome');
})->middleware('auth.basic');
  • 通过命令字 \FresnsCmdWord::plugin('Manager')->checkAuth([]) 授权 MarketManager 访问,需要自行实现 ManagercheckAuth 命令字。
  • 通过命令字 \FresnsCmdWord::plugin('Manager')->checkPluginAuth([]) 授权 Plugin 访问,需要自行实现 ManagercheckPluginAuth 命令字。
  1. 创建自己的插件。 php artisan new PluginDemo 或进入插件模式后,执行 fresns new PluginDemo

上述命令将会在 extensions/plugins/ 目录下创建插件 PluginDemo

查看安装说明:https://discuss.plugins-world.cn/post/9S19kdNL

https://discuss.plugins-world.cn/post/hYJORaBi

未登录无法操作

登录 注册

评论 0

列表为空,暂无内容