Mục lục thư viện
Thư viện tài liệuBản quyền
Người dùng cuối
Người dùng cuối là tài khoản (tên đăng nhập và mật khẩu) mà khách hàng dùng để đăng nhập vào phần mềm của bạn. Mỗi tài khoản thuộc một ứng dụng và gắn với một license; bạn thêm, tìm, cấm, đặt lại mật khẩu hoặc xoá chúng ngay trong dashboard.
8 phút đọc
Khi nào ứng dụng có người dùng cuối
Tài khoản chỉ dùng được khi ứng dụng chạy chế độ đăng nhập Tài khoản hoặc Tài khoản + license key. Bạn chọn chế độ ở Phát hành & bản quyền › Đăng nhập & gói license, thẻ Chế độ đăng nhập. Ở chế độ License key, phần mềm chỉ dùng activate(key) và trial(), còn register() và login() bị từ chối với mã mode_not_allowed. Chi tiết từng chế độ nằm trong Chế độ đăng nhập và dùng thử.
Vài quy tắc nền:
- Tên đăng nhập là duy nhất trong một ứng dụng, dài từ 3 đến 64 ký tự, chỉ gồm chữ cái không dấu, chữ số, dấu chấm, gạch ngang và gạch dưới. Khi đăng nhập, tên được so khớp chính xác, có phân biệt hoa thường.
- Mật khẩu dài từ 8 đến 128 ký tự và chỉ được lưu dưới dạng hash Argon2id.
- Thời hạn, số máy và quyền tính năng đến từ license mà tài khoản liên kết, không đến từ tài khoản.
Tài khoản đến từ đâu
| Nguồn | License của tài khoản |
|---|---|
Phần mềm gọi register() kèm key | License của key đó |
Phần mềm gọi register() không kèm key | Một license tự tạo theo gói mặc định, hiện trong danh sách License với dạng ACCT-… |
| Bạn bấm Thêm người dùng trong dashboard | Key bạn nhập, hoặc không có license nếu bỏ trống |
Seller API (POST /apps/{appId}/users, quyền users:write) | Như dashboard |
Gói mặc định là gói bật tuỳ chọn Gói mặc định cho key mới và tài khoản miễn phí ở Đăng nhập & gói license. Nếu ứng dụng chưa có gói mặc định, license tự tạo không có thời hạn, cho 1 máy và không có quyền tính năng nào.
Xem và tìm người dùng
Mở Người dùng cuối › Người dùng (hoặc gõ G rồi U khi đang ở trong một ứng dụng). Bảng có các cột Tên đăng nhập, Trạng thái (Đang dùng hoặc Bị cấm), Email, Đăng nhập gần nhất và Ngày tạo, người mới nhất ở trên. Ô Tìm người dùng… khớp một phần tên đăng nhập hoặc email, không phân biệt hoa thường. Mỗi lần tải 50 dòng, bấm Tải cũ hơn để xem tiếp.
Muốn biết một key đang thuộc tài khoản nào, mở license đó ở Phát hành & bản quyền › License: mục Người dùng liên kết liệt kê tên đăng nhập và lần đăng nhập gần nhất.
Thêm người dùng từ dashboard
- Vào Người dùng cuối › Người dùng, bấm Thêm người dùng.
- Nhập Tên đăng nhập và Mật khẩu (ít nhất 8 ký tự).
- Email không bắt buộc.
- Ở License key, dán một key có sẵn của chính ứng dụng này nếu bạn muốn tài khoản dùng được ngay.
- Bấm Tạo.
Hộp thoại báo lỗi khi tên đã có (Username already taken), khi key không thuộc ứng dụng (License key not found in this app) hoặc khi chạm hạn mức của gói (Your plan allows … end users). Tài khoản mới hiện Chưa bao giờ ở cột Đăng nhập gần nhất cho tới lần đăng nhập đầu tiên.
Liên kết với license
Từ phía phần mềm, mỗi license chỉ gắn với một tài khoản: đăng ký hoặc nâng cấp bằng key đã có chủ trả về license_already_registered. Nếu key chưa từng dùng, thời hạn bắt đầu tính từ lần đăng ký hoặc đăng nhập đầu tiên.
Ở chế độ Tài khoản + license key, người dùng đăng ký miễn phí rồi nhập key để nâng cấp bằng redeem(key). Tài khoản giữ nguyên tên, mật khẩu và máy đang dùng, chuyển sang license mới; phiên cũ kết thúc và phần mềm nhận phiên mới. License miễn phí tự tạo trước đó bị thu hồi, còn nếu trước đó là một key thật thì key đó được giữ nguyên. Nhập lại chính key đang dùng trả về already_redeemed.
Dashboard hiện không có thao tác đổi tên đăng nhập, email hay license của một tài khoản đã tạo.
Bạn có thể gửi cấu hình riêng cho một người ở Tích hợp › Biến với phạm vi Một người dùng, điền ID tài khoản (usr_…). ID này có trong payload webhook user.created và trong Seller API. Xem Biến ứng dụng.
Cấm và bỏ cấm
- Ở Người dùng cuối › Người dùng, bấm nút ⋯ cuối dòng.
- Chọn Cấm.
Ngay khi cấm, trạng thái chuyển sang Bị cấm và mọi phiên đang mở của tài khoản bị kết thúc. Phần mềm đang chạy nhận session_expired ở yêu cầu kế tiếp (thường là heartbeat), lần đăng nhập đúng mật khẩu sau đó nhận user_banned. License và các máy đã gắn không bị đụng tới. Thao tác này phát webhook user.banned.
Bỏ cấm đưa trạng thái về Đang dùng. Phiên đã kết thúc không được khôi phục, người dùng chỉ cần đăng nhập lại.
Đặt lại mật khẩu
Clavis không có luồng "quên mật khẩu" tự phục vụ cho người dùng cuối, nên việc đặt lại do bạn làm:
- Bấm ⋯ ở dòng người dùng, chọn Đặt lại mật khẩu.
- Nhập mật khẩu mới (ít nhất 8 ký tự), bấm Lưu.
Mọi phiên đang mở của tài khoản kết thúc ngay, nên các máy đang dùng phải đăng nhập lại bằng mật khẩu mới. Gửi mật khẩu cho khách qua kênh hỗ trợ của bạn.
Xoá người dùng
Chọn ⋯ › Xoá. Tài khoản bị xoá ngay, không có hộp xác nhận và không hoàn tác được. Sau khi xoá:
- Tên đăng nhập được giải phóng và license có thể gắn với một tài khoản mới.
- License vẫn còn, kể cả license
ACCT-…tự tạo. Các máy đã gắn vẫn giữ suất trên license đó. - Phiên đang mở không bị kết thúc.
Hạn mức người dùng theo gói
Khi phần mềm đăng ký tài khoản hoặc khi bạn thêm từ dashboard, hệ thống đếm số tài khoản hiện có của ứng dụng đó (tính cả tài khoản bị cấm) và so với hạn mức Người dùng của gói workspace:
- Đăng ký từ phần mềm khi đã đủ: bị từ chối với mã
user_limit. - Thêm từ dashboard khi đã đủ: hộp thoại báo lỗi, không tạo tài khoản.
- Gói dùng hạn mức mềm thì không chặn.
| Gói (cấu hình mặc định) | Người dùng | Khi chạm trần |
|---|---|---|
| Basic | 500 | Chặn tài khoản mới |
| Premium | 50.000 | Hạn mức mềm, không chặn |
Con số áp dụng cho workspace của bạn hiển thị ở Tài khoản & tổ chức › Gói & sử dụng, kèm tổng số người dùng của mọi ứng dụng. Xoá tài khoản không còn dùng sẽ trả lại chỗ. Xem Gói Basic, Premium và hạn mức và bảng giá.
Đăng nhập từ phần mềm
Với SDK JavaScript, đăng ký và đăng nhập đều trả về cùng một kết quả đã ký: phiên, license, quyền tính năng và biến. Đăng ký thành công nghĩa là người dùng đã đăng nhập luôn trên máy đó.
import { ClavisClient, ClavisError } from "@clavisauh/sdk";
const clavis = new ClavisClient({
baseUrl: "https://api.example.com",
appId: "app_…",
appPublicKey: "…",
device, // định danh máy, xem Bắt đầu nhanh
});
const { app } = await clavis.init();
if (app.loginMode === "key") showKeyForm();
try {
// Lần đầu: key có thể là null (tài khoản miễn phí theo gói mặc định)
const grant = await clavis.register(key ?? null, username, password, email);
// Các lần sau: const grant = await clavis.login(username, password);
if (clavis.has("export_pdf")) enableExport();
showExpiry(grant.license.expiresAt);
} catch (err) {
if (!(err instanceof ClavisError)) throw err;
showError(err.code); // ánh xạ mã sang thông báo của bạn
}
// Chế độ Tài khoản + license key: nâng cấp tài khoản đang đăng nhập
await clavis.redeem(paidKey);
Mỗi lần đăng nhập, máy được gắn vào license của tài khoản, nên giới hạn số máy tính theo license (xem Thiết bị, HWID và chuyển máy). clavis.logout() kết thúc phiên hiện tại.
Các mã lỗi thường gặp:
| Mã | Ý nghĩa |
|---|---|
invalid_credentials | Sai tên đăng nhập hoặc mật khẩu. Key sai khi đăng ký cũng trả mã này |
username_taken | Tên đăng nhập đã có trong ứng dụng |
license_already_registered | Key đã gắn với tài khoản khác |
user_limit | Ứng dụng đã đủ số tài khoản của gói |
user_banned | Tài khoản đang bị cấm |
no_license | Tài khoản chưa liên kết license |
too_many_attempts | Đã sai 20 lần từ cùng một IP trong 15 phút, phải chờ rồi thử lại |
device_limit | License đã đủ số máy |
Mọi lần user.register, user.login và user.redeem đều được ghi ở Bảo mật ứng dụng › Nhật ký hoạt động, kèm lý do khi bị từ chối.