noeticitservices/plugindev

Nitseditor 插件开发环境

1.5 2020-06-22 06:01 UTC

This package is auto-updated.

Last update: 2024-09-16 18:46:18 UTC


README

Latest Stable Version Total Downloads License

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 属性上注册中间件 AddCustomProviderConfigAccessTokenCustomProvider

'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 函数并在数据库中创建表。