@rspress-theme-anatole/theme-default 0.7.22-alpha → 0.7.22-alpha2

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.
Files changed (2) hide show
  1. package/dist/bundle.js +44 -1
  2. package/package.json +3 -3
package/dist/bundle.js CHANGED
@@ -334,11 +334,52 @@ function useLocaleSiteData() {
334
334
  langRoutePrefix: lang === defaultLang ? '/' : (0, __WEBPACK_EXTERNAL_MODULE__rspress_shared_baa012d0__.addTrailingSlash)(lang)
335
335
  };
336
336
  }
337
+ function normalizeRoleList(value) {
338
+ if (!value) return [];
339
+ const list = Array.isArray(value) ? value : String(value).split(',');
340
+ return list.map((role) => String(role).trim().toLowerCase()).filter(Boolean);
341
+ }
342
+ function getUserRoles() {
343
+ if (typeof getUserFromStorage !== 'function') return [];
344
+ const user = getUserFromStorage();
345
+ const roles = user?.roles ?? user?.role ?? user?.groups ?? user?.group ?? [];
346
+ return normalizeRoleList(roles);
347
+ }
348
+ function hasRoleAccess(item, userRoles) {
349
+ const requiredRoles = normalizeRoleList(item?.roles);
350
+ if (!requiredRoles.length) return true;
351
+ if (!userRoles.length) return false;
352
+ return requiredRoles.some((role) => userRoles.includes(role));
353
+ }
354
+ function filterSidebarItems(items, userRoles) {
355
+ if (!Array.isArray(items)) return items;
356
+ return items.map((item) => {
357
+ if (!item) return null;
358
+ let nextItem = item;
359
+ if ('items' in item && Array.isArray(item.items)) {
360
+ const filteredItems = filterSidebarItems(item.items, userRoles);
361
+ if (filteredItems.length !== item.items.length) {
362
+ nextItem = {
363
+ ...item,
364
+ items: filteredItems
365
+ };
366
+ }
367
+ if (!nextItem.link && filteredItems.length === 0 && !('dividerType' in nextItem) && !('sectionHeaderText' in nextItem)) {
368
+ return null;
369
+ }
370
+ }
371
+ return hasRoleAccess(nextItem, userRoles) ? nextItem : null;
372
+ }).filter(Boolean);
373
+ }
337
374
  function useSidebarData() {
338
375
  const { sidebar } = useLocaleSiteData();
339
376
  const { pathname: rawPathname } = (0, __WEBPACK_EXTERNAL_MODULE__rspress_runtime_0abd3046__.useLocation)();
340
377
  const pathname = decodeURIComponent(rawPathname);
341
- const sidebarData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(() => getSidebarDataGroup(sidebar, pathname), [
378
+ const sidebarData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(() => {
379
+ const data = getSidebarDataGroup(sidebar, pathname);
380
+ const userRoles = getUserRoles();
381
+ return filterSidebarItems(data, userRoles);
382
+ }, [
342
383
  sidebar,
343
384
  pathname
344
385
  ]);
@@ -4661,6 +4702,7 @@ function parseKBGatewayUserContext(cookieValue) {
4661
4702
  return {
4662
4703
  username: username,
4663
4704
  email: parsed.email || null,
4705
+ roles: parsed.roles || parsed.role || parsed.groups || parsed.group || null,
4664
4706
  avatar: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAsJJREFUSEullU1IFHEYxp9ndpc+KHLzAyyDIIjO+TEzqWDtbFYXK/Bi0Cm61Ck6iEFsFEhFtyKiY2SBh0AIyZ1VQ2P/q3hMKIgOkUJahgRG6+4bo7kfzs7OSnPb+b/v8/s/78csscVHLP0T7dShUmkSNa5BoCMTvMexyZmNGG6FIRE9CnIElE7GUyMbuXLSPIKsvAegFeh9pa0anN9bg0SNHxCEQSwhrqoJiDgalpH1uOwAbXWhYohEmpvBwFReTEzaKSXRliaINu1VEdqKlUPWb1sYL7SVJifMFmiS+m+IWGYPIM9dQtQuomr/AJa+rHpAhmirroqciNtFTtMph0T04yBHi0H8iXBDDQcHM74QscxeQPo9p1DYx0Sy/98AvATQCOABbfW44hEWy3BKESgz6hnaKlhuFco6Ecu4A+CG7y4J7jKhej2b73UgjY0hhEMrPi420jOYW97J2dk/pfQ8nUjUvAWRm74ucoXnbcaTJeNLQny22JtrqwAB1/aXhkTMh6BcqdhF3s0jxpNXN+e5INLdHSixXI65Z9DQj2PJj3jXehTI9EFwznWR8IGgsxuF790Qy3gN4ExB0AraTu1iLOYqg7S27saOzHcAofx2YphxVZhf/BWWGDRMru1FHh6SPRxOLXtOYYdxEEF8LjgXtKkgY/neFDkRS58G2JRLELxiQp33641YxgcAhwvyZphQOZ0cRE631yKd/lYkGEjv45uZeX+I3gZwoiguFKrj8MSC8y4PsYwxAB1FgZKtYWLKqXnZRzrb65FJz20KektbremtQSTSUg1qiy4lTZo4ksr9V3v2JWpcguCp63x1ey3HxxfXIZaRBGC4gsgFxpN1vk4sw/mc5Ccsn6BoK5NytqMKv34veQoRXYyrIU8XEf0yyCee+duCeymWPgewvuxts+zhaPLF5hixzOuA3Pfp2PxfA8n5ENhQazEAAAAASUVORK5CYII="
4665
4707
  };
4666
4708
  } catch (e) {
@@ -4678,6 +4720,7 @@ function parseKBGatewayUserContext(cookieValue) {
4678
4720
  return {
4679
4721
  username: username,
4680
4722
  email: parsed.email || null,
4723
+ roles: parsed.roles || parsed.role || parsed.groups || parsed.group || null,
4681
4724
  avatar: parsed.Avatar || parsed.avatar || null
4682
4725
  };
4683
4726
  } catch (e2) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rspress-theme-anatole/theme-default",
3
3
  "author": "Anatole Tong",
4
- "version": "0.7.22-alpha",
4
+ "version": "0.7.22-alpha2",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
7
7
  "*.css",
@@ -21,8 +21,8 @@
21
21
  "types": "./dist/bundle.d.ts",
22
22
  "dependencies": {
23
23
  "@mdx-js/react": "2.3.0",
24
- "@rspress-theme-anatole/rspress-plugin-mermaid": "0.7.22-alpha",
25
- "@rspress-theme-anatole/shared": "0.7.22-alpha",
24
+ "@rspress-theme-anatole/rspress-plugin-mermaid": "0.7.22-alpha2",
25
+ "@rspress-theme-anatole/shared": "0.7.22-alpha2",
26
26
  "@rspress/runtime": "1.43.8",
27
27
  "body-scroll-lock": "4.0.0-beta.0",
28
28
  "copy-to-clipboard": "^3.3.3",