diff --git a/app/Http/Controllers/Api/RoleController.php b/app/Http/Controllers/Api/RoleController.php index 190dd6cc..928473f8 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,20 +114,22 @@ class RoleController extends Controller $role = Role::findOrFail($id); $request->validate([ - 'name' => 'nullable|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) { - $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/database/migrations/2023_05_05_090127_role_power.php b/database/migrations/2023_05_05_090127_role_power.php index 9c8da51d..7eb0d911 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,11 @@ return new class extends Migration Schema::table('roles', function (Blueprint $table) { $table->integer('power')->after("color")->default(50); }); + + Artisan::call('db:seed', [ + '--class' => 'PermissionsSeeder', + '--force' => true + ]); } /** 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']);