- 基于laravel的rbac后台系统
- php >= 7.0
- Composer
- laravel >= 5.8
- spatie/laravel-permission
$ composer require lazywe/lazy-admin -vvv
- 修改config/auth.php
// guards 新增如下
'lazy-admin' => [
'driver' => 'session',
'provider' => 'lazy-admin',
]
// providers新增如下
'lazy-admin' => [
'driver' => 'eloquent',
'model' => Lazy\Admin\Models\AdminUser::class
]
- 注意
若mysql版本小于5.7.7 需要修改AppServiceProvider
新增如下
use Illuminate\Support\ServiceProvider;
boot方法新增如下
Schema::defaultStringLength(191);
注意修改数据库配置
- 生成配置文件命令如下
$ php7 artisan lazy-admin:install
- 若自定义connection 可修改config/lazy-admin.conf 文件中的 connection
- 生成数据库命令如下
$ php7 artisan lazy-admin:db
- 打开地址 http://localhost/admin
- 用户名 [email protected]
- 密码 123456
- 注意:
- 后台入口前缀可以更改
lazy-admin.prefix
- 所有后台路由需要使用
route()
方法,否则后台路由前缀
可能无法动态更换
-
权限验证中间件 lazy-admin
-
注意:所有需要权限验证的路由需要使用
lazy-admin
中间件,否则... -
参考:App\Providers\RouteServiceProvider::class 文件新增如下
<?php
//...
/**
* Define the routes for the application.
*/
public function map()
{
//...
//加载后台权限组
$this->mapAdminRoutes();
}
/**
* 加载后台权限组
*/
protected function mapAdminRoutes()
{
Route::prefix(config('lazy-admin.prefix'))
->middleware('web', 'lazy-admin')
->namespace(sprintf("%s\Admin", $this->namespace))
->group(function ($router) {
// 后台路由文件在routes下的admin目录下 路由文件分组
foreach (glob(base_path('routes/admin') . '/*.php') as $file) {
$router->group([], $file);
}
});
}
// ...
// 控制角色 多个 |隔开
Route::group(['middleware' => ['role:administrator']], function () {
//...
});
// 控制权限 多个 |隔开
Route::group(['middleware' => ['permission:user-create']], function () {
//...
});
// 控制角色 多个|隔开 + 控制权限 多个|隔开
Route::group(['middleware' => ['role:administrator','permission:user-create']], function () {
// ...
});
// 控制角色 或者 控制权限 多个|隔开
Route::group(['middleware' => ['role_or_permission:administrator|user-create']], function () {
//...
});
- 权限认证
@lazy_can('user-create')
// ...
@else_lazy_can('user-all-create')
// ...
@end_lazy_can
- 用户组权限认证
@lazy_role('administrator')
// ...
@else_lazy_role('editor')
// ...
@else_lazy_role
- 用户组权限认证 满足任一角色通过
@lazy_hasanyrole('administrator|editor')
// ...
@else
// ...
@end_lazy_hasanyrole
- 用户组权限认证 满足所有角色通过
@lazy_hasallroles('administrator|editor')
// ...
@else
// ...
@end_lazy_hasallroles
- 用户组权限认证 不满足当前角色通过
@lazy_unlessrole('administrator')
// ...
@else
// ...
@end_lazy_unlessrole
- 文档修改自laravel-permission 由于更改了后台guard name 因此使用 laravel-permission 的模版权限时需要指定
guard name
否则不生效
- 后台公用layout
// layout
@extends('lazy-view::layout')
@section('content')
// ... 自定义html
@endsection
// css stack
@push('css')
// ... css
@endpush
// js stack
@push('scripts')
// ... 自定义
@endpush
- 模版其他详细功能建议看resources