Compare commits

...

9 commits

Author SHA1 Message Date
Marc Alexander
149d0bd227
Merge pull request #6607 from marc1706/ticket/17310
[ticket/17310] Update workflow actions to v4
2024-05-08 17:24:26 +02:00
Marc Alexander
eb12d385a0
Merge pull request #6549 from marc1706/ticket/15325
[ticket/15325] Do not show non-local permissions for local data
2024-05-08 17:22:15 +02:00
Marc Alexander
d318768634
[ticket/17176] Use correct ldap URI
PHPBB3-17176
2024-05-07 21:57:48 +02:00
Marc Alexander
843cb97048
[ticket/17176] Use ldapuri instead of removed ldaphost
PHPBB3-17176
2024-05-07 21:57:35 +02:00
Marc Alexander
a85c36b15e
[ticket/17310] Update workflow actions to v4
PHPBB3-17310
2024-05-07 21:21:10 +02:00
Marc Alexander
76ab83893b
[ticket/15325] Rename variable for sql is local exclude
PHPBB3-15325
2024-05-06 20:06:10 +02:00
Marc Alexander
42108b5e11
[ticket/15325] Remove no longer needed note about permissions being global
PHPBB3-15325
2024-05-04 09:00:30 +02:00
Marc Alexander
8dd6b5373d
[ticket/15325] Add test for displayed permissions
PHPBB3-15325
2024-04-23 21:33:09 +02:00
Marc Alexander
6c45c1ff6b
[ticket/15325] Do not show non-local permissions for local data
PHPBB3-15325
2024-04-23 20:49:02 +02:00
6 changed files with 51 additions and 23 deletions

View file

@ -16,4 +16,4 @@ mkdir /var/tmp/slapd
cp .github/ldap/slapd.conf /var/tmp/slapd/slapd.conf cp .github/ldap/slapd.conf /var/tmp/slapd/slapd.conf
slapd -d 256 -d 128 -f /var/tmp/slapd/slapd.conf -h ldap://localhost:3389 & slapd -d 256 -d 128 -f /var/tmp/slapd/slapd.conf -h ldap://localhost:3389 &
sleep 3 sleep 3
ldapadd -h localhost:3389 -D "cn=admin,dc=example,dc=com" -w adminadmin -f .github/ldap/base.ldif ldapadd -H ldap://localhost:3389 -D "cn=admin,dc=example,dc=com" -w adminadmin -f .github/ldap/base.ldif

View file

@ -17,7 +17,7 @@ on:
jobs: jobs:
# Basic checks, e.g. parse errors, commit messages, etc. # Basic checks, e.g. parse errors, commit messages, etc.
basic-checks: basic-checks:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
include: include:
@ -29,7 +29,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
fetch-depth: 100 fetch-depth: 100
@ -51,7 +51,7 @@ jobs:
cd .. cd ..
- name: Cache Composer dependencies - name: Cache Composer dependencies
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ steps.composer-cache.outputs.dir }} path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }} key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@ -88,7 +88,7 @@ jobs:
# Tests for MySQL and MariaDB # Tests for MySQL and MariaDB
mysql-tests: mysql-tests:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
include: include:
@ -157,7 +157,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
- id: database-type - id: database-type
env: env:
@ -184,7 +184,7 @@ jobs:
cd .. cd ..
- name: Cache Composer dependencies - name: Cache Composer dependencies
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ steps.composer-cache.outputs.dir }} path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }} key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@ -229,7 +229,7 @@ jobs:
# Tests for PostgreSQL # Tests for PostgreSQL
postgres-tests: postgres-tests:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
include: include:
@ -292,7 +292,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
- id: database-type - id: database-type
env: env:
@ -319,7 +319,7 @@ jobs:
cd .. cd ..
- name: Cache Composer dependencies - name: Cache Composer dependencies
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ steps.composer-cache.outputs.dir }} path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }} key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@ -347,7 +347,7 @@ jobs:
# Other database types, namely sqlite3 and mssql # Other database types, namely sqlite3 and mssql
other-tests: other-tests:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
include: include:
@ -390,7 +390,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
- id: database-type - id: database-type
env: env:
@ -422,7 +422,7 @@ jobs:
cd .. cd ..
- name: Cache Composer dependencies - name: Cache Composer dependencies
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ steps.composer-cache.outputs.dir }} path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }} key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@ -493,7 +493,7 @@ jobs:
git config --system core.autocrlf false git config --system core.autocrlf false
git config --system core.eol lf git config --system core.eol lf
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -513,7 +513,7 @@ jobs:
cd .. cd ..
- name: Cache Composer dependencies - name: Cache Composer dependencies
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ steps.composer-cache.outputs.dir }} path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }} key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}

View file

