@goplusvn/core 0.1.25 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/package.json +2 -1
- package/src/rbac/index.ts +1 -0
- package/src/rbac/pages/action-list-page.tsx +568 -238
- package/src/rbac/pages/resource-list-page.tsx +774 -535
- package/src/rbac/pages/role-form-page.tsx +354 -281
- package/src/rbac/permissions-version.ts +84 -0
- package/src/rbac/route-handlers.ts +31 -0
- package/src/ui/forms/multi-select.tsx +74 -16
- package/src/ui/shared/index.ts +1 -0
- package/src/ui/shared/permissions-version-watcher.tsx +100 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.27 — Live permissions + MultiSelect hết tràn badge
|
|
4
|
+
|
|
5
|
+
Cơ chế "phiên bản bộ quyền" (đúc từ vinhhoa): admin sửa vai trò/phân quyền →
|
|
6
|
+
mọi user đang đăng nhập nhận quyền mới trong ≤60s (tức thì khi focus lại tab).
|
|
7
|
+
- `@goerp/core/rbac/permissions-version`: `getPermissionsVersion(db)` /
|
|
8
|
+
`bumpPermissionsVersion(db)` — lưu SystemConfig key `rbac-permissions-version`,
|
|
9
|
+
schema-tolerant (thử cột audit createdBy/updatedAt/updatedBy → fallback tối
|
|
10
|
+
giản), best-effort không bao giờ throw.
|
|
11
|
+
- Route-handlers factory TỰ bump sau POST/PUT/DELETE role; thêm
|
|
12
|
+
`createPermissionsVersionHandler({ prisma, getSession })` cho endpoint
|
|
13
|
+
GET /api/rbac/permissions-version.
|
|
14
|
+
- `<PermissionsVersionWatcher />` (@goerp/core/ui): poll version + focus;
|
|
15
|
+
đổi → clear tab-content-cache + session.update() (jwt trigger="update" →
|
|
16
|
+
app forceRefresh quyền từ DB — vá cả đa instance vì cache in-memory
|
|
17
|
+
per-process) + router.refresh() + toast (tắt bằng silent).
|
|
18
|
+
App cần: mount watcher trong providers, route dùng handler factory, và jwt
|
|
19
|
+
callback xử lý trigger="update" bằng forceRefresh (vinhhoa đã có sẵn).
|
|
20
|
+
|
|
21
|
+
MultiSelect (tham khảo sersavan/shadcn-multi-select-component):
|
|
22
|
+
- Chip trên trigger WRAP xuống dòng mặc định khi chọn nhiều — trigger cao lên,
|
|
23
|
+
KHÔNG tràn ngang đè component bên cạnh; prop mới `singleLine` giữ 1 dòng
|
|
24
|
+
(chip co + cắt overflow) cho toolbar chật.
|
|
25
|
+
- Dropdown TỰ MỞ LÊN TRÊN khi sát đáy viewport (trước luôn mở xuống → bị cắt).
|
|
26
|
+
- Backspace khi ô tìm kiếm rỗng = bỏ chip cuối (chuẩn combobox).
|
|
27
|
+
- Props mới: `closeOnSelect` (đóng sau mỗi lần chọn), `deduplicateOptions`
|
|
28
|
+
(lọc option trùng value), `chipColor: "colorful" | "neutral"` (chip trầm
|
|
29
|
+
secondary cho form nghiêm túc; mặc định giữ bảng màu xoay vòng).
|
|
30
|
+
- Hardening: container `min-w-0 max-w-full`, trigger `overflow-hidden`,
|
|
31
|
+
chip max-w 8.5rem. Lưu ý chỗ dùng trong flex-row: ô bọc cần `min-w-0`.
|
|
32
|
+
|
|
33
|
+
## 0.1.26 — Bộ 3 trang RBAC redesign hoàn chỉnh (bar navy + thẻ + full width)
|
|
34
|
+
|
|
35
|
+
Thiết kế duyệt qua preview vinhhoa, đồng bộ ngôn ngữ trang chi tiết đơn bán hàng:
|
|
36
|
+
- CHUNG: bar navy `bg-sidebar` 1 dòng (full-bleed mobile `-mx-4 -mt-4 md:-mx-8`,
|
|
37
|
+
nổi bo góc `lg:mx-3 lg:rounded-xl`), nút chính trắng-trên-navy
|
|
38
|
+
(`bg-primary-foreground text-primary`), khối trắng `rounded-xl` + toolbar
|
|
39
|
+
sticky, toggle List/Grid (GRID thẻ kiểu thẻ vai trò là mặc định).
|
|
40
|
+
- `RoleFormPage`: header 1 dòng (← tên inline · chip mã + copy · CHIP TRẠNG
|
|
41
|
+
THÁI màu getStatusMeta bấm-đổi · mô tả · Hủy/Lưu), đếm x/y quyền realtime,
|
|
42
|
+
chip quyền = checkbox + icon lucide theo loại action (ACTION_VISUAL_RULES).
|
|
43
|
+
- `ActionListPage`: thẻ = icon loại + badge "Mặc định" + khối số liệu 3 cột
|
|
44
|
+
(tài nguyên/vai trò/người dùng) + nút Sửa vàng/Xóa đỏ; chi tiết sử dụng =
|
|
45
|
+
chip màu theo loại + "+n khác"/Thu gọn (hết "ma trận chữ"); dòng có #stt.
|
|
46
|
+
- `ResourceListPage`: nhóm = dòng mảnh, thẻ = icon nhóm màu + preview chip
|
|
47
|
+
quyền + khối Đã cấp/Chưa cấp + Sửa/Xóa (xóa trực tiếp từ thẻ);
|
|
48
|
+
`ResourceActionsEditor` dùng chung cho dòng/thẻ.
|
|
49
|
+
Props cả 3 trang KHÔNG đổi so với 0.1.25.
|
|
50
|
+
|
|
3
51
|
## 0.1.25 — RoleFormPage bố cục "một khối liền" (gọn)
|
|
4
52
|
|
|
5
53
|
Trang chi tiết vai trò trước đây phình: header chiếm 1/3 màn, mỗi nhóm là card
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goplusvn/core",
|
|
3
3
|
"description": "GoPlusVN Platform Kit - ERP kernel: layout, RBAC, CRUD, multi-tenant, system pages",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.27",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"registry": "https://registry.npmjs.org",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"./styles/*": "./src/styles/*",
|
|
39
39
|
"./auth/proxy-gate": "./src/auth/proxy-gate.ts",
|
|
40
40
|
"./rbac/route-handlers": "./src/rbac/route-handlers.ts",
|
|
41
|
+
"./rbac/permissions-version": "./src/rbac/permissions-version.ts",
|
|
41
42
|
"./ui/shared/table-styles": "./src/ui/shared/table-styles.ts",
|
|
42
43
|
"./errors/app-error": "./src/errors/app-error.ts",
|
|
43
44
|
"./errors/error-handler": "./src/errors/error-handler.ts",
|