From c08cfebf528884b9129a78f094576793bf5c167e Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 15 Feb 2026 22:26:04 +0000 Subject: [PATCH] roles++ --- api_v1_channel_permissions.php | 54 ++++++--- assets/js/main.js | 122 ++++++++++++++------- assets/pasted-20260215-214239-79c3300e.png | Bin 0 -> 52952 bytes index.php | 23 ++-- 4 files changed, 133 insertions(+), 66 deletions(-) create mode 100644 assets/pasted-20260215-214239-79c3300e.png diff --git a/api_v1_channel_permissions.php b/api_v1_channel_permissions.php index 4373c26..a6ce976 100644 --- a/api_v1_channel_permissions.php +++ b/api_v1_channel_permissions.php @@ -16,7 +16,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { $server_id = $channel['server_id'] ?? 0; // Ensure @everyone role exists for this server - $stmt = db()->prepare("SELECT id FROM roles WHERE server_id = ? AND (name = '@everyone' OR name = 'Everyone') LIMIT 1"); + $stmt = db()->prepare("SELECT id FROM roles WHERE server_id = ? AND (LOWER(name) = '@everyone' OR LOWER(name) = 'everyone') LIMIT 1"); $stmt->execute([$server_id]); $everyone = $stmt->fetch(); if (!$everyone && $server_id) { @@ -46,18 +46,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { } } - if (!$has_everyone && $everyone_role_id) { + if (!$has_everyone && $everyone_role_id > 0) { $stmt = db()->prepare("SELECT name, color FROM roles WHERE id = ?"); $stmt->execute([$everyone_role_id]); $r = $stmt->fetch(); - $permissions[] = [ - 'channel_id' => (int)$channel_id, - 'role_id' => (int)$everyone_role_id, - 'allow_permissions' => 0, - 'deny_permissions' => 0, - 'role_name' => $r['name'], - 'role_color' => $r['color'] - ]; + if ($r) { + array_unshift($permissions, [ + 'channel_id' => (int)$channel_id, + 'role_id' => (int)$everyone_role_id, + 'allow_permissions' => 0, + 'deny_permissions' => 0, + 'role_name' => $r['name'], + 'role_color' => $r['color'] + ]); + } } echo json_encode(['success' => true, 'permissions' => $permissions]); @@ -70,12 +72,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $allow = $data['allow'] ?? 0; $deny = $data['deny'] ?? 0; - // Check if user is owner of the server - $stmt = db()->prepare("SELECT s.owner_id FROM servers s JOIN channels c ON s.id = c.server_id WHERE c.id = ?"); + // Check permissions: Owner or MANAGE_CHANNELS or ADMINISTRATOR + require_once 'includes/permissions.php'; + $stmt = db()->prepare("SELECT server_id FROM channels WHERE id = ?"); $stmt->execute([$channel_id]); + $ch = $stmt->fetch(); + $server_id = $ch['server_id'] ?? 0; + + $stmt = db()->prepare("SELECT owner_id FROM servers WHERE id = ?"); + $stmt->execute([$server_id]); $server = $stmt->fetch(); - if ($server && $server['owner_id'] == $user_id) { + $is_owner = ($server && $server['owner_id'] == $user_id); + $can_manage = Permissions::hasPermission($user_id, $server_id, Permissions::MANAGE_CHANNELS) || + Permissions::hasPermission($user_id, $server_id, Permissions::ADMINISTRATOR); + + if ($is_owner || $can_manage) { $stmt = db()->prepare(" INSERT INTO channel_permissions (channel_id, role_id, allow_permissions, deny_permissions) VALUES (?, ?, ?, ?) @@ -93,12 +105,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'DELETE') { $channel_id = $data['channel_id'] ?? 0; $role_id = $data['role_id'] ?? 0; - // Check if user is owner - $stmt = db()->prepare("SELECT s.owner_id FROM servers s JOIN channels c ON s.id = c.server_id WHERE c.id = ?"); + // Check permissions + require_once 'includes/permissions.php'; + $stmt = db()->prepare("SELECT server_id FROM channels WHERE id = ?"); $stmt->execute([$channel_id]); + $ch = $stmt->fetch(); + $server_id = $ch['server_id'] ?? 0; + + $stmt = db()->prepare("SELECT owner_id FROM servers WHERE id = ?"); + $stmt->execute([$server_id]); $server = $stmt->fetch(); - if ($server && $server['owner_id'] == $user_id) { + $is_owner = ($server && $server['owner_id'] == $user_id); + $can_manage = Permissions::hasPermission($user_id, $server_id, Permissions::MANAGE_CHANNELS) || + Permissions::hasPermission($user_id, $server_id, Permissions::ADMINISTRATOR); + + if ($is_owner || $can_manage) { $stmt = db()->prepare("DELETE FROM channel_permissions WHERE channel_id = ? AND role_id = ?"); $stmt->execute([$channel_id, $role_id]); echo json_encode(['success' => true]); diff --git a/assets/js/main.js b/assets/js/main.js index b4b3d00..7c2f329 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -759,8 +759,8 @@ document.addEventListener('DOMContentLoaded', () => { channelPermissionsTabBtn?.addEventListener('click', async () => { const channelId = document.getElementById('edit-channel-id').value; currentSelectedOverrideRole = null; - channelPermissionsSettings.style.display = 'none'; - noRoleSelectedView.style.display = 'flex'; + channelPermissionsSettings.classList.add('d-none'); + noRoleSelectedView.classList.remove('d-none'); await loadChannelPermissions(channelId); await loadRolesForPermissions(channelId); }); @@ -776,37 +776,68 @@ document.addEventListener('DOMContentLoaded', () => { } async function loadRolesForPermissions(channelId) { - addPermRoleList.innerHTML = ''; - const resp = await fetch(`api_v1_roles.php?server_id=${activeServerId}`); - const data = await resp.json(); - if (data.success) { - // Filter out roles already in overrides - const existingRoleIds = channelPermissionsData.map(p => parseInt(p.role_id)); - const availableRoles = data.roles.filter(role => !existingRoleIds.includes(parseInt(role.id))); + if (!addPermRoleList) return; + addPermRoleList.innerHTML = '
  • Loading roles...
  • '; + + try { + const resp = await fetch(`api_v1_roles.php?server_id=${activeServerId}`); + const data = await resp.json(); + + if (data.success) { + addPermRoleList.innerHTML = ''; + + // Filter out roles already in overrides + const existingRoleIds = channelPermissionsData.map(p => parseInt(p.role_id)); + const availableRoles = data.roles.filter(role => !existingRoleIds.includes(parseInt(role.id))); + + if (availableRoles.length === 0) { + addPermRoleList.innerHTML = '
  • No more roles to add
  • '; + if (window.canManageServer) { + const divider = document.createElement('li'); + divider.innerHTML = ''; + addPermRoleList.appendChild(divider); + const createLink = document.createElement('li'); + createLink.innerHTML = ' Create roles in Server Settings'; + addPermRoleList.appendChild(createLink); + } + return; + } - if (availableRoles.length === 0) { - addPermRoleList.innerHTML = '
  • No more roles to add
  • '; - return; + // Add Roles section + const header = document.createElement('li'); + header.innerHTML = ''; + addPermRoleList.appendChild(header); + + availableRoles.forEach(role => { + const li = document.createElement('li'); + li.innerHTML = ` +
    + ${role.name} +
    `; + li.onclick = async (e) => { + e.preventDefault(); + const postResp = await fetch('api_v1_channel_permissions.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ channel_id: channelId, role_id: role.id, allow: 0, deny: 0 }) + }); + const postData = await postResp.json(); + if (postData.success) { + await loadChannelPermissions(channelId); + await loadRolesForPermissions(channelId); + selectOverrideRole(role.id, role.name); + } else { + alert("Error adding permission: " + (postData.error || "Unknown error")); + } + }; + addPermRoleList.appendChild(li); + }); + } else { + addPermRoleList.innerHTML = `
  • Error: ${data.error || 'Failed to load'}
  • `; } - - availableRoles.forEach(role => { - const li = document.createElement('li'); - li.innerHTML = ` -
    - ${role.name} -
    `; - li.onclick = async (e) => { - e.preventDefault(); - await fetch('api_v1_channel_permissions.php', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ channel_id: channelId, role_id: role.id, allow: 0, deny: 0 }) - }); - await loadChannelPermissions(channelId); - selectOverrideRole(role.id, role.name); - }; - addPermRoleList.appendChild(li); - }); + } catch (err) { + addPermRoleList.innerHTML = '
  • Network error
  • '; + console.error(err); } } @@ -819,11 +850,13 @@ document.addEventListener('DOMContentLoaded', () => { // Sort: @everyone always at top, then by name const sortedData = [...channelPermissionsData].sort((a, b) => { - const isAEveryone = a.role_name.toLowerCase().includes('everyone'); - const isBEveryone = b.role_name.toLowerCase().includes('everyone'); + const nameA = (a.role_name || '').toLowerCase(); + const nameB = (b.role_name || '').toLowerCase(); + const isAEveryone = nameA.includes('everyone'); + const isBEveryone = nameB.includes('everyone'); if (isAEveryone && !isBEveryone) return -1; if (!isAEveryone && isBEveryone) return 1; - return a.role_name.localeCompare(b.role_name); + return nameA.localeCompare(nameB); }); sortedData.forEach(p => { @@ -831,10 +864,10 @@ document.addEventListener('DOMContentLoaded', () => { item.className = `list-group-item list-group-item-action bg-transparent text-white border-0 mb-1 p-2 small d-flex align-items-center ${currentSelectedOverrideRole == p.role_id ? 'active' : ''}`; item.style.cursor = 'pointer'; item.innerHTML = ` -
    - ${p.role_name} +
    + ${p.role_name || 'Unknown Role'} `; - item.onclick = () => selectOverrideRole(p.role_id, p.role_name); + item.onclick = () => selectOverrideRole(p.role_id, p.role_name || 'Unknown Role'); channelPermissionsRolesList.appendChild(item); }); } @@ -847,8 +880,8 @@ document.addEventListener('DOMContentLoaded', () => { renderRoleOverridesList(channelId); selectedPermRoleName.textContent = roleName; - noRoleSelectedView.style.display = 'none'; - channelPermissionsSettings.style.display = 'block'; + noRoleSelectedView.classList.add('d-none'); + channelPermissionsSettings.classList.remove('d-none'); // Load existing permissions for this role const p = channelPermissionsData.find(perm => perm.role_id == roleId) || { allow_permissions: 0, deny_permissions: 0 }; @@ -881,8 +914,8 @@ document.addEventListener('DOMContentLoaded', () => { }); currentSelectedOverrideRole = null; - channelPermissionsSettings.style.display = 'none'; - noRoleSelectedView.style.display = 'flex'; + channelPermissionsSettings.classList.add('d-none'); + noRoleSelectedView.classList.remove('d-none'); loadChannelPermissions(channelId); }); @@ -951,6 +984,13 @@ document.addEventListener('DOMContentLoaded', () => { modal.querySelector('#edit-channel-name').value = channelName; modal.querySelector('#header-channel-name').textContent = channelName; modal.querySelector('#edit-channel-type').value = channelType; + + // Force switch to Overview tab + const overviewTabBtn = modal.querySelector('[data-bs-target="#edit-channel-general"]'); + if (overviewTabBtn) { + bootstrap.Tab.getOrCreateInstance(overviewTabBtn).show(); + } + modal.querySelector('#edit-channel-files').checked = btn.dataset.files == '1'; modal.querySelector('#edit-channel-limit').value = btn.dataset.limit || ''; modal.querySelector('#edit-channel-status').value = btn.dataset.status || ''; diff --git a/assets/pasted-20260215-214239-79c3300e.png b/assets/pasted-20260215-214239-79c3300e.png new file mode 100644 index 0000000000000000000000000000000000000000..252efa21e8bd3604be424c4d08f83bfe808e38b3 GIT binary patch literal 52952 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 V$<~}u!+pT-y1LGld{vt#{|85p+c^LL literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 5f3b5ab..7d67ea3 100644 --- a/index.php +++ b/index.php @@ -1270,14 +1270,13 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
    Roles / Members + + +
    @@ -1286,7 +1285,7 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
    -