Bỏ qua, đến nội dung

@digiforce-nc/plugin-action-custom-request

Plugin cho phép gửi HTTP request tùy chỉnh từ giao diện - admin cấu hình URL/method/headers/body với template variables, user kích hoạt từ nút action trên bảng hoặc form.

Plugin này làm gì?

Hãy hình dung bạn cần tích hợp với hệ thống bên ngoài: gửi webhook khi duyệt đơn, đồng bộ dữ liệu sang CRM, hay gọi API thanh toán. Thay vì viết code, admin chỉ cần cấu hình request template (URL, method, headers, body) với biến động như currentRecord, currentUser. Khi user nhấn nút, server resolve template rồi gửi HTTP request đến hệ thống đích.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Lưu trữ cấu hìnhCollection customRequests lưu URL, method, headers, body trong DB
2Resolve & gửi requestServer thay thế biến template bằng giá trị thực (record, user, form) rồi gửi HTTP request qua axios
3Phân quyền theo roleMỗi request gán cho role cụ thể qua bảng junction customRequestsRoles

Kiến trúc

Tổng quan

Plugin có cả server (resource, actions, DB) và client (UI cấu hình, nút action). Server xử lý logic resolve template và gửi request thực tế.

TầngVai tròThành phần
Client UICấu hình request + nút actionCustomRequestConfigForm, CustomRequestAction
Server ResourceCRUD cấu hình, resolve & sendcustomRequests resource + actions
DatabaseLưu trữ bền vữngcustomRequests, customRequestsRoles
LoggerGhi log request đã gửiFile logger trên server

API endpoints

EndpointMethodMô tả
customRequests:sendPOSTResolve template và gửi HTTP request đến URL đích
customRequests:listByCurrentRoleGETLấy danh sách request mà role hiện tại được phép dùng
customRequests:createPOSTTạo cấu hình request mới (admin)
customRequests:updatePUTSửa cấu hình request (admin)
customRequests:destroyDELETEXóa cấu hình request (admin)
customRequests:listGETLiệt kê tất cả cấu hình (admin)

ACL - Phân quyền

QuyềnLoạiMô tả
ui.*SnippetACL snippet cho phép truy cập UI customRequests:*
customRequests:sendActionCho phép user đã đăng nhập gửi request
customRequests:listByCurrentRoleActionCho phép user đã đăng nhập lấy danh sách
customRequests CRUDResourceChỉ admin quản trị cấu hình

Database

Bảng customRequests

CộtKiểuMô tả
keystringKhóa định danh duy nhất cho request
optionsJSONCấu hình request: url, method, headers, body, params
rolesbelongsToManyDanh sách role được phép sử dụng (qua customRequestsRoles)

Bảng customRequestsRoles (junction)

CộtKiểuMô tả
customRequestKeystringFK → customRequests.key
roleNamestringFK → roles.name

Template variables

Trong options (url, headers, body), admin sử dụng cú pháp mustache để chèn biến động. Server resolve các biến này trước khi gửi request:

BiếnMô tả
currentRecord.*Dữ liệu bản ghi hiện tại (VD: currentRecord.id)
currentUser.*Thông tin user đang thao tác (VD: currentUser.email)
$nForm.*Dữ liệu từ form hiện tại (nếu action trên form)

Luồng hoạt động

Bảo mật

  • Proto path guard: Server kiểm tra URL đích không trỏ về internal service
  • File logger: Mọi request gửi đi đều được ghi log
  • Role-based: Chỉ role được gán mới thấy và dùng được request

Thành phần client

Thành phầnMô tả
CustomRequestActionComponent nút action gửi request trên row/form
CustomRequestInitializerĐăng ký action vào schema initializer
CustomRequestConfigFormForm cấu hình request trong designer (url, method, headers, body)
CustomRequestActionWidgetWidget nút action trong uiCore
CustomRequestPluginProviderProvider đăng ký toàn bộ component vào plugin system

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/databaseDatabase ORM (peer)

Mục lục chi tiết