17.4.24 • Published 23 days ago

cmp-adtima v17.4.24

Weekly downloads
-
License
MIT
Repository
-
Last release
23 days ago

Project Title

A brief description of what this project does and who it's for

CMP (Consent Management Platform)

CMP (Consent Management Platform) là một công cụ phần mềm giúp bạn thu thập và quản lý thông tin cá nhân và sự đồng ý của người dùng theo các luật và quy định về bảo vệ dữ liệu, như GDPR của EU, CCPA của California, hay LGPD của Brazil. CMP cho phép bạn hiển thị các thông báo hoặc hộp thoại yêu cầu sự đồng ý của người dùng trước khi thu thập, chia sẻ, hay bán dữ liệu người dùng từ các nguồn trực tuyến như website, ứng dụng, cookie, video nhúng, và các công nghệ theo dõi khác CMP cũng giúp bạn lưu trữ, quản lý, và cập nhật các thông tin về sự đồng ý của người dùng, và truyền dữ liệu đó cho các đối tác quảng cáo hay dịch vụ bên dưới.

Bạn cần CMP để tuân thủ các quy định về bảo vệ dữ liệu, đảm bảo quyền riêng tư, minh bạch, và kiểm soát cho người dùng, và tránh các rủi ro pháp lý hay tiềm năng bị phạt nặng. CMP cũng giúp bạn tăng cường niềm tin và sự gắn kết của người dùng, và cải thiện hiệu quả của chiến dịch quảng cáo mục tiêu

OK CHƯA ?

Mục đích

• Tạo consent chứa các thông tin cơ bản về người dùng, nguồn dữ liệu, mục đích sử dụng, và thời hạn của sự đồng ý

• Kiểm tra tính hợp lệ, đầy đủ, và cập nhật của các đối tượng consent

• Gửi đối tượng consent đã khởi tạo đến một hệ thống quản lý consent, để lưu trữ, chia sẻ, và cập nhật các thông tin về sự đồng ý của người dùng .

Cách sử dụng

Install

npm i cmp-adtima

Import

import { CMP } from  'cmp-adtima';

Use

Cách 1: Truyền extend_uid với user id (recommended)

Cần kiểm tra user id trước để render ra vì extend_uid trước khi gửi và sau khi gửi phải giống nhau nếu không sẽ báo lỗi khi gọi API tạo consents

{userInfor?._id &&
    <CMP
        op={{
            organization_id: "655c69b20b8952907f45bb01",
            term_id: "655c6ad10b8952907f45bbab",
            extend_app_id: import.meta.env.VITE_CAMPAIGN_ID,
            extend_app_name: "Test CMP",
            extend_uid: userInfor?._id || '0'
        }}
        isFormValid={formState.isValid} 
        variablesObj={{
            "Đủ 18 tuổi": {
                errorMessage: 'Vui Lòng đồng ý nếu bạn trên 18', 
                labelText: `<div>Tui đã trên 18 tuổi</div>`,
            },
            "Chính sách thỏa thuận sử dụng dịch vụ": {
                errorMessage: 'Vui Lòng đồng ý dịch vụ',
                labelText: `<div>Đồng ý điều <a href="https://adtima.vn/thoa-thuan-su-dung-dich-vu" target="_blank" class="test">khoản</a> haha<div>`,
            }
        }}
        handleLinkClick={handleLinkClick}
        ref={cmpRef}
    />
}

Gọi api thành công sẽ trả về mapping_key, dùng mapping_key đó update lại thông tin người dùng ( phần này không cần cũng được nhưng để tường minh thì nên làm)

const postConsentsRespone = await cmpRef.current.callApiConsents(userInfor?._id);
VD: cmp_key = postConsentsRespone.mapping_key

Cách 2: Không Truyền extend_uid

Nếu không truyền thì mặc định extend_uid sẽ bằng '0'

<CMP
    op={{
        organization_id: "655c69b20b8952907f45bb01",
        term_id: "655c6ad10b8952907f45bbab",
        extend_app_id: import.meta.env.VITE_CAMPAIGN_ID,
        extend_app_name: "Test CMP",
        extend_uid: '0'
    }}
    isFormValid={formState.isValid} 
    variablesObj={{
        "Đủ 18 tuổi": {
            errorMessage: 'Vui Lòng đồng ý nếu bạn trên 18', 
            labelText: `<div>Tui đã trên 18 tuổi</div>`,
        },
        "Chính sách thỏa thuận sử dụng dịch vụ": {
            errorMessage: 'Vui Lòng đồng ý dịch vụ',
            labelText: `<div>Đồng ý điều <a href="https://adtima.vn/thoa-thuan-su-dung-dich-vu" target="_blank" class="test">khoản</a> haha<div>`,
        }
    }}
    handleLinkClick={handleLinkClick}
    ref={cmpRef}
/>

