diff --git a/README.md b/README.md index 18becf9..2267884 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,9 @@ 2. `cp .env.example .env` 3. 修改 .env 配置项为本地配置 4. 创建数据库 `CREATE DATABASE IF NOT EXISTS `erp` DEFAULT CHARACTER SET utf8;` -5. `php artisan migrate` +5. `php artisan migrate` 如果数据填充没有执行成功,则需要再次执行 `php artisan migrate:fresh --seed` 6. `php artisan key:generate` +7. `php artisan update:super_admin_permissions` 更新超级管理员角色权限 #### 使用说明 diff --git a/app/Console/Commands/UpdateSuperPermissions.php b/app/Console/Commands/UpdateSuperPermissions.php new file mode 100644 index 0000000..637d6f8 --- /dev/null +++ b/app/Console/Commands/UpdateSuperPermissions.php @@ -0,0 +1,47 @@ +where('name', '超级管理员')->find(1); + $permissions = Permission::query()->get(); + $role->syncPermissions($permissions); + $this->info('更新成功'); + } +} diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 26a1d42..d445c6c 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -12,6 +12,11 @@ use Maatwebsite\Excel\Facades\Excel; class GoodsSkusController extends Controller { + public function __construct() + { + $this->middleware(['role:super-admin','permission:publish articles|edit articles']); + } + public function index(Request $request) { return new GoodsSkuResource(GoodsSku::query()->get(['id', 'title'])); diff --git a/app/Http/Controllers/Role/RolesController.php b/app/Http/Controllers/Role/RolesController.php index d86eec4..bec6d97 100644 --- a/app/Http/Controllers/Role/RolesController.php +++ b/app/Http/Controllers/Role/RolesController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; +use Spatie\Permission\Models\Permission; use Spatie\Permission\Models\Role; use App\Http\Resources\RolesResource; @@ -35,6 +36,15 @@ class RolesController extends Controller return response($this->res, $this->res['httpCode']); } + public function addPermissions($id, Request $request) + { + $role = Role::query()->findOrFail($id); + $permissions = Permission::query()->findOrFail($request->permissionIds); + $role->syncPermissions($permissions); + + return response($this->res, $this->res['httpCode']); + } + public function show($id) { return new RolesResource(Role::query()->find($id)); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index deb65e8..b1c73d6 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -61,6 +61,8 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, + 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, ]; /** diff --git a/routes/api.php b/routes/api.php index 6db3143..58fbaa7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -29,6 +29,7 @@ Route::middleware('auth:api')->group(function () { Route::resource('shops', 'Shop\ShopsController', ['only' => ['index', 'store', 'show', 'update', 'destroy']]); // 角色 Route::resource('roles', 'Role\RolesController', ['only' => ['index', 'store', 'show', 'update']]); + Route::post('roles/{id}/permissions', 'Role\RolesController@addPermissions'); // 权限 Route::resource('permissions', 'Permission\PermissionsController', ['only' => ['index', 'store', 'show', 'update', 'destroy']]); // 菜单