despark / laravel-permission-roles
laravel 框架的权限角色包
v2.0.0
2015-10-16 14:33 UTC
Requires
- php: >=5.4.0
- illuminate/auth: 5.1.*
- illuminate/database: 5.1.*
- illuminate/routing: 5.1.*
- illuminate/support: 5.1.*
This package is not auto-updated.
Last update: 2024-09-18 10:02:17 UTC
README
安装
打开您的项目中的 composer.json
文件,并将以下内容添加到 require 数组中
"despark/laravel-permission-roles" : "1.0.*"
现在运行 composer update
安装新的依赖。
安装完成后,您需要在 app/config/app.php
文件的 providers 数组中注册服务提供者
'providers' => array( ... 'Despark\LaravelPermissionRoles\LaravelPermissionRolesServiceProvider', );
迁移所需的表:执行 php artisan migrate --package="despark/laravel-permission-roles"
命令将创建:roles, role_user, permissions, permission_role - 表
如何使用它
- 用户模型示例
use Despark\LaravelPermissionRoles\PermissionTrait; class User extends Eloquent { use PermissionTrait; }
- 将角色附加到用户
$input = Input::all(); $user = new User(); $user = $user->create($input); $user->attachRole(array_get($input, 'role'));
- 更新用户角色
$user = User::findOrFail($id) $user->changeRole(Input::get('role'));
- 使用角色模型
use Despark\LaravelPermissionRoles\Role; class RoleController extends BaseController { Role::findOrFail($id); }
- 将权限添加到角色
$input = Input::all(); $role = Role::findOrFail($id); $role->update($input); if ($role->permissions->count()) { $role->permissions()->detach($role->permissions->lists('id')); $role->permissions()->attach(array_get($input, 'permissions')); }
- 检查当前用户是否有权限
Auth::user()->canLoginToAdmin() // permission slug 'login_to_admin' Auth::user()->canAddUsers() // permission slug 'edit_user' Auth::user()->canEditUsers() // permission slug 'edit_page'
基于权限的路由
filters.php
Route::filter('admin.permission', function () { $route = explode('/', \Route::getCurrentRoute()->getPath()); if (!Auth::user()->can('edit_'.str_replace('-', '_', array_get($route, 1)))) { throw new \Exception("Sorry, you don't have permission to access this page."); } });
routes.php
Route::group( ['before' => 'admin.permission'], function () { Route::resource('user', 'UserController'); } ); Route::group( ['before' => 'admin.permission'], function () { Route::resource('page', 'PageController'); } );