MenuVisibilityController.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\MenuPermission;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\JsonResponse;
  6. use Filament\Facades\Filament;
  7. class MenuVisibilityController extends Controller
  8. {
  9. public function toggle(Request $request): JsonResponse
  10. {
  11. // 验证请求
  12. $validated = $request->validate([
  13. 'menu_key' => 'required|string',
  14. 'user_id' => 'required',
  15. 'is_visible' => 'required|boolean',
  16. ]);
  17. // 获取当前用户(使用Laravel的auth辅助函数)
  18. $user = auth()->user();
  19. if (!$user) {
  20. return response()->json(['error' => '未登录'], 401);
  21. }
  22. // 检查是否是管理员
  23. $isAdmin = $user->role === 'admin' ||
  24. $user->username === '17689974321';
  25. if (!$isAdmin) {
  26. return response()->json(['error' => '权限不足'], 403);
  27. }
  28. try {
  29. // 更新菜单可见性
  30. MenuPermission::setMenuVisibility(
  31. $validated['user_id'],
  32. $validated['menu_key'],
  33. $validated['is_visible']
  34. );
  35. return response()->json([
  36. 'success' => true,
  37. 'message' => '菜单已' . ($validated['is_visible'] ? '显示' : '隐藏')
  38. ]);
  39. } catch (\Exception $e) {
  40. return response()->json([
  41. 'error' => '操作失败: ' . $e->getMessage()
  42. ], 500);
  43. }
  44. }
  45. }