m3assy/laravelannotation

1.6 2020-12-07 10:50 UTC

README

Latest Version on Packagist Total Downloads Build Status

文档

安装

通过Composer

$ composer require m3assy/laravelannotation

如果你正在使用Laravel 5.5+开发应用程序,服务提供者和外观将被自动注册。如果你使用的是较低版本,请将以下行添加到config/app.php中

'providers' => [
    // Service Providers
    M3assy\LaravelAnnotations\LaravelAnnotationServiceProvider::class,
],
'aliases' => [
    // Facade Aliases
    'Annotation' => M3assy\LaravelAnnotations\Facades\Annotation::class,
],

用法

现在,你不需要添加任何特质,该包注册了一个自定义控制器分发器,它会在幕后注册中间件

示例

<?php

namespace App\Http\Controllers\Modules;

use App\Http\Controllers\Controller;

/**
 * Example For Middleware Class Annotation
 * @Auth
 */
class UserController extends Controller
{
    /**
     * Example For Middleware Method Annotation
     * @Auth
     * @ExampleAnnotationWithParameter("values") 
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return response();
    }
}

此包内置了auth中间件注解,所以你需要做的就是使用这样的注解:如果你想对所有控制器应用中间件,请在其类上添加文档块,如果你想指定具有中间件的方法,则可以在方法的文档块上方添加你的注解。

如果你的中间件有参数,则可以使用带有括号和值的注解。

创建中间件注解非常简单,你只需要像这样调用我们的artisan make:annotation 命令

  $ php artisan make:annotation Guest

这将生成如下文件

<?php

namespace App\Foundation\Annotations;

use M3assy\LaravelAnnotations\Foundation\Types\MiddlewareAnnotation;

/**
 * @Annotation
 */
class Guest extends MiddlewareAnnotation
{

}

如果你有需要验证的中间件参数,则可以重写以下方法

<?php

namespace App\Foundation\Annotations;

use M3assy\LaravelAnnotations\Foundation\Types\MiddlewareAnnotation;

/**
 * @Annotation
 */
class Guest extends MiddlewareAnnotation
{
    /**
    * @return bool
    */
    public function validateGivenValue()
    {
        // Your Validation Logic Goes Here
    }
}

注意:如果给定的值无效,则引擎将忽略此注解。

你也可以像这样动态地访问内部控制器属性和方法

<?php

namespace App\Http\Controllers\Modules;

use App\Http\Controllers\Controller;

/**
 * Example For Middleware Class Annotation
 * @Auth
 */
class UserController extends Controller
{
    public $value;
    /**
     * Example For Middleware Method Annotation
     * @Auth
     * @ExampleAnnotationWithParameter("{$this->value}") 
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return response();
    }
}

Laratrust集成

此包提供了对Laratrust ACL 注解系统的实现。

要开始使用角色和权限,你只需要在你的控制器中使用这些魔法注解,如下所示

<?php

namespace App\Http\Controllers\Modules;

use App\Http\Controllers\Controller;

/**
 * @Role("superadmin")
 */
class UserController extends Controller
{
    /**
     * @Permission("list-users|create-users") 
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return response();
    }
}

请随意在类级别和方法级别使用RolePermission注解,如前面的说明。

扫描新的角色和权限

如果你在你的注解中使用了任何角色或权限,并且它在acl表中不存在,你需要添加它们,不需要使用任何UI或tinker或任何类型的代码。只需使用我们的artisan scan:acl命令,它将自动识别你的角色和权限中的新内容,并检测其类型,为新实例创建新实例。要开始扫描,执行以下命令

  $ php artisan scan:acl

瞧!我们完成了:)

如果你刷新了任何路由到包含不存在角色或权限的控制器,你会发现它已经创建并应用了。

未来功能

  • 实现中间件选项。
  • 实现Laratrust团队功能注解。
  • 添加更多内置的Laravel中间件。
  • 为开发者实现魔法中间件功能。

贡献

请参阅contributing.md以获取详细信息和一个待办事项列表。

安全

如果你发现任何与安全相关的问题,请通过电子邮件3assy@diva-lab.com报告,而不是使用问题跟踪器。

鸣谢

许可证

MIT。有关更多信息,请参阅许可证文件