trithuc-mvc-react 3.3.9 → 3.4.1
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.
|
@@ -85,8 +85,8 @@ const DataTable = ({ multipleActions = [], page, setPage = () => {}, disableEdit
|
|
|
85
85
|
if (dataSearch?.TrangThaiXuLy !== undefined) {
|
|
86
86
|
PermissionModel.TrangThaiXuLy = dataSearch?.TrangThaiXuLy;
|
|
87
87
|
}
|
|
88
|
+
setPermission(PermissionModel);
|
|
88
89
|
if (status) {
|
|
89
|
-
setPermission(PermissionModel);
|
|
90
90
|
// console.log("LOAD LAI PermissionModel");
|
|
91
91
|
// Cuộn lên đầu trang khi tải dữ liệu thành công
|
|
92
92
|
window.scrollTo({
|
|
@@ -84,8 +84,8 @@ const DataTableSM = ({ multipleActions = [], page, setPage = () => {}, disableEd
|
|
|
84
84
|
if (dataSearch?.TrangThaiXuLy !== undefined) {
|
|
85
85
|
PermissionModel.TrangThaiXuLy = dataSearch?.TrangThaiXuLy;
|
|
86
86
|
}
|
|
87
|
+
setPermission(PermissionModel);
|
|
87
88
|
if (status) {
|
|
88
|
-
setPermission(PermissionModel);
|
|
89
89
|
// console.log("LOAD LAI PermissionModel");
|
|
90
90
|
// Cuộn lên đầu trang khi tải dữ liệu thành công
|
|
91
91
|
window.scrollTo({
|
|
@@ -120,8 +120,10 @@ function DataManagement({
|
|
|
120
120
|
const [selectedEditItem, setSelectedEditItem] = useState(null);
|
|
121
121
|
const [openViewDialog, setOpenViewDialog] = useState(false);
|
|
122
122
|
|
|
123
|
-
const { canCreate, canThongKe, canBieuDo } = usePermission(apiUrl
|
|
123
|
+
const { permission, canCreate, canThongKe, canBieuDo } = usePermission(apiUrl || tableName);
|
|
124
124
|
|
|
125
|
+
// console.log(">>> permission from hook:", permission);
|
|
126
|
+
// console.log(">>> canCreate:", canCreate);
|
|
125
127
|
const [viewMode, setViewMode] = useState("table"); // "table" | "thongke" | "bieudo"
|
|
126
128
|
|
|
127
129
|
const { defaults, filters } = useMemo(() => {
|
package/hooks/usePermission.js
CHANGED
|
@@ -1,101 +1,117 @@
|
|
|
1
|
-
import { useContext
|
|
1
|
+
import { useContext } from "react";
|
|
2
2
|
import { PermissionContext } from "../contexts";
|
|
3
|
+
import { storeGetUser } from "@/utils/storage";
|
|
4
|
+
|
|
5
|
+
const isDev = process.env.NODE_ENV === "development";
|
|
3
6
|
|
|
4
7
|
const usePermission = (tableName) => {
|
|
5
8
|
if (!tableName) {
|
|
6
9
|
throw new Error("api is required");
|
|
7
10
|
}
|
|
11
|
+
|
|
8
12
|
const context = useContext(PermissionContext);
|
|
9
13
|
if (!context) {
|
|
10
14
|
throw new Error("usePermission must be used within a PermissionProvider");
|
|
11
15
|
}
|
|
16
|
+
|
|
12
17
|
const { permissionMap, setPermission } = context;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
canDelete: status.Delete ?? false,
|
|
34
|
-
canDeleteMulti: status.DeleteMulti ?? false,
|
|
35
|
-
canSave: status.Save ?? false,
|
|
36
|
-
canCreate: status.Create ?? false,
|
|
37
|
-
canAction: status.Action ?? false,
|
|
38
|
-
canView: status.View ?? false,
|
|
39
|
-
canImport: status.ImportFile ?? false,
|
|
40
|
-
canExportWord: status.ExportWord ?? false,
|
|
41
|
-
canPayment: status.Payment ?? false,
|
|
42
|
-
canThongKe: status.ThongKe ?? false,
|
|
43
|
-
canBieuDo: status.BieuDo ?? false
|
|
44
|
-
};
|
|
45
|
-
} else {
|
|
46
|
-
return {
|
|
47
|
-
canEdit: permission.Edit ?? false,
|
|
48
|
-
canDelete: permission.Delete ?? false,
|
|
49
|
-
canDeleteMulti: permission.DeleteMulti ?? false,
|
|
50
|
-
canSave: permission.Save ?? false,
|
|
51
|
-
canCreate: permission.Create ?? false,
|
|
52
|
-
canAction: permission.Action ?? false,
|
|
53
|
-
canView: permission.View ?? false,
|
|
54
|
-
canImport: permission.ImportFile ?? false,
|
|
55
|
-
canExportWord: permission.ExportWord ?? false,
|
|
56
|
-
canPayment: permission.Payment ?? false,
|
|
57
|
-
canThongKe: permission.ThongKe ?? false,
|
|
58
|
-
canBieuDo: permission.BieuDo ?? false
|
|
59
|
-
};
|
|
18
|
+
|
|
19
|
+
// --- lấy từ context trước ---
|
|
20
|
+
let permission = permissionMap[tableName];
|
|
21
|
+
// if (isDev) {
|
|
22
|
+
// console.log(`[usePermission] Context permission for ${tableName}:`, permission);
|
|
23
|
+
// }
|
|
24
|
+
|
|
25
|
+
// --- nếu chưa có thì thử lấy từ localStorage ---
|
|
26
|
+
if (!permission) {
|
|
27
|
+
const user = storeGetUser();
|
|
28
|
+
const userId = user?.UserId ?? "guest";
|
|
29
|
+
const localKey = `${tableName}_${userId}_PermissionModel`;
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
const stored = localStorage.getItem(localKey);
|
|
33
|
+
if (stored) {
|
|
34
|
+
permission = JSON.parse(stored);
|
|
35
|
+
// if (isDev) {
|
|
36
|
+
// console.log(`[usePermission] Loaded from localStorage (${localKey}):`, permission);
|
|
37
|
+
// }
|
|
60
38
|
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return {
|
|
64
|
-
canEdit: false,
|
|
65
|
-
canDelete: false,
|
|
66
|
-
canDeleteMulti: false,
|
|
67
|
-
canSave: false,
|
|
68
|
-
canCreate: false,
|
|
69
|
-
canAction: false,
|
|
70
|
-
canView: false,
|
|
71
|
-
canImport: false,
|
|
72
|
-
canExportWord: false,
|
|
73
|
-
canPayment: false,
|
|
74
|
-
canThongKe: false,
|
|
75
|
-
canBieuDo: false
|
|
76
|
-
};
|
|
39
|
+
} catch (err) {
|
|
40
|
+
console.warn("Lỗi parse local permission:", err);
|
|
77
41
|
}
|
|
78
|
-
}
|
|
42
|
+
}
|
|
79
43
|
|
|
80
|
-
|
|
81
|
-
|
|
44
|
+
// mặc định tất cả quyền = false
|
|
45
|
+
let perms = {
|
|
46
|
+
canEdit: false,
|
|
47
|
+
canDelete: false,
|
|
48
|
+
canDeleteMulti: false,
|
|
49
|
+
canSave: false,
|
|
50
|
+
canCreate: false,
|
|
51
|
+
canAction: false,
|
|
52
|
+
canView: false,
|
|
53
|
+
canImport: false,
|
|
54
|
+
canExportWord: false,
|
|
55
|
+
canPayment: false,
|
|
56
|
+
canThongKe: false,
|
|
57
|
+
canBieuDo: false
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
if (permission) {
|
|
61
|
+
let source = permission;
|
|
62
|
+
|
|
63
|
+
// Nếu có trạng thái hợp lệ & ObjTrangThai có data thì override
|
|
64
|
+
if (
|
|
65
|
+
permission.TrangThaiXuLy !== undefined &&
|
|
66
|
+
permission.TrangThaiXuLy !== null &&
|
|
67
|
+
Array.isArray(permission.ObjTrangThai) &&
|
|
68
|
+
permission.ObjTrangThai.length > 0
|
|
69
|
+
) {
|
|
70
|
+
const status = permission.ObjTrangThai.find((t) => t.StatusId === permission.TrangThaiXuLy);
|
|
71
|
+
if (status) {
|
|
72
|
+
source = status;
|
|
73
|
+
// if (isDev) {
|
|
74
|
+
// console.log(`[usePermission] Override by status ${permission.TrangThaiXuLy}:`, source);
|
|
75
|
+
// }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Map field từ source
|
|
80
|
+
perms = {
|
|
81
|
+
canEdit: source.Edit ?? false,
|
|
82
|
+
canDelete: source.Delete ?? false,
|
|
83
|
+
canDeleteMulti: source.DeleteMulti ?? false,
|
|
84
|
+
canSave: source.Save ?? false,
|
|
85
|
+
canCreate: source.Create ?? false,
|
|
86
|
+
canAction: source.Action ?? false,
|
|
87
|
+
canView: source.View ?? false,
|
|
88
|
+
canImport: source.ImportFile ?? false,
|
|
89
|
+
canExportWord: source.ExportWord ?? false,
|
|
90
|
+
canPayment: source.Payment ?? false,
|
|
91
|
+
canThongKe: source.ThongKe ?? false,
|
|
92
|
+
canBieuDo: source.BieuDo ?? false
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const set = (newPermission) => {
|
|
97
|
+
setPermission({ ...permissionMap, [tableName]: { ...newPermission } });
|
|
98
|
+
|
|
99
|
+
const user = storeGetUser();
|
|
100
|
+
const userId = user?.UserId ?? "guest";
|
|
101
|
+
const localKey = `${tableName}_${userId}_PermissionModel`;
|
|
102
|
+
|
|
103
|
+
localStorage.setItem(localKey, JSON.stringify(newPermission));
|
|
104
|
+
|
|
105
|
+
// if (isDev) {
|
|
106
|
+
// console.log(`[usePermission] Saved to localStorage (${localKey}):`, newPermission);
|
|
107
|
+
// }
|
|
82
108
|
};
|
|
83
109
|
|
|
84
110
|
return {
|
|
85
111
|
permission,
|
|
86
112
|
set,
|
|
87
|
-
|
|
88
|
-
canDelete,
|
|
89
|
-
canDeleteMulti,
|
|
90
|
-
canSave,
|
|
91
|
-
canCreate,
|
|
92
|
-
canAction,
|
|
93
|
-
canView,
|
|
94
|
-
canImport,
|
|
95
|
-
canExportWord,
|
|
96
|
-
canPayment,
|
|
97
|
-
canThongKe,
|
|
98
|
-
canBieuDo
|
|
113
|
+
...perms
|
|
99
114
|
};
|
|
100
115
|
};
|
|
116
|
+
|
|
101
117
|
export default usePermission;
|