/** * */ private function initPerms() { Permission::create(['name' => 'permissions#', 'readable_name' => '权限']); Permission::create(['name' => 'admin.roles.index', 'readable_name' => '角色管理']); Permission::create(['name' => 'admin.permissions.index', 'readable_name' => '权限管理']); Permission::create(['name' => 'admin.admins.index', 'readable_name' => '管理员管理']); }
/** * 分配权限 */ public function assignPermission(Request $request) { $role = Defender::findRoleById($request->get('id')); $permissionNameParams = $request->except(['_token', 'id']); $permissionNames = array_keys($permissionNameParams); $permissions = []; foreach ($permissionNames as $permissionName) { $permissions[] = str_replace('_', '.', $permissionName); } // 删除 roles 所有权限 $role->revokePermissions(); $permissions = Permission::whereIn('name', $permissions)->get(); $permissions->each(function ($per) use($role) { $role->attachPermission($per); }); return redirect()->route('admin.roles.index'); }
/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id, UpdatePermissionRequest $request) { $name = $request->get('name'); $readableName = $request->get('readable_name'); $count = Permission::whereName($name)->where('id', '!=', $id)->count(); if ($count > 0) { return $this->redirectWithError('路由名称不能重复'); } $count = Permission::whereEmail($readableName)->where('id', '!=', $id)->count(); if ($count > 0) { return $this->redirectWithError('权限显示名称不能重复'); } $data = ['name' => $name, 'readable_name' => $readableName]; Permission::findOrFail($id)->update($data); return redirect()->route('admin.permissions.index'); }