From 6ef0b63c36ba8162fb8f0c2d6595fb1b28fc3392 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Mon, 8 May 2023 10:45:47 +0200 Subject: [PATCH 1/4] API Fixes || Missing: Update Role --- app/Http/Controllers/Api/RoleController.php | 17 +++++++++++------ app/Http/Controllers/Api/UserController.php | 5 ++++- routes/api.php | 3 +++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Api/RoleController.php b/app/Http/Controllers/Api/RoleController.php index 190dd6cc..65e2cb69 100644 --- a/app/Http/Controllers/Api/RoleController.php +++ b/app/Http/Controllers/Api/RoleController.php @@ -52,7 +52,7 @@ class RoleController extends Controller public function store(Request $request) { $request->validate([ - 'name' => 'nullable|string|max:191', + 'name' => 'required|string|max:191', 'color' => [ 'required', 'regex:/^#([a-f0-9]{6}|[a-f0-9]{3})$/i' @@ -67,7 +67,10 @@ class RoleController extends Controller ]); if ($request->permissions) { - $role->givePermissionTo($request->permissions); + $permissions = explode(",",$request->permissions); + foreach($permissions as $permission){ + $role->givePermissionTo($permission); + } } return $role; @@ -111,7 +114,7 @@ class RoleController extends Controller $role = Role::findOrFail($id); $request->validate([ - 'name' => 'nullable|string|max:191', + 'name' => 'required|string|max:191', 'color' => [ 'required', 'regex:/^#([a-f0-9]{6}|[a-f0-9]{3})$/i' @@ -120,11 +123,13 @@ class RoleController extends Controller ]); if ($request->permissions) { - $role->givePermissionTo($request->permissions); + $permissions = explode(",",$request->permissions); + $role->syncPermissions($permissions); } - $role->update($request->all()); - //TODO PERMISSIONS? + + $role->update($request->except('permissions')); + return $role; } diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 0dd445be..78e56da2 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -104,7 +104,10 @@ class UserController extends Controller 'pterodactyl_error_status' => $response->toException()->getCode(), ]); } - $user->update($request->all()); + if($request->has("role")){ + $user->syncRoles($request->role); + } + $user->update($request->except('role')); return $user; } diff --git a/routes/api.php b/routes/api.php index 74333b74..141b7529 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,6 +1,7 @@ group(function () { // Route::get('/vouchers/{voucher}/users' , [VoucherController::class , 'users']); Route::resource('vouchers', VoucherController::class)->except('create', 'edit'); + Route::resource('roles', RoleController::class); + Route::get('/notifications/{user}', [NotificationController::class, 'index']); Route::get('/notifications/{user}/{notification}', [NotificationController::class, 'view']); Route::post('/notifications', [NotificationController::class, 'send']); From 4a4f6bebdb2512aafe2245a31a6fce8bd5b15aa1 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Mon, 8 May 2023 10:55:37 +0200 Subject: [PATCH 2/4] Role API Update --- app/Http/Controllers/Api/RoleController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/RoleController.php b/app/Http/Controllers/Api/RoleController.php index 65e2cb69..928473f8 100644 --- a/app/Http/Controllers/Api/RoleController.php +++ b/app/Http/Controllers/Api/RoleController.php @@ -114,12 +114,12 @@ class RoleController extends Controller $role = Role::findOrFail($id); $request->validate([ - 'name' => 'required|string|max:191', + 'name' => 'sometimes|string|max:191', 'color' => [ - 'required', + 'sometimes', 'regex:/^#([a-f0-9]{6}|[a-f0-9]{3})$/i' ], - 'power' => 'required', + 'power' => 'sometimes', ]); if ($request->permissions) { From e965b5f5c43d7a5f8283e52e85bc83ff8634dea8 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Mon, 8 May 2023 11:03:11 +0200 Subject: [PATCH 3/4] PermissionsSeeder in Migration --- database/migrations/2023_05_05_090127_role_power.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/database/migrations/2023_05_05_090127_role_power.php b/database/migrations/2023_05_05_090127_role_power.php index 9c8da51d..1bf02c44 100644 --- a/database/migrations/2023_05_05_090127_role_power.php +++ b/database/migrations/2023_05_05_090127_role_power.php @@ -2,6 +2,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Schema; return new class extends Migration @@ -16,6 +17,10 @@ return new class extends Migration Schema::table('roles', function (Blueprint $table) { $table->integer('power')->after("color")->default(50); }); + + Artisan::call('db:seed', [ + '--class' => 'PermissionsSeeder', + ]); } /** From e6f02d0679094984a986e344a19e42ee3d045895 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Mon, 8 May 2023 11:09:49 +0200 Subject: [PATCH 4/4] force the seeder --- database/migrations/2023_05_05_090127_role_power.php | 1 + 1 file changed, 1 insertion(+) diff --git a/database/migrations/2023_05_05_090127_role_power.php b/database/migrations/2023_05_05_090127_role_power.php index 1bf02c44..7eb0d911 100644 --- a/database/migrations/2023_05_05_090127_role_power.php +++ b/database/migrations/2023_05_05_090127_role_power.php @@ -20,6 +20,7 @@ return new class extends Migration Artisan::call('db:seed', [ '--class' => 'PermissionsSeeder', + '--force' => true ]); }