Browse Source

Finish Roles API and Seeder

Dennis 2 years ago
parent
commit
04917a495e

+ 13 - 8
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;
     }
 

+ 4 - 1
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;
     }

+ 6 - 0
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
+        ]);
     }
 
     /**

+ 3 - 0
routes/api.php

@@ -1,6 +1,7 @@
 <?php
 
 use App\Http\Controllers\Api\NotificationController;
+use App\Http\Controllers\Api\RoleController;
 use App\Http\Controllers\Api\ServerController;
 use App\Http\Controllers\Api\UserController;
 use App\Http\Controllers\Api\VoucherController;
@@ -31,6 +32,8 @@ Route::middleware('api.token')->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']);