()
| 10023 | } |
| 10024 | |
| 10025 | async function saveUserFlags() { |
| 10026 | const body = document.getElementById("userFlagsBody"); |
| 10027 | const rows = body?.querySelectorAll("tbody tr[data-username]") || []; |
| 10028 | const permissions = []; |
| 10029 | rows.forEach(tr => { |
| 10030 | if (tr.getAttribute("data-admin") === "1") return; // don't send admin updates |
| 10031 | const username = tr.getAttribute("data-username"); |
| 10032 | const get = k => tr.querySelector(`input[data-flag="${k}"]`).checked; |
| 10033 | permissions.push({ |
| 10034 | username, |
| 10035 | readOnly: get("readOnly"), |
| 10036 | disableUpload: get("disableUpload"), |
| 10037 | canShare: get("canShare"), |
| 10038 | bypassOwnership: get("bypassOwnership") |
| 10039 | }); |
| 10040 | }); |
| 10041 | |
| 10042 | try { |
| 10043 | const res = await sendRequest("/api/admin/updateUserPermissions.php", "PUT", |
| 10044 | { permissions }, |
| 10045 | { "X-CSRF-Token": window.csrfToken } |
| 10046 | ); |
| 10047 | if (res && res.success) { |
| 10048 | showToast(tf("user_permissions_updated_successfully", "User permissions updated successfully")); |
| 10049 | const m = document.getElementById("userFlagsModal"); |
| 10050 | if (m) m.style.display = "none"; |
| 10051 | } else { |
| 10052 | showToast(tf("error_updating_permissions", "Error updating permissions"), "error"); |
| 10053 | } |
| 10054 | } catch (e) { |
| 10055 | console.error(e); |
| 10056 | showToast(tf("error_updating_permissions", "Error updating permissions"), "error"); |
| 10057 | } |
| 10058 | } |
| 10059 | |
| 10060 | async function loadUserPermissionsList() { |
| 10061 | const listContainer = document.getElementById("userPermissionsList"); |
nothing calls this directly
no test coverage detected