Browse Source

获取校色获取菜单权限通过path查询

kely 9 months ago
parent
commit
9521de0ab3
2 changed files with 25 additions and 0 deletions
  1. 24 0
      app/Http/Controllers/API/RoleController.php
  2. 1 0
      routes/api.php

+ 24 - 0
app/Http/Controllers/API/RoleController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Role\CreateOrUpdateRequest;
 use App\Http\Resources\API\RoleResource;
+use App\Models\Menu;
 use App\Models\Role;
 use Illuminate\Http\Request;
 
@@ -85,4 +86,27 @@ class RoleController extends Controller
 
         return $this->noContent();
     }
+
+    public function menus(string $id)
+    {
+        $role = Role::query()->findOrFail($id);
+
+        $menus = Menu::query()->where("group", \request("group", "web"))
+            ->get();
+
+        $rolePermission=$role->permissions->pluck('name')->toArray();
+
+        $flattenedPaths = [];
+        foreach ($menus as $index=> $menu) {
+            if(in_array($menu->permission,$rolePermission)){
+                $individualPaths = explode(',', $menu->path);
+                $flattenedPaths = array_merge($flattenedPaths, $individualPaths);
+            }
+        }
+
+        $roleHasMenu=Menu::query()->whereIn('id',$flattenedPaths)->pluck('name')->toArray();
+
+        return $roleHasMenu;
+
+    }
 }

+ 1 - 0
routes/api.php

@@ -47,6 +47,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::get("role/{role}/permission", [API\RoleController::class, "permissions"])->name("role.permissions");
         Route::put("role/{role}/assign-permission", [API\RoleController::class, "assignPermissions"])->name("role.assign-permissions");
         Route::put("user/{user}/assign-role", [API\UserController::class, "assignRole"])->name("user.assign-role");
+        Route::get("role/{role}/menus", [API\RoleController::class, "menus"])->name("role.menus");
 //        Route::patch("user/userInfo/{user_id}",[API\UserController::class, 'updateUserInfo'])->name('user.updateUserInfo');
 
     });