()
| 713 | Folder-only scope (server truthy) |
| 714 | ----------------------*/ |
| 715 | async function checkUserFolderPermission() { |
| 716 | const username = localStorage.getItem("username") || ""; |
| 717 | try { |
| 718 | if (window.__FR_PERMISSIONS_CACHE) { |
| 719 | // reuse cached snapshot from auth.js if available |
| 720 | const permissionsData = window.__FR_PERMISSIONS_CACHE; |
| 721 | const isFolderOnly = |
| 722 | !!(permissionsData && permissionsData[username] && permissionsData[username].folderOnly); |
| 723 | window.userFolderOnly = isFolderOnly; |
| 724 | localStorage.setItem("folderOnly", isFolderOnly ? "true" : "false"); |
| 725 | if (isFolderOnly && username) { |
| 726 | setLastOpenedFolder(username); |
| 727 | window.currentFolder = username; |
| 728 | } |
| 729 | return isFolderOnly; |
| 730 | } |
| 731 | |
| 732 | if (window.__FR_PERMISSIONS_PROMISE) { |
| 733 | const permissionsData = await window.__FR_PERMISSIONS_PROMISE; |
| 734 | const isFolderOnly = |
| 735 | !!(permissionsData && permissionsData[username] && permissionsData[username].folderOnly); |
| 736 | window.userFolderOnly = isFolderOnly; |
| 737 | localStorage.setItem("folderOnly", isFolderOnly ? "true" : "false"); |
| 738 | if (isFolderOnly && username) { |
| 739 | setLastOpenedFolder(username); |
| 740 | window.currentFolder = username; |
| 741 | } |
| 742 | return isFolderOnly; |
| 743 | } |
| 744 | |
| 745 | window.__FR_PERMISSIONS_PROMISE = (async () => { |
| 746 | const res = await fetchWithCsrf("/api/profile/getUserPermissions.php", { |
| 747 | method: "GET", |
| 748 | credentials: "include" |
| 749 | }); |
| 750 | return safeJson(res); |
| 751 | })(); |
| 752 | const permissionsData = await window.__FR_PERMISSIONS_PROMISE; |
| 753 | window.__FR_PERMISSIONS_CACHE = permissionsData || {}; |
| 754 | window.__FR_PERMISSIONS_PROMISE = null; |
| 755 | const isFolderOnly = |
| 756 | !!(permissionsData && permissionsData[username] && permissionsData[username].folderOnly); |
| 757 | window.userFolderOnly = isFolderOnly; |
| 758 | localStorage.setItem("folderOnly", isFolderOnly ? "true" : "false"); |
| 759 | if (isFolderOnly && username) { |
| 760 | setLastOpenedFolder(username); |
| 761 | window.currentFolder = username; |
| 762 | } |
| 763 | return isFolderOnly; |
| 764 | } catch (e) { |
| 765 | window.userFolderOnly = false; |
| 766 | localStorage.setItem("folderOnly", "false"); |
| 767 | return false; |
| 768 | } |
| 769 | } |
| 770 | |
| 771 | /* ---------------------- |
| 772 | Local state and caches |
no test coverage detected