aaronrichards / laravel-roles
处理 Laravel 中的角色、权限和级别的强大包。支持 Laravel 5.3 及更高版本
Requires
- php: >=5.6.4
- eklundkristoffer/seedster: ^3.0
- laravel/framework: 5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
Requires (Dev)
- illuminate/support: ^5.8
- laravel/laravel: 5.8.*
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^7.5
README
Composer
在终端从项目的根目录运行
Laravel 5.8 及以上版本使用
composer require aaronrichards/laravel-roles
发布所有资产
php artisan vendor:publish --tag=laravelroles
HasRoleAndPermission 特性和契约
-
在您的
User
模型中包含HasRoleAndPermission
特性并实现HasRoleAndPermission
契约。以下是一个示例。 -
在您的
User
模型顶部包含use aaronrichards\LaravelRoles\Traits\HasRoleAndPermission;
并实现HasRoleAndPermission
特性。以下是一个示例。
示例 User
模型特性和契约
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Notifications\Notifiable; use aaronrichards\LaravelRoles\Traits\HasRoleAndPermission; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; use HasRoleAndPermission; // rest of your model ... }
迁移和种子
这使用了 Laravel 中的默认用户表。您应该已经有用户表的迁移文件并且已经迁移了。
-
设置所需的表
php artisan migrate
-
更新
database\seeds\DatabaseSeeder.php
以包含种子。以下是一个示例。
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; use Database\Seeds\PermissionsTableSeeder; use Database\Seeds\RolesTableSeeder; use Database\Seeds\ConnectRelationshipsSeeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call(PermissionsTableSeeder::class); $this->call(RolesTableSeeder::class); $this->call(ConnectRelationshipsSeeder::class); //$this->call('UsersTableSeeder'); Model::reguard(); } }
- 使用角色种子一组初始权限、角色和用户。
composer dump-autoload php artisan db:seed
用法
创建角色
$adminRole = config('roles.models.role')::create([ 'name' => 'Admin', 'slug' => 'admin', 'description' => '', 'level' => 5, ]); $moderatorRole = config('roles.models.role')::create([ 'name' => 'Forum Moderator', 'slug' => 'forum.moderator', ]);
由于
Slugable
特性,如果您在 slug 参数中留下空格,它将被自动替换为点,这是由于str_slug
函数的原因。
附加、分离和同步角色
这非常简单。您从数据库中检索用户并调用 attachRole
方法。在 User
和 Role
模型之间存在 BelongsToMany
关系。
$user = config('roles.models.defaultUser')::find($id); $user->attachRole($adminRole); // you can pass whole object, or just an id $user->detachRole($adminRole); // in case you want to detach role $user->detachAllRoles(); // in case you want to detach all roles $user->syncRoles($roles); // you can pass Eloquent collection, or just an array of ids
为新注册的用户分配用户角色
您可以通过更新文件 app\Http\Controllers\Auth\RegisterController.php
在用户注册时分配用户角色。您可以通过包含所需模型并修改 create()
方法来附加用户角色,在注册时分配角色。以下是一个示例
app\Http\Controllers\Auth\RegisterController.php
的更新create()
方法
protected function create(array $data) { $user = config('roles.models.defaultUser')::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); $role = config('roles.models.role')::where('name', '=', 'User')->first(); //choose the default role upon user creation. $user->attachRole($role); return $user; }
检查角色
您现在可以检查用户是否具有所需的角色。
if ($user->hasRole('admin')) { // you can pass an id or slug // }
您也可以这样做
if ($user->isAdmin()) { // }
当然,还有检查多个角色的方法
if ($user->hasRole(['admin', 'moderator'])) { /* | Or alternatively: | $user->hasRole('admin, moderator'), $user->hasRole('admin|moderator'), | $user->hasOneRole('admin, moderator'), $user->hasOneRole(['admin', 'moderator']), $user->hasOneRole('admin|moderator') */ // The user has at least one of the roles } if ($user->hasRole(['admin', 'moderator'], true)) { /* | Or alternatively: | $user->hasRole('admin, moderator', true), $user->hasRole('admin|moderator', true), | $user->hasAllRoles('admin, moderator'), $user->hasAllRoles(['admin', 'moderator']), $user->hasAllRoles('admin|moderator') */ // The user has all roles }
级别
当您创建角色时,有一个可选参数 level
。它默认设置为 1
,但您可以重写它,然后您可以这样做
if ($user->level() > 4) { // }
如果用户具有多个角色,方法
level
返回最高的一个。
Level
对权限继承也有很大的影响。稍后讨论。
创建权限
由于来自 config('roles.models.permission')
的 Permission
模型,这非常简单。
$createUsersPermission = config('roles.models.permission')::create([ 'name' => 'Create users', 'slug' => 'create.users', 'description' => '', // optional ]); $deleteUsersPermission = config('roles.models.permission')::create([ 'name' => 'Delete users', 'slug' => 'delete.users', ]);
附加、分离和同步权限
您可以向角色或直接向特定用户(当然,也可以分离它们)附加权限。
$role = config('roles.models.role')::find($roleId); $role->attachPermission($createUsersPermission); // permission attached to a role $user = config('roles.models.defaultUser')::find($userId); $user->attachPermission($deleteUsersPermission); // permission attached to a user
$role->detachPermission($createUsersPermission); // in case you want to detach permission $role->detachAllPermissions(); // in case you want to detach all permissions $role->syncPermissions($permissions); // you can pass Eloquent collection, or just an array of ids $user->detachPermission($deleteUsersPermission); $user->detachAllPermissions(); $user->syncPermissions($permissions); // you can pass Eloquent collection, or just an array of ids
检查权限
if ($user->hasPermission('create.users')) { // you can pass an id or slug // } if ($user->canDeleteUsers()) { // }
您可以通过与角色相同的方式检查多个权限。您可以利用额外的方法,如 hasOnePermission
或 hasAllPermissions
。
权限继承
级别较高的角色从级别较低的角色的角色中继承权限。
以下是一个 magic
的示例
您有三个角色:用户
、版主
和管理员
。用户有阅读文章的权限,版主可以管理评论,管理员可以创建文章。用户的级别为1,版主级别为2,管理员级别为3。这意味着,版主和管理员也有阅读文章的权限,但管理员还可以管理评论。
如果您不想在应用程序中启用权限继承功能,当您创建角色时只需忽略
level
参数即可。
实体检查
假设您有一篇文章并想编辑它。这篇文章属于一个用户(文章表中有一个user_id
列)。
use App\Article; $editArticlesPermission = config('roles.models.permission')::create([ 'name' => 'Edit articles', 'slug' => 'edit.articles', 'model' => 'App\Article', ]); $user->attachPermission($editArticlesPermission); $article = Article::find(1); if ($user->allowed('edit.articles', $article)) { // $user->allowedEditArticles($article) // }
这个条件检查当前用户是否是文章的所有者。如果不是,它将在之前创建的用户权限中查找。
if ($user->allowed('edit.articles', $article, false)) { // now owner check is disabled // }
Blade 扩展
有四个Blade扩展。基本上,它是经典if语句的替代品。
@role('admin') // @if(Auth::check() && Auth::user()->hasRole('admin')) // user has admin role @endrole @permission('edit.articles') // @if(Auth::check() && Auth::user()->hasPermission('edit.articles')) // user has edit articles permissison @endpermission @level(2) // @if(Auth::check() && Auth::user()->level() >= 2) // user has level 2 or higher @endlevel @allowed('edit', $article) // @if(Auth::check() && Auth::user()->allowed('edit', $article)) // show edit button @endallowed @role('admin|moderator', true) // @if(Auth::check() && Auth::user()->hasRole('admin|moderator', true)) // user has admin and moderator role @else // something else @endrole
中间件
此包包含VerifyRole
、VerifyPermission
和VerifyLevel
中间件。自1.7版起,中间件别名已在\aaronrichards\LaravelRoles\RolesServiceProvider
中注册。您可以在下面的app/Http/Kernel.php
文件中添加它们,如下所示
/** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'role' => \aaronrichards\LaravelRoles\Middleware\VerifyRole::class, 'permission' => \aaronrichards\LaravelRoles\Middleware\VerifyPermission::class, 'level' => \aaronrichards\LaravelRoles\Middleware\VerifyLevel::class, ];
现在您可以轻松保护您的路由。
Route::get('/', function () { // })->middleware('role:admin'); Route::get('/', function () { // })->middleware('permission:edit.articles'); Route::get('/', function () { // })->middleware('level:2'); // level >= 2 Route::get('/', function () { // })->middleware('role:admin', 'level:2'); // level >= 2 and Admin Route::group(['middleware' => ['role:admin']], function () { // });
如果出现问题,它会抛出\aaronrichards\LaravelRoles\App\Exceptions\RoleDeniedException
、\aaronrichards\LaravelRoles\App\Exceptions\PermissionDeniedException
或\aaronrichards\LaravelRoles\App\Exceptions\LevelDeniedException
异常。
您可以在app/Exceptions/Handler.php
文件中捕获这些异常并执行您想要的任何操作。
/** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) { $userLevelCheck = $exception instanceof \aaronrichards\LaravelRoles\App\Exceptions\RoleDeniedException || $exception instanceof \aaronrichards\LaravelRoles\App\Exceptions\RoleDeniedException || $exception instanceof \aaronrichards\LaravelRoles\App\Exceptions\PermissionDeniedException || $exception instanceof \aaronrichards\LaravelRoles\App\Exceptions\LevelDeniedException; if ($userLevelCheck) { if ($request->expectsJson()) { return Response::json(array( 'error' => 403, 'message' => 'Unauthorized.' ), 403); } abort(403); } return parent::render($request, $exception); }
配置
- 您可以更改模型连接、slug分隔符、模型路径,并且还有一个方便的模拟功能。
- 有许多可配置的选项,已经扩展为可以通过
.env
文件变量进行配置。 - 因此,直接编辑配置文件可能不是必需的。
- 请参阅配置文件:roles.php。
<?php return [ /* |-------------------------------------------------------------------------- | Package Connection |-------------------------------------------------------------------------- | | You can set a different database connection for this package. It will set | new connection for models Role and Permission. When this option is null, | it will connect to the main database, which is set up in database.php | */ 'connection' => env('ROLES_DATABASE_CONNECTION', null), 'rolesTable' => env('ROLES_ROLES_DATABASE_TABLE', 'roles'), 'roleUserTable' => env('ROLES_ROLE_USER_DATABASE_TABLE', 'role_user'), 'permissionsTable' => env('ROLES_PERMISSIONS_DATABASE_TABLE', 'permissions'), 'permissionsRoleTable' => env('ROLES_PERMISSION_ROLE_DATABASE_TABLE', 'permission_role'), 'permissionsUserTable' => env('ROLES_PERMISSION_USER_DATABASE_TABLE', 'permission_user'), /* |-------------------------------------------------------------------------- | Slug Separator |-------------------------------------------------------------------------- | | Here you can change the slug separator. This is very important in matter | of magic method __call() and also a `Slugable` trait. The default value | is a dot. | */ 'separator' => env('ROLES_DEFAULT_SEPARATOR', '.'), /* |-------------------------------------------------------------------------- | Models |-------------------------------------------------------------------------- | | If you want, you can replace default models from this package by models | you created. Have a look at `aaronrichards\LaravelRoles\Models\Role` model and | `aaronrichards\LaravelRoles\Models\Permission` model. | */ 'models' => [ 'role' => env('ROLES_DEFAULT_ROLE_MODEL', aaronrichards\LaravelRoles\Models\Role::class), 'permission' => env('ROLES_DEFAULT_PERMISSION_MODEL', aaronrichards\LaravelRoles\Models\Permission::class), 'defaultUser' => env('ROLES_DEFAULT_USER_MODEL', config('auth.providers.users.model')), ], /* |-------------------------------------------------------------------------- | Roles, Permissions and Allowed "Pretend" |-------------------------------------------------------------------------- | | You can pretend or simulate package behavior no matter what is in your | database. It is really useful when you are testing you application. | Set up what will methods hasRole(), hasPermission() and allowed() return. | */ 'pretend' => [ 'enabled' => false, 'options' => [ 'hasRole' => true, 'hasPermission' => true, 'allowed' => true, ], ], /* |-------------------------------------------------------------------------- | Default Seeds |-------------------------------------------------------------------------- | | These are the default package seeds. You can seed the package built | in seeds without having to seed them. These seed directly from | the package. These are not the published seeds. | */ 'defaultSeeds' => [ 'PermissionsTableSeeder' => env('ROLES_SEED_DEFAULT_PERMISSIONS', true), 'RolesTableSeeder' => env('ROLES_SEED_DEFAULT_ROLES', true), 'ConnectRelationshipsSeeder' => env('ROLES_SEED_DEFAULT_RELATIONSHIPS', true), 'UsersTableSeeder' => env('ROLES_SEED_DEFAULT_USERS', false), ], /* |-------------------------------------------------------------------------- | Laravel Roles GUI Settings |-------------------------------------------------------------------------- | | This is the GUI for Laravel Roles to be able to CRUD them | easily and fast. This is optional and is not needed | for your application. | */ // Enable Optional Roles Gui 'rolesGuiEnabled' => env('ROLES_GUI_ENABLED', false), // Enable `auth` middleware 'rolesGuiAuthEnabled' => env('ROLES_GUI_AUTH_ENABLED', true), // Enable Roles GUI middleware 'rolesGuiMiddlewareEnabled' => env('ROLES_GUI_MIDDLEWARE_ENABLED', true), // Optional Roles GUI Middleware 'rolesGuiMiddleware' => env('ROLES_GUI_MIDDLEWARE', 'role:admin'), // User Permissions or Role needed to create a new role 'rolesGuiCreateNewRolesMiddlewareType' => env('ROLES_GUI_CREATE_ROLE_MIDDLEWARE_TYPE', 'role'), //permissions or roles 'rolesGuiCreateNewRolesMiddleware' => env('ROLES_GUI_CREATE_ROLE_MIDDLEWARE_TYPE', 'admin'), // admin, XXX. ... or perms.XXX // User Permissions or Role needed to create a new permission 'rolesGuiCreateNewPermissionMiddlewareType' => env('ROLES_GUI_CREATE_PERMISSION_MIDDLEWARE_TYPE', 'role'), //permissions or roles 'rolesGuiCreateNewPermissionsMiddleware' => env('ROLES_GUI_CREATE_PERMISSION_MIDDLEWARE_TYPE', 'admin'), // admin, XXX. ... or perms.XXX // The parent blade file 'bladeExtended' => env('ROLES_GUI_BLADE_EXTENDED', 'layouts.app'), // Blade Extension Placement 'bladePlacement' => env('ROLES_GUI_BLADE_PLACEMENT', 'yield'), 'bladePlacementCss' => env('ROLES_GUI_BLADE_PLACEMENT_CSS', 'inline_template_linked_css'), 'bladePlacementJs' => env('ROLES_GUI_BLADE_PLACEMENT_JS', 'inline_footer_scripts'), // Titles placement extend 'titleExtended' => env('ROLES_GUI_TITLE_EXTENDED', 'template_title'), // Switch Between bootstrap 3 `panel` and bootstrap 4 `card` classes 'bootstapVersion' => env('ROLES_GUI_BOOTSTRAP_VERSION', '4'), // Additional Card classes for styling - // See: https://bootstrap.ac.cn/docs/4.0/components/card/#background-and-color // Example classes: 'text-white bg-primary mb-3' 'bootstrapCardClasses' => env('ROLES_GUI_CARD_CLASSES', ''), // Bootstrap Tooltips 'tooltipsEnabled' => env('ROLES_GUI_TOOLTIPS_ENABLED', true), // jQuery 'enablejQueryCDN' => env('ROLES_GUI_JQUERY_CDN_ENABLED', true), 'JQueryCDN' => env('ROLES_GUI_JQUERY_CDN_URL', 'https://code.jqueryjs.cn/jquery-3.3.1.min.js'), // Selectize JS 'enableSelectizeJsCDN' => env('ROLES_GUI_SELECTIZEJS_CDN_ENABLED', true), 'SelectizeJsCDN' => env('ROLES_GUI_SELECTIZEJS_CDN_URL', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/js/standalone/selectize.min.js'), 'enableSelectizeJs' => env('ROLES_GUI_SELECTIZEJS_ENABLED', true), 'enableSelectizeJsCssCDN' => env('ROLES_GUI_SELECTIZEJS_CSS_CDN_ENABLED', true), 'SelectizeJsCssCDN' => env('ROLES_GUI_SELECTIZEJS_CSS_CDN_URL', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/css/selectize.min.css'), // Font Awesome 'enableFontAwesomeCDN' => env('ROLES_GUI_FONT_AWESOME_CDN_ENABLED', true), 'fontAwesomeCDN' => env('ROLES_GUI_FONT_AWESOME_CDN_URL', 'https://maxcdn.bootstrap.ac.cn/font-awesome/4.7.0/css/font-awesome.min.css'), // Flash Messaging 'builtInFlashMessagesEnabled' => env('ROLES_GUI_FLASH_MESSAGES_ENABLED', true), /* |-------------------------------------------------------------------------- | Laravel Roles API Settings |-------------------------------------------------------------------------- | | This is the API for Laravel Roles to be able to CRUD them | easily and fast via an API. This is optional and is | not needed for your application. | */ 'rolesApiEnabled' => env('ROLES_API_ENABLED', false), // Enable `auth` middleware 'rolesAPIAuthEnabled' => env('ROLES_API_AUTH_ENABLED', true), // Enable Roles API middleware 'rolesAPIMiddlewareEnabled' => env('ROLES_API_MIDDLEWARE_ENABLED', true), // Optional Roles API Middleware 'rolesAPIMiddleware' => env('ROLES_API_MIDDLEWARE', 'role:admin'), // User Permissions or Role needed to create a new role 'rolesAPICreateNewRolesMiddlewareType' => env('ROLES_API_CREATE_ROLE_MIDDLEWARE_TYPE', 'role'), //permissions or roles 'rolesAPICreateNewRolesMiddleware' => env('ROLES_API_CREATE_ROLE_MIDDLEWARE_TYPE', 'admin'), // admin, XXX. ... or perms.XXX // User Permissions or Role needed to create a new permission 'rolesAPICreateNewPermissionMiddlewareType' => env('ROLES_API_CREATE_PERMISSION_MIDDLEWARE_TYPE', 'role'), //permissions or roles 'rolesAPICreateNewPermissionsMiddleware' => env('ROLES_API_CREATE_PERMISSION_MIDDLEWARE_TYPE', 'admin'), // admin, XXX. ... or perms.XXX /* |-------------------------------------------------------------------------- | Laravel Roles GUI Datatables Settings |-------------------------------------------------------------------------- */ 'enabledDatatablesJs' => env('ROLES_GUI_DATATABLES_JS_ENABLED', false), 'datatablesJsStartCount' => env('ROLES_GUI_DATATABLES_JS_START_COUNT', 25), 'datatablesCssCDN' => env('ROLES_GUI_DATATABLES_CSS_CDN', 'https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css'), 'datatablesJsCDN' => env('ROLES_GUI_DATATABLES_JS_CDN', 'https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js'), 'datatablesJsPresetCDN' => env('ROLES_GUI_DATATABLES_JS_PRESET_CDN', 'https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js'), /* |-------------------------------------------------------------------------- | Laravel Roles Package Integration Settings |-------------------------------------------------------------------------- */ 'laravelUsersEnabled' => env('ROLES_GUI_LARAVEL_ROLES_ENABLED', false), ];
环境文件
# Roles Default Models
ROLES_DEFAULT_USER_MODEL=App\User
ROLES_DEFAULT_ROLE_MODEL=aaronrichards\LaravelRoles\Models\Role
ROLES_DEFAULT_PERMISSION_MODEL=aaronrichards\LaravelRoles\Models\Permission
# Roles database information
ROLES_DATABASE_CONNECTION=null
ROLES_ROLES_DATABASE_TABLE=roles
ROLES_ROLE_USER_DATABASE_TABLE=role_user
ROLES_PERMISSIONS_DATABASE_TABLE=permissions
ROLES_PERMISSION_ROLE_DATABASE_TABLE=permission_role
ROLES_PERMISSION_USER_DATABASE_TABLE=permission_user
# Roles Misc Settings
ROLES_DEFAULT_SEPARATOR='.'
# Roles Database Seeder Settings
ROLES_SEED_DEFAULT_PERMISSIONS=true
ROLES_SEED_DEFAULT_ROLES=true
ROLES_SEED_DEFAULT_RELATIONSHIPS=true
ROLES_SEED_DEFAULT_USERS=false
# Roles GUI Settings
ROLES_GUI_ENABLED=false
ROLES_GUI_AUTH_ENABLED=true
ROLES_GUI_MIDDLEWARE_ENABLED=true
ROLES_GUI_MIDDLEWARE='role:admin'
ROLES_GUI_CREATE_ROLE_MIDDLEWARE_TYPE='role'
ROLES_GUI_CREATE_ROLE_MIDDLEWARE_TYPE='admin'
ROLES_GUI_CREATE_PERMISSION_MIDDLEWARE_TYPE='role'
ROLES_GUI_CREATE_PERMISSION_MIDDLEWARE_TYPE='admin'
ROLES_GUI_BLADE_EXTENDED='layouts.app'
ROLES_GUI_TITLE_EXTENDED='template_title'
ROLES_GUI_LARAVEL_ROLES_ENABLED=false
ROLES_GUI_TOOLTIPS_ENABLED=true
ROLES_GUI_DATATABLES_JS_ENABLED=false
更多信息
有关更多信息,请参阅HasRoleAndPermission契约。
可选GUI路由
+--------+-----------+---------------------------------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------+---------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+---------------------------------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------+---------------------+
| | GET|HEAD | permission-deleted/{id} | laravelroles::permission-show-deleted | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@show | web,auth,role:admin |
| | DELETE | permission-destroy/{id} | laravelroles::permission-item-destroy | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@destroy | web,auth,role:admin |
| | PUT | permission-restore/{id} | laravelroles::permission-restore | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@restorePermission | web,auth,role:admin |
| | POST | permissions | laravelroles::permissions.store | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@store | web,auth,role:admin |
| | GET|HEAD | permissions | laravelroles::permissions.index | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@index | web,auth,role:admin |
| | GET|HEAD | permissions-deleted | laravelroles::permissions-deleted | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@index | web,auth,role:admin |
| | DELETE | permissions-deleted-destroy-all | laravelroles::destroy-all-deleted-permissions | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@destroyAllDeletedPermissions | web,auth,role:admin |
| | POST | permissions-deleted-restore-all | laravelroles::permissions-deleted-restore-all | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelpermissionsDeletedController@restoreAllDeletedPermissions | web,auth,role:admin |
| | GET|HEAD | permissions/create | laravelroles::permissions.create | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@create | web,auth,role:admin |
| | PUT|PATCH | permissions/{permission} | laravelroles::permissions.update | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@update | web,auth,role:admin |
| | GET|HEAD | permissions/{permission} | laravelroles::permissions.show | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@show | web,auth,role:admin |
| | DELETE | permissions/{permission} | laravelroles::permissions.destroy | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@destroy | web,auth,role:admin |
| | GET|HEAD | permissions/{permission}/edit | laravelroles::permissions.edit | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelPermissionsController@edit | web,auth,role:admin |
| | GET|HEAD | role-deleted/{id} | laravelroles::role-show-deleted | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@show | web,auth,role:admin |
| | DELETE | role-destroy/{id} | laravelroles::role-item-destroy | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@destroy | web,auth,role:admin |
| | PUT | role-restore/{id} | laravelroles::role-restore | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@restoreRole | web,auth,role:admin |
| | POST | roles | laravelroles::roles.store | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@store | web,auth,role:admin |
| | GET|HEAD | roles | laravelroles::roles.index | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@index | web,auth,role:admin |
| | GET|HEAD | roles-deleted | laravelroles::roles-deleted | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@index | web,auth,role:admin |
| | DELETE | roles-deleted-destroy-all | laravelroles::destroy-all-deleted-roles | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@destroyAllDeletedRoles | web,auth,role:admin |
| | POST | roles-deleted-restore-all | laravelroles::roles-deleted-restore-all | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesDeletedController@restoreAllDeletedRoles | web,auth,role:admin |
| | GET|HEAD | roles/create | laravelroles::roles.create | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@create | web,auth,role:admin |
| | DELETE | roles/{role} | laravelroles::roles.destroy | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@destroy | web,auth,role:admin |
| | PUT|PATCH | roles/{role} | laravelroles::roles.update | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@update | web,auth,role:admin |
| | GET|HEAD | roles/{role} | laravelroles::roles.show | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@show | web,auth,role:admin |
| | GET|HEAD | roles/{role}/edit | laravelroles::roles.edit | aaronrichards\LaravelRoles\App\Http\Controllers\LaravelRolesController@edit | web,auth,role:admin |
+--------+-----------+---------------------------------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------+---------------------+
致谢
《HasRoleAndPermission 特性及契约》是romanbican/roles
的一个改编。我喜欢他的方法,所以我使用了它们。
许可协议
此包是免费软件,根据MIT许可协议分发。祝您享受!