MCPcopy Create free account
hub / github.com/error311/FileRise / applyGroupLocksForUser

Function applyGroupLocksForUser

public/js/adminFolderAccess.js:963–1015  ·  view source on GitHub ↗
(username, grantsBox, groupMask, groupsForUser = [])

Source from the content-addressed store, hash-verified

961}
962
963function applyGroupLocksForUser(username, grantsBox, groupMask, groupsForUser = []) {
964 if (!grantsBox || !groupMask) return;
965
966 const groupLabel = groupsForUser.length
967 ? `${tf("granted_via_groups", "Granted via groups")}: ${groupsForUser.join(", ")}`
968 : tf("granted_via_groups", "Granted via groups");
969
970 const safeSelect = (folder) => {
971 return `.folder-access-row[data-folder="${escapeFolderSelectorValue(folder)}"]`;
972 };
973
974 Object.keys(groupMask).forEach(folder => {
975 const row = grantsBox.querySelector(safeSelect(folder));
976 const caps = groupMask[folder] || {};
977 if (!row) return;
978
979 const groupNote = row.querySelector('.group-flag-note');
980 if (groupNote) {
981 groupNote.style.display = 'inline-flex';
982 groupNote.classList.add('pill-note-strong');
983 groupNote.textContent = tf('granted_via_groups', 'Granted via groups');
984 if (groupsForUser.length) {
985 groupNote.textContent += `: ${groupsForUser.join(', ')}`;
986 }
987 }
988
989 Object.keys(caps).forEach(cap => {
990 if (!caps[cap]) return;
991 const input = row.querySelector(`input[data-cap="${cap}"]`);
992 if (!input) return;
993 input.checked = true;
994 input.disabled = true;
995 input.setAttribute("data-group-lock", "1");
996 input.title = groupLabel;
997
998 const permGroup = input.closest(".perm-group");
999 if (permGroup) {
1000 permGroup.classList.add("group-locked");
1001 }
1002 });
1003
1004 // Keep the synthetic Write meta toggle aligned with locked granular caps
1005 const lockedGranular = ['create','upload','edit','rename','copy','delete','extract']
1006 .some(cap => caps[cap]);
1007 const writeInput = row.querySelector('input[data-cap="write"]');
1008 if (writeInput && lockedGranular) {
1009 writeInput.checked = true;
1010 writeInput.disabled = true;
1011 writeInput.setAttribute("data-group-lock", "1");
1012 writeInput.title = groupLabel;
1013 }
1014 });
1015}
1016
1017export async function populateAdminUserHubSelect(selectEl, onMetaUpdate) {
1018 if (!selectEl) return;

Callers 2

ensureLoadedFunction · 0.85
ensureLoadedFunction · 0.85

Calls 2

safeSelectFunction · 0.85
tfFunction · 0.70

Tested by

no test coverage detected