Gọi api thành công (statusCode 200) sẽ trả về object data bao gồm mapping_key, dùng mapping_key đó update lại thông tin người dùng ( phần này không cần cũng được nhưng để tường minh thì nên làm)

const postConsentsRespone = await cmpRef.current.callApiConsents();

Lưu ý:

  • Gọi cmpRef.current.checkCMPValid(); khi submit Form check validate cho phần CMP
  • API chỉ được gọi khi FormCMP đều valid

Props

Props of the CMP component are also available.

NameDefault valueTypeDescription
op (*)-objectop là object dùng để khởi tạo term ban đầu thông qua '/digital-api/' bao gồm những field cần và đủ như organization_id: "your id here" term_id: "your term id here" extend_app_id: "your CAMPAIGN_ID" extend_app_name: "your project name" extend_uid: "your user id"
variablesObj (*)-objectDùng để render phần nội dung của checkbox và error message của checkbox đó Object key: lấy consent_name trong terms để làm key ví dụ: Đủ 18 tuổi errorMessage: hiển thị error message của consent tương ứng labelText: hiển thị label text của checkbox tương ứng
isFormValid (*)falsebooleanGiá trị cần phải có để CMP kiểm tra để callApiConsents được thực thi
ref (*)--Components sử dụng [Forwarding Refs] để kiêm tra tính hợp lệ và gọi API consents bao gồm 2 function callApiConsentscheckCMPValid Ví dụ: cmpRef.current.callApiConsents(); để gọi api tạo consents
isCmpValidPropsfalsebooleanGiá trị true khi tất cả các checkbox được check và false khi chưa check đủ validate sẽ thực thi trong này , dùng để validate bên ngoài form
getInitTerms-functionTrả về object init terms
handleOnChangeCheckbox-objectĐược gọi khi mỗi lần onChange checkbox
handleLinkClick-functionĐược gọi khi nhấn vào đường link trong labelText Lưu ý: Thẻ tag trong labelText phải là thẻ a
hideCheckAllfalsebooleanGiá trị true thì sẽ ẩn checkbox Đồng ý tất cả
classes-stringTạo class để style lại trong CMP

Style

Để style lại checkbox theo từng project . Copy những phần này vào root variables

  • Cách 1
/* cmp checkbox appearance */
--cmp-checkbox-height: 16px; /* checkbox height */
--cmp-checkbox-width: 16px; /* checkbox width */
--cmp-border-checkbox-width: 2px; /* checkbox border width */
--cmp-bg-checkbox-border-radius: 2px; /* checkbox border width */
--cmp-bg-checkbox-normal-color: pink; /* checkbox background color when not checked */
--cmp-bg-checkbox-checked-color: red; /* checkbox background color when checked */
--cmp-checkbox-border-normal-color: red; /* checkbox border color when not checked */
--cmp-checkbox-border-checked-color: blue; /* checkbox border color when checked */
--cmp-icon-checkbox-checked-color: yellow; /* checkbox icon check color */
--cmp-error-message-color: red; /* error message color */
  • Cách 2 Sử dụng props classes để overwrite lại css
.cmp-custom {
  font-size: 16px;

  .cmp-adtima-link {
    color: var(--primary, #f81a22);
    font-weight: 500;
  }

  .cmp-adtima-error-message {
    font-size: var(--step--2);
    line-height: 18px;
  }

  input[type="checkbox"] {
    &:checked {
      &::before {
        content: "";
        border: none;
        background: url("@/assets/images/icon_checkbox.svg") no-repeat center center;
        background-size: 10px;
        width: 100%;
        height: 100%;
        inset: 0;
        margin: 0;
        transform: unset;
      }
    }
  }
}

Ví dụ ?

MIMS-Miniapp

SIGNIFY-Miniapp

17.4.24

23 days ago

6.4.24

1 month ago

24.28.3

1 month ago

24.15.2

4 months ago

24.15.1

4 months ago

23.12.2

5 months ago

2023.12.1-5.1

5 months ago

0.0.29

6 months ago

0.0.28

6 months ago

0.0.27

6 months ago

0.0.26

6 months ago

0.0.24

6 months ago

0.0.25

6 months ago

0.0.23

6 months ago

0.0.22

6 months ago

0.0.21

6 months ago

0.0.20

6 months ago

0.0.19

6 months ago

0.0.18

6 months ago

0.0.17

6 months ago

0.0.16

6 months ago

0.0.15

6 months ago

0.0.14

6 months ago

0.0.13

6 months ago

0.0.12

6 months ago

0.0.11

6 months ago

0.0.10

6 months ago

0.0.9

6 months ago

0.0.8

6 months ago

0.0.7

6 months ago

0.0.6

6 months ago

0.0.5

6 months ago

0.0.4

6 months ago

0.0.3

6 months ago

0.0.2

6 months ago