欢迎各位兄弟 发布技术文章
这里的技术是共享的
Laravel 5 Boilerplate不是一个网站,也是一个建站工具,是基于当前Laravel最新版本(Laravel 5.1.*)并集成Boilerplate的项目。
https://github.com/rappasoft/laravel-5-boilerplate
composer install npm install 创建.env文件(示例中已包含) php artisan key:generate php artisan migrate 在UserTableSeeder.php设置管理员信息 php artisan db:seed npm install -g gulp 运行gulp或gulp watch
/** Access使用Role模型创建正确的关联 */ access.role /** Access使用的Roles表用于保存角色到数据库 */ access.roles_table /** Access使用的Permission模型用于创建正确的关联 */ access.permission /** Permissions table used by Access to save permissions to the database. */ access.permissions_table /** Access使用的PermissionGroup模型用于创建权限组. */ access.group /** Access使用的Permissions表用于保存权限到数据库 */ access.permissions_group_table /** Access使用的permission_role表用于保存权限和角色之间的关系到数据库 */ access.permission_role_table /** Access使用的permission_user表用于保存权限和用户之间的关系到数据库,该表仅用于那些只归属于特定用户而不是角色的权限 */ access.permission_user_table /** 指定权限之间依赖关系的表,例如用户在拥有编辑权限之前必须有对后台的访问权限 */ access.permission_dependencies_table /** Access使用的assigned_roles用于保存分配的角色到数据库 */ access.assigned_roles_table /** 用户配置 */ access.users.default_per_page /** 当用户在前台注册后分配的角色 */ access.users.default_role /** 用户注册时是否需要邮箱确认 */ access.users.confirm_email /** 用户邮箱是否可以在编辑用户信息页面被修改 */ access.users.change_email /** 一个角色是否必须至少包含一个权限还是可以单独存在*/ access.roles.role_must_contain_permission
内置的路由中间件允许你通过角色或权限实现登录认证:
Route::group(['middleware' => 'access.routeNeedsPermission:view-backend', function() { Route::group(['prefix' => 'access'], function () { /* 用户管理 */ Route::resource('users', 'Backend\Access\UserController'); }); });
下面的中间件处理boilerplate:
如果你想要创建属于自己的中间件,可以使用如下方法:
如果你想要创建属于自己的中间件,可以使用如下方法:
/** * 通过名字判断用户是否拥有某个角色 * @param string $name * @return bool */ Access::hasRole($role); /** * 判断用户是否拥有某个角色数组,以及认证时是否全部包含才必须返回true * @param array $roles * @param boolean $needsAll * @return bool */ Access::hasRoles($roles, $needsAll); /** * 通过名字判断用户是否拥有某个权限 * 还有一个封装方法hasPermission这个传入参数一样 * @param string $permission. * @return bool */ Access::can($permission); /** * 判断权限数组以及是否所有权限都具备才能继续 * 还有一个封装方法hasPermissions和此传入参数一样 * @param array $permissions * @param boolean $needsAll * @return bool */ Access::canMultiple($permissions, $needsAll);
Access默认使用当前登录用户,你还可以:
$user->hasRole($role); $user->hasRoles($roles, $needsAll); $user->can($permission); $user->canMultiple($permissions, $needsAll); $user->hasPermission($permission); //Wrapper function for can() $user->hasPermissions($permissions, $needsAll); //Wrapper function for canMultiple()
可以定义一个blade扩展命令将访问控制应用到页面数据的显示与否:
@role
接收角色名称或ID
@role('User') 只有认证用户有User角色才会显示这里的内容 @endauth @role(1) 只有认证用户有ID为1的角色才会显示这里的内容 @endauth @roles
接收角色名称或ID数组
@roles(['Administrator', 'User']) 只有认证用户拥有`Administrator`或`User`角色才会显示这里的内容 @endauth @roles([1, 2]) 只有认证用户拥有ID为1或2的角色才会显示这里的内容 @endauth @needsroles
接收角色或角色ID数组并且只有用户拥有提供的全部角色时才返回true
@needsroles(['Administrator', 'User']) 只有认证用户拥有`Administrator`和`User`角色才会显示这里的内容 @endauth @needsroles([1, 2]) 只有认证用户拥有ID为1和2的角色才会显示这里的内容 @endauth @permission
接收单个权限名称或ID
@permission('view-backend') 只有用户拥有`view-backend`权限时才会显示这里的内容 @endauth @permission(1) 只有用户拥有ID为1的权限时才会显示这里的内容 @endauth @permissions
接收权限名称或ID数组
@permissions(['view-backend', 'view-some-content']) 只有用户拥有`view-backend`或`view-some-content`权限时才会显示这里的内容 @endauth @permissions([1, 2]) 只有用户拥有ID为1或2的权限时才会显示这里的内容 @endauth @needspermissions
接收权限或权限ID数组并且用户拥有提供的全部权限时才返回true
@needspermissions(['view-backend', 'view-some-content']) 只有用户拥有`view-backend`和`view-some-content`权限时才会显示这里的内容 @endauth @needspermissions([1, 2]) 只有用户拥有ID为1和2的权限时才会显示这里的内容 @endauth
注意:你还可以使用@else用于if/else语句
如果你想要显示或隐藏特定区块,可以在布局文件中这样做:
@role('User') @section('special_content') @endauth @permission('can_view_this_content') @section('special_content') @endauth
你还可以追加更多blade扩展命令到App\Providers\AccessServiceProvider@registerBladeExtensions
。
权限依赖允许你告诉系统某个权限基于一个或多个其它权限。
例如:如果用户有创建用户权限,那么还要具备查看后台和查看访问管理的权限,否则他们不能到达创建用户界面。因此我们说创建用户权限依赖于查看后台和查看访问管理权限。
你可以在每个权限依赖设置中指定该权限依赖于哪些其他权限。
要配置社交媒体登录,添加你的凭证到.env
文件。重定向必须遵循这个约定:http://mysite.com/auth/login/SERVICE
。目前支持的社交媒体包括github
, facebook
, twitter
, 和google
,每一个的登录链接内置于login.blade.php
。
如果你在本地locahost获取了cURL error 60
错误,查看这些指导说明。
PHP->JavaScript转换器已经包含在本项目中,配置文件是config/javascript.php
。
默认情况下JavaScript变量绑定到前端布局文件frontend/layouts/master.blade.php
,因此你可以在任何前端控制器绑定任何JavaScript方法。
如果你需要在前端和后端控制器都绑定变量,应该创建一个全局总布局文件,并且使用前端/后端布局文件作为其子文件。再然后可以在javascript.bind_js_vars_to_this_view
配置选项指定当前布局。
javascript()
帮助函数已经添加到全局因此你不再需要在控制器中引入其它文件,只需要像这样调用该方法:
javascript()->put([ 'test' => 'it works!' ]);
这是一个FrontendController@index
的示例,并且可以在frontend.index
视图文件中打印出来。
如果由于某种原因导致出错,试试下面的解决办法:
删除composer.lock
文件
运行dumpautoload
命令:
$ composer dumpautoload -o
如果上面的修复失败,并且命令行报错,错误信息指向compiled.php
,则删除storage/framework/compiled.php
文件。
如果上面的办法都没有奏效,那么只能给我们报告错误了。
学院君 问下这个除了生成了一套权限 使用上有什么便利么,还是需要自己make:controller 和make:model吗?
来自 http://laravelacademy.org/post/1359.html