Kaynağa Gözat

fix: :bug: promblemas skeleton

Denis 1 yıl önce
ebeveyn
işleme
a2315853b4

+ 1 - 1
app/Commands/CreateCrud.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Console\Commands;
+namespace App\Commands;
 
 use Illuminate\Console\Command;
 use Illuminate\Filesystem\Filesystem;

+ 1 - 0
app/Enums/UserTypeSource.php

@@ -9,4 +9,5 @@ enum UserTypeSource: string
     use EnumHelper;
 
     case Admin = 'admin';
+    case Guest = 'guest';
 }

+ 1 - 1
app/Http/Middleware/CheckPermission.php

@@ -26,7 +26,6 @@ public function __construct(
     public function handle(Request $request, Closure $next, string $scopes, string $permissionType)
     {
         $user = Auth::user();
-
         // Get permissions for the user or guest
         if (!$user) {
             $userPermissions = UserTypePermissionResource::collection(resource: $this->userTypePermissionService->allGuestPermissions());
@@ -42,6 +41,7 @@ public function handle(Request $request, Closure $next, string $scopes, string $
                 break;
             }
         }
+
         if (!$hasPermission) {
             return response()->json(data: ['message' => 'Unauthorized'], status: 403);
         }

+ 2 - 0
app/Models/UserTypePermission.php

@@ -2,6 +2,7 @@
 
 namespace App\Models;
 
+use App\Enums\UserTypeSource;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
@@ -30,6 +31,7 @@ protected function casts(): array
     {
         return [
             'permission_id' => 'integer',
+            'user_type' => UserTypeSource::class,
         ];
     }
 

+ 8 - 2
app/Repositories/UserTypePermissionRepository.php

@@ -15,11 +15,17 @@ public function __construct(
 
     public function allGuestPermissions(): ?Collection
     {
-        return $this->model->where(column: 'user_type', operator: 'guest')->join(table: 'permissions', first: 'user_type_permissions.permission_id', operator: '=', second: 'permissions.id')->get();
+        return $this->model->where('user_type', UserTypeSource::Guest)
+        ->join('permissions', 'user_type_permissions.permission_id', '=',  'permissions.id')
+        ->select('permissions.*', 'user_type_permissions.bits', 'user_type_permissions.*')
+        ->get();
     }
 
     public function allPermissionsByUserType(UserTypeSource $userType): ?Collection
     {
-        return $this->model->where(column: 'user_type', operator: $userType)->join(table: 'permissions', first: 'user_type_permissions.permission_id', operator: '=', second: 'permissions.id')->get();
+        return $this->model->where('user_type', $userType)
+        ->join('permissions',  'user_type_permissions.permission_id',  '=',  'permissions.id')
+        ->select('permissions.*', 'user_type_permissions.bits', 'user_type_permissions.*')
+        ->get();
     }
 }

+ 8 - 0
database/seeders/UserTypePermissionSeeder.php

@@ -28,6 +28,14 @@ public function run(): void
                         $userTypePermission->save();
                     }
                     break;
+                case UserTypeSource::Guest:
+                    $userTypePermission = UserTypePermission::firstOrNew([
+                        'user_type' => UserTypeSource::Guest->value,
+                        'permission_id' => Permission::where('scope', 'config.user')->first()->id,
+                        'bits' => 5,
+                    ]);
+                    $userTypePermission->save();
+                    break;
             }
         }
     }

+ 2 - 2
routes/console.php

@@ -2,7 +2,7 @@
 
 use Illuminate\Foundation\Inspiring;
 use Illuminate\Support\Facades\Artisan;
-use App\Console\Commands\CreateCrud;
+use App\Commands\CreateCrud;
 
 Artisan::command('inspire', function () {
     $this->comment(Inspiring::quote());
@@ -10,4 +10,4 @@
 
 Artisan::command('create:crud {name}', function ($name) {
     $this->call(CreateCrud::class, ['name' => $name]);
-})->purpose('Create a CRUD for a given model');
+})->purpose('Create a CRUD for a given model');