Bỏ qua, đến nội dung

Cài đặt và sử dụng — Credential

Tổng quan

Plugin Credential cung cấp hệ thống quản lý thông tin xác thực và resource type — cho phép định nghĩa các loại tài nguyên (credential types) với schema tùy chỉnh. Mỗi resource type mô tả cấu trúc dữ liệu cần thiết cho một loại credential cụ thể (API Key, SMTP, OAuth...).

Kiến trúc

Plugin quản lý collection resource_type với cấu trúc:

TrườngKiểuMô tả
idbigInt (auto increment)Primary key
namestringTên loại resource, ví dụ: "SMTP", "API Key", "OAuth2"
descriptiontextMô tả mục đích của loại resource
schemasjsonJSON Schema định nghĩa các trường cấu hình cho loại resource
createdAtdateThời điểm tạo
createdBybelongsTo(users)Người tạo
updatedAtdateThời điểm cập nhật
updatedBybelongsTo(users)Người cập nhật

Bước 1: Kích hoạt Plugin

  1. Vào Settings → Plugin Manager
  2. Tìm plugin-credential
  3. Bật toggle để kích hoạt
  4. Plugin tự động tạo bảng resource_type và đồng bộ schema

Bước 2: Tạo Resource Type

  1. Vào giao diện quản lý Resource Type
  2. Nhấn Add để tạo mới
  3. Điền các thông tin:
TrườngBắt buộcMô tả
NameTên định danh, ví dụ: "SMTP Credential"
DescriptionKhôngMô tả mục đích sử dụng
SchemaJSON Schema mô tả các trường cấu hình

Ví dụ Schema cho SMTP Credential

json
{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "title": "SMTP Host",
      "description": "Địa chỉ SMTP server"
    },
    "port": {
      "type": "number",
      "title": "Port",
      "default": 587
    },
    "username": {
      "type": "string",
      "title": "Username"
    },
    "password": {
      "type": "string",
      "title": "Password"
    },
    "encryption": {
      "type": "string",
      "title": "Encryption",
      "enum": ["none", "tls", "ssl"],
      "default": "tls"
    }
  },
  "required": ["host", "port", "username", "password"]
}

Ví dụ Schema cho API Key

json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "title": "API Key"
    },
    "apiSecret": {
      "type": "string",
      "title": "API Secret"
    },
    "baseUrl": {
      "type": "string",
      "title": "Base URL"
    }
  },
  "required": ["apiKey"]
}

Phân quyền

Plugin cho phép mọi người dùng đã đăng nhập xem danh sách resource type (resource_type:list được ACL allow). Điều này cho phép các plugin khác đọc schema để tạo form cấu hình tương ứng.

Tuy nhiên, việc tạo, sửa, xóa resource type thường giới hạn cho admin thông qua cấu hình ACL chung.

Tích hợp với plugin khác

Các plugin khác (email, SMS, storage...) có thể:

  1. Đọc danh sách resource type: Gọi resource_type:list để lấy các loại credential có sẵn
  2. Sử dụng schema: Dùng trường schemas để tự động sinh form cấu hình cho credential
  3. Tham chiếu: Khi người dùng tạo credential instance, schema từ resource type được dùng để validate dữ liệu

Lưu ý

  • Resource type định nghĩa cấu trúc (schema), không phải giá trị credential cụ thể
  • JSON Schema trong trường schemas hỗ trợ kiểu jsonb cho hiệu năng truy vấn tốt hơn trên PostgreSQL
  • Collection có sortable: true — cho phép sắp xếp thứ tự hiển thị
  • Bảng resource_type được tự động sync khi plugin load (app.db.sync())