Laravel 插件管理器安装步骤的说明
如何在 #Laravel# 中引入 #应用市场管理器#、#插件管理器# 与 #命令字管理器# 呢?
插件市场管理器与应用管理器都是独立存在于 Laravel 之外的项目。引入管理器的步骤有下面 6 个:
- 全新初始化一个 Laravel 项目。
- 修改项目的依赖要求,允许安装 dev 开发版的扩展包。
- 引入插件管理器。 3.1. 配置应用市场管理器与插件管理器的 vcs 安装源,保证能从最新的版本进行安装(仅管理器贡献者需要配置此步骤)。
- 配置项目的数据库连接信息。
- 初始化 plugins 表迁移。确保后续可以执行插件激活命令,并且将插件信息记录到本地数据库中。
- 开始使用,挑选插件。
- 安装通用插件
SanctumAuth
配置插件管理授权。 - 创建自己的业务插件。
下面,分别演示一下这 6个步骤的具体执行过程与执行结果。
- 全新初始化一个 Laravel 项目。
composer create-project --prefer-dist laravel/laravel project-test
,
截至记录时间(2023-02-15),Laravel 已经发布了 Laravel 10。
- 修改项目的依赖要求,允许安装 dev 开发版的扩展包。
编辑项目的 composer.json 文件,找到
"minimum-stability": "stable"
, 修改为"minimum-stability": "dev"
.
修改此项的目的是,允许项目安装开发版的扩展包,能保证项目的部分依赖修复高于稳定版。
- 引入插件管理器。
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 应用市场打交道的场景离不开它。 插件管理器负责:插件的安装阶段解压,静态资源分发、卸载阶段的静态资源移除、插件开发阶段的各种日常使用等等。安装插件与开发插件少了它,都将丢失一大利器。
- 配置项目的数据库连接信息。
# 配置数据库与项目信息
APP_NAME
APP_URL
DB_HOST
DB_DATABASE
DB_USERNAME
DB_PASSWORD
在 .env 中需要配置上方与应用、数据库相关的配置。
应用市场管理器中存在迁移文件:create_plugins_table
。此迁移的作用是方便从数据库层面对插件进行管理。即管理后台点击按钮完成插件的安装、卸载、启用、停用等,以及一些附属表,由插件开发者使用。
- 初始化 plugins 表迁移。确保后续可以执行插件激活命令,并且将插件信息记录到本地数据库中。
php artisan migrate
配置好数据库信息后,便可以执行数据库迁移了。迁移执行完成后,数据库将增加一个数据表 plugins,并在 migrations 表增加迁移记录。
- 开始使用,挑选插件。
# 正确配置目录的权限,下方以宝塔 linux 环境为例
chown www:www -R .
php artisan fresns
# 此步骤可以在插件管理后台进行在线操作。
php artisan market:require SanctumAuth
php artisan plugin:list
访问 http://域名/market-manager
,打开左侧的插件市场菜单,并在其中查找需要的插件。进入插件详情页后点击安装。
⚠️注意:独立打开插件市场,不会显示安装按钮。
- 安装通用插件
SanctumAuth
配置插件管理授权。
⚠️注意:
- MarketManager 默认只允许
local
与develop
环境访问。 - Plugin 默认全部放行访问。
- 如果需要限制访问权限,可以在
app/Providers/AppServiceProvider.php
的boot
函数中,通过指定 MarketManager 如何进行认证来完成限制,参考如下:
操作步骤:
- 安装 SanctumAuth 插件
- 通过 artisan 命令 app:user-add 创建一个初始账号
- 正确配置主程序。下面是配置参考
- 通过
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 访问,需要自行实现Manager
的checkAuth
命令字。 - 通过命令字
\FresnsCmdWord::plugin('Manager')->checkPluginAuth([])
授权 Plugin 访问,需要自行实现Manager
的checkPluginAuth
命令字。
- 创建自己的插件。
php artisan new PluginDemo
或进入插件模式后,执行fresns new PluginDemo
上述命令将会在 extensions/plugins/
目录下创建插件 PluginDemo
。
查看安装说明:https://discuss.plugins-world.cn/post/9S19kdNL