Bỏ qua, đến nội dung

@digiforce-nc/plugin-client ​

Plugin Web UI — quản lý menu desktop/mobile, cung cấp API thông tin ứng dụng, tích hợp ACL cho hệ thống menu, và đồng bộ tên menu với localization.

Plugin này làm gì? ​

Hãy hình dung ứng dụng Digiforce như một tòa nhà: plugin-client là sơ đồ tầng — nó quyết định người dùng thấy những phòng nào (menu), cửa nào mở (route), và bảng thông tin ở sảnh (app info). Plugin còn phối hợp với ACL để đảm bảo mỗi role chỉ thấy menu được phép.

Ba nhiệm vụ chính ​

#Nhiệm vụChi tiết
1Menu managementCRUD desktop/mobile routes, di chuyển, sắp xếp, cascade xóa uiSchemas + uiWidgets
2App APIEndpoints lấy thông tin hệ thống, đổi ngôn ngữ, xóa cache, restart, refresh
3ACL bindingTự động gán menu mới cho role có allowNewMenu: true, endpoint roles.desktopRoutes:set

API endpoints ​

App resource ​

EndpointMô tả
app:getInfoThông tin ứng dụng (version, locale, plugins đã cài)
app:getLangLấy ngôn ngữ hiện tại và toàn bộ bản dịch
app:clearCacheXóa toàn bộ cache server
app:restartRestart ứng dụng (admin only)
app:refreshRefresh app state mà không restart

Desktop routes ​

EndpointMô tả
desktopRoutes:listDanh sách tất cả desktop routes
desktopRoutes:listAccessibleChỉ các route user được phép truy cập (đã lọc ACL)
desktopRoutes:getAccessibleChi tiết 1 route accessible theo key
desktopRoutes:create / createV2Tạo menu mới (v2 hỗ trợ nested creation)
desktopRoutes:updateCập nhật thông tin menu
desktopRoutes:destroy / destroyV2Xóa menu (v2 cascade xóa uiSchemas + uiWidgets)
desktopRoutes:moveDi chuyển vị trí menu trong cây
roles.desktopRoutes:setGán danh sách menu cho role cụ thể

Cascade delete ​

Khi xóa menu qua destroyV2, plugin tự động dọn dẹp toàn bộ tài nguyên UI liên quan:

ACL binding — allowNewMenu ​

Khi admin tạo menu mới, plugin kiểm tra tất cả role có cờ allowNewMenu: true và tự động gán:

Database — 3 bảng chính ​

BảngChứa gìVí dụ
desktopRoutesMenu desktop (path, title, icon, parentId, sort){ title: 'Đơn hàng', path: '/orders' }
mobileRoutesMenu mobile (tương tự desktop){ title: 'Dashboard', path: '/m/dashboard' }
rolesDesktopRoutesLiên kết role ↔ menu (M2M){ roleName: 'admin', desktopRouteId: 5 }

Thành phần client ​

Thành phầnMô tả
DesktopRoutesManagerTrang quản lý menu desktop (Settings → Desktop Menu) — drag-drop sắp xếp
MobileRoutesManagerTrang quản lý menu mobile (Settings → Mobile Menu)
RouteSchemaComponentRender nội dung trang từ uiSchema gắn với route

Dependencies ​

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/databaseDatabase ORM (peer)
@digiforce-nc/plugin-localizationĐồng bộ tên menu với bản dịch

Mục lục chi tiết ​

  • Kiến trúc — DesktopRoutes tree, app resource, menu-role binding
  • API reference — App resource endpoints, desktopRoutes CRUD, roles.desktopRoutes:set
  • Database schema — ER diagram, desktopRoutes, mobileRoutes, rolesDesktopRoutes
  • FAQ — Câu hỏi thường gặp