noeticitservices / plugindev
Nitseditor 插件开发环境
Requires
- php: >=7.1.3
- laravel/framework: 5.8.*|^6.0|^7.0
- laravel/passport: ^7.0|^8.0|^9.0
- laravel/telescope: ^1.0|^2.0|^3.0
- wikimedia/composer-merge-plugin: dev-master
README
Nitseditor 插件开发环境
此包需要安装 Laravel,首先在您的系统中安装 Laravel,现在转到已安装目录并输入
$ composer require noeticitservices/plugindev
现在在 config/app.php
文件中添加以下服务提供者
Nitseditor\System\Providers\NitsEditorServiceProvider::class,
现在在 config
文件夹中发布配置文件
php artisan vendor:publish
配置 passport 设置
使用以下配置您的模型
<?php
namespace Noetic\Plugins\blog\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
在 config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'nitseditor_blog' => [
'driver' => 'passport',
'provider' => 'blogUsers',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'blogUsers' => [
'driver' => 'eloquent',
'model' => Noetic\Plugins\blog\Models\User::class,
]
],
在 app/Http/Kernel
的 $middlewareGroups
属性上注册中间件 AddCustomProvider
和 ConfigAccessTokenCustomProvider
。
'api' => [
'throttle:60,1',
'bindings',
'nits-provider'
],
'nits-provider' => [
\Nitseditor\System\Middlewares\AddCustomProvider::class,
\Nitseditor\System\Middlewares\ConfigAccessTokenCustomProvider::class,
]
];
在 AuthServiceProvider
中封装使用已注册中间件的访问令牌的 passport 路由
public function boot()
{
$this->registerPolicies();
Passport::routes();
// Middleware `api` that contains the `custom-provider` middleware group defined on $middlewareGroups above
Route::group(['middleware' => 'api'], function () {
Passport::routes(function ($router) {
return $router->forAccessTokens();
});
});
}
现在配置您的 composer.json
文件,您需要在 psr-4 负载器属性中定义,它应该看起来像这样
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Noetic\\Plugins\\": "plugins/"
}
},
您可以通过刷新主页来检查您的安装,您将看到 nits 编辑器的主页。
用法
在 /oauth/token 的请求中添加提供者参数
POST /oauth/token HTTP/1.1
Host: localhost
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
Cache-Control: no-cache
{
"username":"user@domain.com",
"password":"password",
"grant_type" : "password",
"client_id": "client-id",
"client_secret" : "client-secret",
"provider" : "blogUsers"
}
您可以根据需要将守卫传递给 auth 中间件。例如
Route::group(['middleware' => ['api', 'auth:nitseditor_blog']], function () {
Route::get('/user', function ($request) {
// Get the logged blog user instance
return $request->user(); // You can use too `$request->user('nitseditor_blog')` passing the guard.
});
});
通过命令 php artisan migrate
进行 passport 迁移,然后写入 php artisan passport:install
以执行初始安装
要播种插件数据库,您可以执行以下命令
php artisan db:seed --class="Noetic\Plugins\blog\Databases\seeds\InstallDatabase"
要卸载,您可以执行以下操作
php artisan db:seed --class="Noetic\Plugins\blog\Databases\seeds\InstallDatabase"
其中在类名中写入的 blog
是您的插件名称。或者,您可以将这些包含在 database/seeds/DatabaseSeeder
类中,如下所示
public function run()
{
$this->call(\Noetic\Plugins\blog\Databases\seeds\InstallDatabase::class);
}
php artisan nitsPlugin 命令
有一些命令您可以使用来创建插件,例如,假设您想创建博客插件,则可以键入
$ php artisan nitsPlugin:createPlugin
它将要求输入需要实现的插件名称,这将创建包内的插件文件夹并创建运行插件所需的必要文件。例如,我们将其命名为 Blog
要使插件正常工作,您需要转到 config
文件夹和 nitseditor.php
文件,并需要定义您的插件,如下所示
'packages' => [
'blog' => [
'name' => 'Blog', //This is the folder name which will be created, this should be exaclty same as name defined while creating plugin
'description' => 'NitsEditor Blog for Laravel 5.4', //A small description of project or plugin.
],
],
现在设置完成后,您可以通过将插件名称作为主页路由的前缀来交叉检查功能。例如,在这种情况下,您可以看到
https:///your_project_folder/Blog/
您可以看到页面出现,并描述它来自插件文件夹。
同样,您可以使用此命令拥有模型
$ php artisan nitsPlugin:makeModel Blog
您可以在 Plugins/Blog/Models/
文件夹中检查您的文件。
对于控制器,您可以键入
$ php artisan nitsPlugin:makeController Blog
默认情况下,它将在 Plugins/Blog/Controllers/BlogController
文件夹中创建 BlogController
类
您可以使用此命令创建数据库和表
$ php artisan nitsPlugin:createDatabase Blog table=blogs
默认情况下,它将使用类 BlogTable
创建数据库,并在 Plugins/Blog/Databases/
中创建名为 blog 的表
对于迁移数据库
$ php artisan migrate
这将默认使用 BlogTable
类中的 up 函数并在数据库中创建表。