1.安装 'l5-repository':
直接参照github文档:https://github.com/andersao/l5-repository
1>composer require prettus/l5-repository
2>vim config/app.php
给 'providers' 元素,添加 'Prettus\Repository\Providers\RepositoryServiceProvider::class,'
3>php artisan vendor:publish
在 config/ 下,生成一个 'repository.php' 的配置文件
4>安装 'league/fractal',l5-repository的presenter可能需要
https://packagist.org/packages/leagua/fractal - 官方镜像包介绍
composer require league/fractal - 进行安装
5>vim repository.php
我们配置命令的生成器:
'generator' => [
'basePath' => app_path(),
'rootNamespace' => 'App\\',
'paths' => [
'models' => 'Models',
'repositories' => 'Repositories',
'interfaces' => 'Repositories',
'transformers' => 'Transformers',
'presenters' => 'Presenters',
// 'validators' => 'Validators',
// 'controllers' => 'Http/Controllers',
// 'provider' => 'RepositoryServiceProvider',
// 'criteria' => 'Criteria',
// 'stubsOverridePath' => app_path()
]
]
这个只是针对生成的目录进行配置,不想生成这些文件,还不行
6>l5-repository的相关的一些命令:
php artisan make:entity Post - 有提示,需要生成哪些文件,yes | no
php artisan make:repository "Blog\Post" - 只生成repository,会生成 'model/repository/migration'
php artisan make:transformer Post - 生成 transformers
php artisan make:presenter Post - 生成 presenters
// 这2个使用较少
php artisan make:bindings Post - 会生成 'repositoryProviderServer.php',并绑定一个post相关的服务
php artisan make:criteria My - 生成 MyCriteria
2.安装 'Zizaco/entrust'
直接参照github文档:
https://github.com/Zizaco/entrust
中文相关资料:
http://laravelacademy.org/post/3755.html
http://laravelacademy.org/post/3761.html
1>composer require zizaco/entrust 5.2.x-dev
2>vim config/app.php
1)给 'providers' 元素,添加 'Zizaco\Entrust\EntrustServiceProvider::class,'
2)给 'aliases' 元素,添加 ''Entrust' => Zizaco\Entrust\EntrustFacade::class,'
3>php artisan vendor:publish
在 config/ 下,生成一个 'entrust.php' 的配置文件
4>vim config/auth.php,可添加 '用户认证' 配置:
假设我们需要验证的是后台用户表 'admin_users':
'guards' 元素:
'admin' => [
'driver' => 'session',
'provider' => 'admin_users',
],
'providers' 元素:
'admin_users' => [
'driver' => 'eloquent',
'model' => App\Models\AdminUser::class,
'table' => 'admin_users',
],
'passwords' 元素:
'admin_users' => [
'provider' => 'admin_users',
'email' => 'auth.emails.password',
'table' => 'admin_password_resets',
'expire' => 60,
],
5>vim app/Http/Kernel.php
给 'routeMiddleware' 数组,添加 'entrust' 自带的中间件:
'role' => \Zizaco\Entrust\Middleware\EntrustRole::class,
'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class,
'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,
6>生成迁移数据表:
这里我们需要进行配置:config/entrust.php 进行RBAC权限表的配置。
php artisan entrust:migration - 根据我们的entrust.php的配置,生成迁移的数据表语句
7>创建真实数据表(暂不执行):
php artisan migrate
3.安装的RBAC后台权限认证,是没有用户表的,所以我们还得创建 'admin_users' 数据表,以及模仿laravel自带的Auth前台认证。
1>参阅laravel的Auth用户认证文档:
http://laravelacademy.org/post/3074.html
快速配置出前台用户认证:
1)php artisan make:auth - 生成一堆文件,以及添加视图:
2)vim app/Http/Controllers/Auth/AuthController.php
protected $redirectTo = '/home'; // 默认是 '/',登录认证成功后的跳转地址
3)php artisan migrate - 生成Auth认证相关数据表(暂不执行,因为一旦执行,会生成所有的数据表)
就可访问前端页面,登录、注册、忘记密码等页面。
2>我们搭建后台认证
可查看项目源码,模仿 admin_users 后台用户认证:
https://github.com/yuansir/laravel5-rbac-example
/*
模仿 'laravel5-rbac-example' 项目进行修改:
*/
1.数据库相关:
1>找到我们项目中的 database/migrations/xx_entrust_setup_table.php,对照 'laravel5-rbac-example' 的database/migrations/的 'xx_entrust_base.php' 和 'xx_entrust_pivot_admin_user_role.php' 进行比对。我们修改成我们自己想要的后台一些字段!
2>admin_users数据表和忘记密码表
创建2个迁移记录:
php artisan make:migration create_admin_users_table
php artisan make:migration create_admin_password_resets_table
编辑2个迁移记录:
xx_create_admin_users_table.php
xx_create_admin_password_resets_table.php
2.开始搞admin_users相关内容:
1>控制器:app/Http/Controllers/Admin
2>中间件:app/Http/Middleware/AuthenticateAdmin.php
php artisan make:middleware AuthenticateAdmin
编辑进行修改
3>Kernel.php - 将上面的admin相关的中间件,得注册到 中间件配置文件中
vim Kernel.php,在 $routeMiddleware 数组中,添加:
'auth.admin' => \App\Http\Middleware\AuthenticateAdmin::class,
4>表单请求验证:app/Http/Requests/
5>routes.php - 添加后台所有相关的路由
6>后台所有相关的 'Model',我们定的目录为 'app/Models/'
7>后台模板:resources/views/admin
8>public:存放后台静态文件,图片、js、css
--------
9>复制l5-repository依赖相关目录,这个也是需要的:
app/Repositories
app/Presenters
app/Transformers
10>对复制过来的各个东西进行修改