@ -95,7 +95,7 @@ class auth_admin extends \phpbb\auth\auth
} }
else else
{ {
$hold_ary = ($group_id !== false) ? $this->acl_group_raw_data($group_id, $auth_option . '%', ($scope == 'global') ? 0 : false) : $this->$acl_user_function($user_id, $auth_option . '%', ($scope == 'global') ? 0 : false); $hold_ary = ($group_id !== false) ? $this->acl_group_raw_data($group_id, $auth_option . '%') : $this->$acl_user_function($user_id, $auth_option . '%', ($scope == 'global') ? 0 : false);
} }
} }

View file

@ -159,9 +159,9 @@ $lang = array_merge($lang, array(
'ACL_M_MERGE' => 'Can merge topics', 'ACL_M_MERGE' => 'Can merge topics',
'ACL_M_INFO' => 'Can view post details', 'ACL_M_INFO' => 'Can view post details',
'ACL_M_WARN' => 'Can issue warnings<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local) 'ACL_M_WARN' => 'Can issue warnings',
'ACL_M_PM_REPORT' => 'Can close and delete reports of private messages<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local) 'ACL_M_PM_REPORT' => 'Can close and delete reports of private messages',
'ACL_M_BAN' => 'Can manage bans<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local) 'ACL_M_BAN' => 'Can manage bans',
)); ));
// Admin Permissions // Admin Permissions

View file

@ -776,6 +776,7 @@ class auth
$sql_group = ($group_id !== false) ? ((!is_array($group_id)) ? 'group_id = ' . (int) $group_id : $db->sql_in_set('group_id', array_map('intval', $group_id))) : ''; $sql_group = ($group_id !== false) ? ((!is_array($group_id)) ? 'group_id = ' . (int) $group_id : $db->sql_in_set('group_id', array_map('intval', $group_id))) : '';
$sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : ''; $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : '';
$sql_is_local = $forum_id !== false ? 'AND ao.is_local <> 0' : '';
$sql_opts = ''; $sql_opts = '';
$hold_ary = $sql_ary = array(); $hold_ary = $sql_ary = array();
@ -787,9 +788,10 @@ class auth
// Grab group settings - non-role specific... // Grab group settings - non-role specific...
$sql_ary[] = 'SELECT a.group_id, a.forum_id, a.auth_setting, a.auth_option_id, ao.auth_option $sql_ary[] = 'SELECT a.group_id, a.forum_id, a.auth_setting, a.auth_option_id, ao.auth_option
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . ' ao FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " ao
WHERE a.auth_role_id = 0 WHERE a.auth_role_id = 0
AND a.auth_option_id = ao.auth_option_id ' . AND a.auth_option_id = ao.auth_option_id
$sql_is_local " .
(($sql_group) ? 'AND a.' . $sql_group : '') . " (($sql_group) ? 'AND a.' . $sql_group : '') . "
$sql_forum $sql_forum
$sql_opts $sql_opts
@ -797,9 +799,10 @@ class auth
// Now grab group settings - role specific... // Now grab group settings - role specific...
$sql_ary[] = 'SELECT a.group_id, a.forum_id, r.auth_setting, r.auth_option_id, ao.auth_option $sql_ary[] = 'SELECT a.group_id, a.forum_id, r.auth_setting, r.auth_option_id, ao.auth_option
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . ' ao FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . " ao
WHERE a.auth_role_id = r.role_id WHERE a.auth_role_id = r.role_id
AND r.auth_option_id = ao.auth_option_id ' . $sql_is_local
AND r.auth_option_id = ao.auth_option_id " .
(($sql_group) ? 'AND a.' . $sql_group : '') . " (($sql_group) ? 'AND a.' . $sql_group : '') . "
$sql_forum $sql_forum
$sql_opts $sql_opts

View file

@ -124,4 +124,29 @@ class phpbb_functional_acp_permissions_test extends phpbb_functional_test_case
$auth->acl($user_data); $auth->acl($user_data);
$this->assertEquals(0, $auth->acl_get($permission)); $this->assertEquals(0, $auth->acl_get($permission));
} }
public function test_forum_permissions_misc()
{
// Open forum moderators permissions page
$crawler = self::request('GET', "adm/index.php?i=acp_permissions&icat=16&mode=setting_mod_local&sid=" . $this->sid);
// Select "Your first forum"
$form = $crawler->filter('#select_victim')->form(['forum_id' => [2]]);
$crawler = self::submit($form);
// Select "Global moderators"
$form = $crawler->filter('#add_groups')->form(['group_id' => [4]]);
$crawler = self::submit($form);
// Check that global permissions are not displayed
$this->add_lang('acp/permissions_phpbb');
$page_text = $crawler->text();
$this->assertNotContainsLang('ACL_M_BAN', $page_text);
$this->assertNotContainsLang('ACL_M_PM_REPORT', $page_text);
$this->assertNotContainsLang('ACL_M_WARN', $page_text);
// Check that other permissions exist
$this->assertContainsLang('ACL_M_EDIT', $page_text);
$this->assertContainsLang('ACL_M_MOVE', $page_text);
}
} }