@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applica-software-guru/react-admin",
3
- "version": "1.0.44",
3
+ "version": "1.0.45",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -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
- if (!resource.hasList) {
153
- return;
154
- }
155
-
156
- const group = getGroup(groups, resource, permissions);
157
- const exists = group?.children?.some((c) => c.id === resource.name);
158
- if (!hasPermission(resource, permissions)) {
159
- if (exists && group?.children?.length > 0) {
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 (group) {
165
- if (!group.children) {
166
- group.children = [];
163
+ if (resourceGroup) {
164
+ if (!resourceGroup.children) {
165
+ resourceGroup.children = [];
167
166
  }
168
- if (exists) {
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;