Bỏ qua, đến nội dung

@digiforce-nc/plugin-field-component-mask

Plugin cung cấp field mask — che dấu dữ liệu nhạy cảm khi hiển thị trên giao diện bằng cách thêm Mask x-component vào các field interface cơ bản, kết hợp ACL để kiểm soát ai được xem dữ liệu gốc.

Plugin này làm gì?

Hãy hình dung: bạn có field số điện thoại 0912345678 và muốn hiển thị 0912***678 trên giao diện — nhưng dữ liệu gốc vẫn lưu đầy đủ trong DB. Plugin này không tạo field type mới mà bổ sung Mask x-component vào các field interface có sẵn (input, phone, email, date...), kết hợp ACL để chỉ cho phép user có quyền xem giá trị thật.

Ba khả năng chính

#Khả năngChi tiết
1Mask hiển thịChe một phần giá trị (phone, email, CMND...) bằng ký tự *
2Tích hợp ACLChỉ user có quyền mới xem được giá trị đầy đủ
3Không thay đổi dataDữ liệu gốc lưu nguyên trong DB — mask chỉ ở tầng hiển thị

Kiến trúc

Tổng quan

Plugin này là client-only — không có server logic. Hoạt động bằng cách patch thêm Mask component vào các field interface đã đăng ký, kết hợp dayjs cho format date và ACL cho kiểm tra quyền.

Luồng xử lý mask

Mask áp dụng cho các loại field

Loại fieldVí dụ gốcVí dụ sau mask
Phone09123456780912***678
Emailnguyen@email.comngu***@email.com
CMND/CCCD001234567890001***7890
Date15/03/1990**/**/1990
TextNguyễn Văn ANguyễn ***

Components

ComponentChức năng
MaskComponent chính — nhận giá trị gốc, áp dụng mask rule, hiển thị kết quả che dấu

Cách hoạt động với field interface có sẵn

Plugin không tạo field interface mới. Thay vào đó, khi load, nó duyệt các field interface đã đăng ký và patch thêm thuộc tính cho phép chọn Mask component trong settings. Admin có thể bật/tắt mask cho từng field cụ thể.


Ví dụ sử dụng

Field phone với mask

typescript
const phoneSchema = {
  type: 'string',
  title: 'Số điện thoại',
  'x-component': 'Mask',
  'x-component-props': {
    maskPattern: '****###***',
  },
};

Kiểm tra quyền xem dữ liệu gốc

typescript
// Trong Mask component, kiểm tra ACL trước khi hiển thị
const canViewOriginal = useACLFieldPermission('phone', 'unmask');
if (canViewOriginal) {
  return <span>0912345678</span>;
}
return <span>0912***678</span>;

Thành phần client

Thành phầnMô tả
MaskComponent che dấu giá trị field

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework — đăng ký component
@digiforce-nc/plugin-aclKiểm tra quyền xem dữ liệu gốc
@digiforce-nc/plugin-data-source-managerTruy cập metadata field
dayjsFormat date trước khi mask

Mục lục chi tiết