@applica-software-guru/react-admin 1.0.44 → 1.0.45
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/dist/hooks/useMenu.d.ts.map +1 -1
- package/dist/react-admin.cjs.js +29 -29
- package/dist/react-admin.cjs.js.map +1 -1
- package/dist/react-admin.es.js +938 -934
- package/dist/react-admin.es.js.map +1 -1
- package/dist/react-admin.umd.js +29 -29
- package/dist/react-admin.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useMenu.jsx +16 -24
package/package.json
CHANGED
package/src/hooks/useMenu.jsx
CHANGED
|
@@ -95,7 +95,7 @@ const mapParent = (group) => {
|
|
|
95
95
|
return group;
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
const createNodes = ({ userGroups, resources, permissions, translate }) => {
|
|
98
|
+
const createNodes = ({ userGroups, resources, permissions, translate, roles }) => {
|
|
99
99
|
const translateRecursive = (group) => {
|
|
100
100
|
group.title = translate(group.title, { _: group.title });
|
|
101
101
|
|
|
@@ -149,34 +149,24 @@ const createNodes = ({ userGroups, resources, permissions, translate }) => {
|
|
|
149
149
|
const groups = [...groupsA, ...groupsB];
|
|
150
150
|
|
|
151
151
|
Object.values(resources).forEach((resource) => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
group.children = group.children.filter((c) => c.id !== resource.name);
|
|
152
|
+
const resourceGroup = getGroup(groups, resource, permissions);
|
|
153
|
+
const resourceMenu = resourceGroup?.children?.find((c) => c.id === resource.name);
|
|
154
|
+
const resourceExists = resourceGroup?.children?.some((c) => c.id === resource.name);
|
|
155
|
+
const resourceRoles = resourceMenu?.roles || resource.options?.roles || [];
|
|
156
|
+
const hasRoles = !resourceRoles || resourceRoles.length === 0 || resourceRoles.some((role) => roles.includes(role));
|
|
157
|
+
if (!hasPermission(resource, permissions) || !resource.hasList || !hasRoles) {
|
|
158
|
+
if (resourceExists && resourceGroup?.children?.length > 0) {
|
|
159
|
+
resourceGroup.children = resourceGroup.children.filter((c) => c.id !== resource.name);
|
|
161
160
|
}
|
|
162
161
|
return;
|
|
163
162
|
}
|
|
164
|
-
if (
|
|
165
|
-
if (!
|
|
166
|
-
|
|
163
|
+
if (resourceGroup) {
|
|
164
|
+
if (!resourceGroup.children) {
|
|
165
|
+
resourceGroup.children = [];
|
|
167
166
|
}
|
|
168
|
-
if (
|
|
167
|
+
if (resourceExists) {
|
|
169
168
|
return;
|
|
170
169
|
}
|
|
171
|
-
// group.children.push({
|
|
172
|
-
// id: resource.name,
|
|
173
|
-
// type: 'item',
|
|
174
|
-
// title: translate(resource.options?.label || `ra.menu.item.${resource.name}`, {
|
|
175
|
-
// _: resource.options?.label || resource.name
|
|
176
|
-
// }),
|
|
177
|
-
// url: `/${resource.name}`,
|
|
178
|
-
// icon: resource.options?.icon || exists?.icon || AntDesignOutlined
|
|
179
|
-
// })
|
|
180
170
|
}
|
|
181
171
|
});
|
|
182
172
|
|
|
@@ -195,11 +185,13 @@ const useMenu = () => {
|
|
|
195
185
|
return null;
|
|
196
186
|
}
|
|
197
187
|
|
|
188
|
+
const roles = (identity?.roles || []).map((role) => role.id);
|
|
198
189
|
const groups = createNodes({
|
|
199
190
|
resources,
|
|
200
191
|
permissions,
|
|
201
192
|
translate,
|
|
202
|
-
userGroups
|
|
193
|
+
userGroups,
|
|
194
|
+
roles
|
|
203
195
|
});
|
|
204
196
|
|
|
205
197
|
return groups;
|