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 ​