m3assy / laravelannotation
Requires
- doctrine/annotations: ^1.8
- illuminate/support: ~5|~6
- santigarcor/laratrust: ^5.2
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-30 01:32:31 UTC
README
文档
安装
通过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(); } }
请随意在类级别和方法级别使用Role
和Permission
注解,如前面的说明。
扫描新的角色和权限
如果你在你的注解中使用了任何角色或权限,并且它在acl表中不存在,你需要添加它们,不需要使用任何UI或tinker或任何类型的代码。只需使用我们的artisan scan:acl
命令,它将自动识别你的角色和权限中的新内容,并检测其类型,为新实例创建新实例。要开始扫描,执行以下命令
$ php artisan scan:acl
瞧!我们完成了:)
如果你刷新了任何路由到包含不存在角色或权限的控制器,你会发现它已经创建并应用了。
未来功能
- 实现中间件选项。
- 实现Laratrust团队功能注解。
- 添加更多内置的Laravel中间件。
- 为开发者实现魔法中间件功能。
贡献
请参阅contributing.md以获取详细信息和一个待办事项列表。
安全
如果你发现任何与安全相关的问题,请通过电子邮件3assy@diva-lab.com报告,而不是使用问题跟踪器。
鸣谢
许可证
MIT。有关更多信息,请参阅许可证文件。