天天看點

laravel entrust 權限管理

最近在用laravel做權限管理,用的是entrust擴充,是以總結了一下用法.我是根據自己的思路了解的ertrust來寫的,當然可以根據自己的需求去做

建立使用者

DB::table('users')->insert(
                [
                    'name' => 'admin',
                    'email' => '[email protected]',
                    'mobile' => '10136989522',
                    'password' => bcrypt('123456'),
                    'sex'=>'男',
                    'birthday'=>'2000-01-20',
                    'address_province'=>'北京市',
                    'address_city'=>'北京市',
                    'address_district'=>'朝陽區',
                    'active' => true,
                    'created_at' => new \DateTime(),
        ]);
           

建立超級管理者角色

$SuperAdmin = new Role();
$SuperAdmin->name = 'SuperAdmin';
$SuperAdmin->display_name = '超級管理者';
$SuperAdmin->description = '網站最高權利者.管理網站使用者和員工,及進行系統設定,網站維護';
$SuperAdmin->save();
           

建立背景管理者角色

$admin = new Role();
$admin->name = 'admin';
$admin->display_name = '登入背景';
$admin->description = '隻能登入背景';
$admin->save();
           

建立使用者管理權限及二級添加使用者權限

$user= new Permission();
$user->name = 'user';
$user->display_name = '使用者管理權限';
$user->description = '背景使用者管理所有權限';
$user->fid = 0;
$user->save();
           
$adduser= new Permission();
$adduser->name = 'adduser';
$adduser->display_name = '添加使用者權限';
$adduser->description = '背景添加使用者權限';
$adduser->fid = $user->id;
$adduser->save();
           

給使用者添加角色

$adminUser = User::where('name', 'admin')->first();
//賦予所有的角色
$adminRoles  = Role::select('id')->get()->toArray();
$adminUser->attachRoles($adminRoles);
//賦予單一的角色
$adminRole  = Role::where('name','admin')->get();
$adminUser->attachRoles($adminRole);
           

删除使用者角色

$user = User::find($id);
$user->detachRoles();//删除所有角色
$user->attachRoles($roles);//賦予新的角色

           

給角色添權重限

$owner = Role::where('name','SuperAdmin')->first();
//添加所有的權限
$createPost  = Permission::select('id')->get()->toArray();
$owner->attachPermissions($createPost);
//添加單一的權限
$createPost  = Permission::where('name','admin')->first();
$owner->attachPermission($createPost);
           

删除角色的權限

$role=Role::find('id');
$oldPermissions=$role->getPermissionIds();
$role->detachPermissions($oldPermissions);