Bỏ qua, đến nội dung

@digiforce-nc/plugin-api-keys

Plugin quản lý API keys cho tích hợp bên ngoài — tạo token JWT gắn với role, cho phép hệ thống bên ngoài gọi API mà không cần đăng nhập qua giao diện.

Plugin này làm gì?

Khi cần tích hợp hệ thống bên ngoài (CI/CD, webhook, script tự động), thay vì dùng username/password, admin tạo API key gắn với role cụ thể. Hệ thống bên ngoài dùng key này làm Bearer token để gọi API.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Tạo API keyKý JWT chứa role, thời hạn, lưu vào DB (token ẩn sau khi tạo)
2Xác thực requestRequest mang Bearer token → xác minh JWT → gắn role vào context
3Quản lý vòng đờiXóa key = block token, liệt kê keys của user hiện tại

Kiến trúc

Luồng tạo API key

Luồng sử dụng API key

Database - bảng apiKeys

FieldMô tả
nameTên mô tả key (ví dụ: "CI/CD Pipeline")
roleNameRole gắn với key — quyết định quyền truy cập
expiresInThời hạn token ("30d", "1y", "never")
tokenJWT — chỉ hiển thị 1 lần khi tạo, sau đó ẩn

Vòng đời plugin

ACL - Phân quyền

ACL snippetQuyềnMô tả
pm.api-keys.configurationAdminTruy cập trang API Keys trong Settings

Middleware bổ sung: user chỉ thấy và xóa được API keys do chính mình tạo.

Ví dụ sử dụng API

Tạo API key

typescript
const response = await agent.resource('apiKeys').create({
  values: { name: 'CI/CD Pipeline', roleName: 'editor', expiresIn: '30d' },
});
const { token } = response.body.data;
// lưu lại ngay, không hiển thị lại

Sử dụng từ bên ngoài

bash
curl -H "Authorization: Bearer eyJhbGciOi..." https://your-app.com/api/posts:list

Xóa API key (block token)

typescript
await agent.resource('apiKeys').destroy({ filterByTargetKey: keyId });

Thành phần client

Thành phầnMô tả
APIKeysConfigurationTrang Settings → Configuration quản lý API keys
CreateAPIKeyFormForm tạo API key (chọn name, role, thời hạn)
APIKeysListDanh sách keys của user hiện tại

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework — resource, middleware
@digiforce-nc/databaseDatabase ORM — collection definitions
@digiforce-nc/clientClient framework — Settings UI
@digiforce-nc/authAuth module — JWT signing/verification

Mục lục chi tiết