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-10-30 01:48:10 UTC
README
Documantation
Installation
Via Composer
$ composer require m3assy/laravelannotation
If you are developing your application using Laravel 5.5+, the service providers and facades are registered automatically. If you are using lower versions add those lines to config/app.php
'providers' => [ // Service Providers M3assy\LaravelAnnotations\LaravelAnnotationServiceProvider::class, ], 'aliases' => [ // Facade Aliases 'Annotation' => M3assy\LaravelAnnotations\Facades\Annotation::class, ],
Usage
Now, You don't need to add any trait, the package register a custom controller dispatcher which register middlewares under the hood
Example:
<?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(); } }
This package built-in auth
middleware annotation so all what you need is to use annotation like so:
If you need to apply middleware over all controller then add you doc block over controller class, and if you need to specify a controller method with middleware then you can add your annotation above the method in its DocBlock.
if you have a middleware with parameters, so you can use the annotation with parentheses and the values syntax.
Creating Middleware Annotation is pretty easy, all what you need is to call our artisan make:annotation
command like so:
$ php artisan make:annotation Guest
This will generate a file like the following:
<?php namespace App\Foundation\Annotations; use M3assy\LaravelAnnotations\Foundation\Types\MiddlewareAnnotation; /** * @Annotation */ class Guest extends MiddlewareAnnotation { }
If you have middleware parameters that required kind of validation then you can override the following method:
<?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 } }
Notice: If the given value is invalid the engine will neglect this annotation.
You can also access internal controller properties and methods dynamically like so:
<?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 Integration
This package is delivered with Implementation For Laratrust ACL Annotations System
.
To start using roles and permissions all what you need is to use the magic annotations in your controllers like so:
<?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(); } }
Feel free to use Role
and Permission
annotations on the class level and methods level like previous instructions.
Scanning New Roles And Permissions
If you have used any role or permission in its annotation and it does not exist in the acl tables and you need to add them, no need to use any ui or tinker or any type code.
Just use our artisan scan:acl
Command and it will identify automatically what is new in your roles and permissions and detects its type and create new instance for it.
To start scan fire your command like following:
$ php artisan scan:acl
and voila!, We finished :)
If you refreshed any route to a controller contains non-existing role or permission, you will find that it is created and applied.
Future Features
- Implement middleware options.
- Implement Laratrust Teams Feature Annotation.
- Adding more built-in laravel middlewares.
- Implementing magic middleware features for developers to use.
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email 3assy@diva-lab.com instead of using the issue tracker.
Credits
License
MIT. Please see the license file for more information.