使用spatie / laravel-permission的Laravel 5.1 ACL

时间:2016-05-16 17:35:46

标签: php mysql laravel-5 permissions eloquent

我已经阅读了laravel 5.1中的政策和门,并且来自4.2.11。 laravel 5.1的新手。

我在laravel上有一个庞大的项目,我将需要构建ACL或相同。 我尝试过使用名为spatie/laravel-permission的软件包并成功设置它。

然后我继续前进并试图弄清楚是否已经创建了迁移并且您可以获得一些开箱即用的锅炉。

虽然我在理解方面失败了,但如果管理员希望直接从前端使用控制器中的某些方法分配多个角色和权限,那怎么办呢?

我尝试过分配php artisan tinker的多个角色和权限。

我有一个方法assignRole(),我想为管理员直接分配的用户分配多个角色和权限。

在包中定义了assignRole()和givePermissions()方法,我将如何利用这些?

根据模型而言,我已经尝试过我的模板

@foreach($users as $user )
{{$user->email}}
@foreach($user->roles as $role)
{{$role->name}}
@endforeach
@foreach($user->permisssions as $permission )
{{$permission->name}}
@endforeach
@endforeach

这显示了经过身份验证的用户权限。

my controller.php

public function showRolesandpermission(){

$users = Auth::user();

return view("admin.assignrole", compact("users"));

}

public function update(Request $request, $id){

$user = User::whereID($id)->firstOrFail();


if(count($user)>0)
{
$roles = [];
$permissions = [];
foreach(Role::all() as $r)
            {
                $roles[$r->id] = $r->name;
            }
foreach(Permission::all() as $permissions)
            {
                $permissions[$permissions->id] = $permissions->name;
            }
$role1 = Request::get("role");
$perm = Request::get("permissions");
if(isset($role1) && isset($perm)){

$user->roles->update([
$request->name = $request->name

]);

$user->permissions->update([
$request->name = $request->name
]);

$user->save();

return redirect::back();
} 
}

}

我如何利用这一点并直接从前端编辑用户权限?我们如何使用多选等方式并更新用户角色和权限。

努力尝试,但很少提示会有所帮助。

1 个答案:

答案 0 :(得分:1)

结账Laravel Backpack的许可经理。它建立在spatie / laravel-permission之上,还提供了一个很好的GUI来管理权限。可能是你需要的。

https://github.com/Laravel-Backpack/permissionmanager