mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
Merge branch '3.1.x'
This commit is contained in:
commit
00c15c76c3
3 changed files with 213 additions and 3 deletions
|
@ -425,13 +425,27 @@ class permission implements \phpbb\db\migration\tool\tool_interface
|
||||||
$role_id = (int) $this->db->sql_fetchfield('auth_role_id');
|
$role_id = (int) $this->db->sql_fetchfield('auth_role_id');
|
||||||
if ($role_id)
|
if ($role_id)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT role_name
|
$sql = 'SELECT role_name, role_type
|
||||||
FROM ' . ACL_ROLES_TABLE . '
|
FROM ' . ACL_ROLES_TABLE . '
|
||||||
WHERE role_id = ' . $role_id;
|
WHERE role_id = ' . $role_id;
|
||||||
$this->db->sql_query($sql);
|
$this->db->sql_query($sql);
|
||||||
$role_name = $this->db->sql_fetchfield('role_name');
|
$role_data = $this->db->sql_fetchrow();
|
||||||
|
$role_name = $role_data['role_name'];
|
||||||
|
$role_type = $role_data['role_type'];
|
||||||
|
|
||||||
return $this->permission_set($role_name, $auth_option, 'role', $has_permission);
|
// Filter new auth options to match the role type: a_ | f_ | m_ | u_
|
||||||
|
// Set new auth options to the role only if options matching the role type were found
|
||||||
|
$auth_option = array_filter($auth_option,
|
||||||
|
function ($option) use ($role_type)
|
||||||
|
{
|
||||||
|
return strpos($option, $role_type) === 0;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (sizeof($auth_option))
|
||||||
|
{
|
||||||
|
return $this->permission_set($role_name, $auth_option, 'role', $has_permission);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT auth_option_id, auth_setting
|
$sql = 'SELECT auth_option_id, auth_setting
|
||||||
|
|
|
@ -27,5 +27,139 @@
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>4</value>
|
||||||
|
<value>a_test</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>5</value>
|
||||||
|
<value>m_test</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>6</value>
|
||||||
|
<value>u_test</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="phpbb_groups">
|
||||||
|
<column>group_id</column>
|
||||||
|
<column>group_name</column>
|
||||||
|
<column>group_desc</column>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>REGISTERED</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>4</value>
|
||||||
|
<value>GLOBAL_MODERATORS</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>5</value>
|
||||||
|
<value>ADMINISTRATORS</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="phpbb_acl_groups">
|
||||||
|
<column>group_id</column>
|
||||||
|
<column>auth_role_id</column>
|
||||||
|
<column>forum_id</column>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>5</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>4</value>
|
||||||
|
<value>5</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>4</value>
|
||||||
|
<value>10</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>5</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>5</value>
|
||||||
|
<value>5</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="phpbb_acl_roles">
|
||||||
|
<column>role_id</column>
|
||||||
|
<column>role_name</column>
|
||||||
|
<column>role_type</column>
|
||||||
|
<column>role_description</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>ROLE_ADMIN_STANDARD</value>
|
||||||
|
<value>a_</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>5</value>
|
||||||
|
<value>ROLE_USER_FULL</value>
|
||||||
|
<value>u_</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>10</value>
|
||||||
|
<value>ROLE_MOD_FULL</value>
|
||||||
|
<value>m_</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="phpbb_acl_roles_data">
|
||||||
|
<column>role_id</column>
|
||||||
|
<column>auth_option_id</column>
|
||||||
|
<column>auth_setting</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>4</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>5</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>6</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>6</value>
|
||||||
|
<value>6</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>10</value>
|
||||||
|
<value>5</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>10</value>
|
||||||
|
<value>6</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
</table>
|
</table>
|
||||||
</dataset>
|
</dataset>
|
||||||
|
|
|
@ -15,6 +15,12 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
|
||||||
class phpbb_dbal_migrator_tool_permission_test extends phpbb_database_test_case
|
class phpbb_dbal_migrator_tool_permission_test extends phpbb_database_test_case
|
||||||
{
|
{
|
||||||
|
public $group_ids = array(
|
||||||
|
'REGISTERED' => 2,
|
||||||
|
'GLOBAL_MODERATORS' => 4,
|
||||||
|
'ADMINISTRATORS' => 5,
|
||||||
|
);
|
||||||
|
|
||||||
public function getDataSet()
|
public function getDataSet()
|
||||||
{
|
{
|
||||||
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/migrator_permission.xml');
|
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/migrator_permission.xml');
|
||||||
|
@ -158,4 +164,60 @@ class phpbb_dbal_migrator_tool_permission_test extends phpbb_database_test_case
|
||||||
}
|
}
|
||||||
$this->assertFalse($this->tool->exists('global_test', true));
|
$this->assertFalse($this->tool->exists('global_test', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_permission_set_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'ADMINISTRATORS',
|
||||||
|
'a_test',
|
||||||
|
'group',
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'GLOBAL_MODERATORS',
|
||||||
|
'm_test',
|
||||||
|
'group',
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'REGISTERED',
|
||||||
|
'u_test',
|
||||||
|
'group',
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider test_permission_set_data
|
||||||
|
*/
|
||||||
|
public function test_permission_set($group_name, $auth_option, $type, $has_permission)
|
||||||
|
{
|
||||||
|
$this->tool->permission_set($group_name, $auth_option, $type, $has_permission);
|
||||||
|
$administrators_perm = $this->auth->acl_group_raw_data($this->group_ids['ADMINISTRATORS'], $auth_option);
|
||||||
|
$global_moderators_perm = $this->auth->acl_group_raw_data($this->group_ids['GLOBAL_MODERATORS'], $auth_option);
|
||||||
|
$registered_users_perm = $this->auth->acl_group_raw_data($this->group_ids['REGISTERED'], $auth_option);
|
||||||
|
|
||||||
|
switch($group_name)
|
||||||
|
{
|
||||||
|
case 'GLOBAL_MODERATORS':
|
||||||
|
$this->assertEquals(false, empty($administrators_perm), 'm_test is not empty for Administrators');
|
||||||
|
$this->assertEquals(false, empty($global_moderators_perm), 'm_test is not empty for Global moderators');
|
||||||
|
$this->assertEquals(true, empty($registered_users_perm), 'm_test empty for Registered users');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'ADMINISTRATORS':
|
||||||
|
$this->assertEquals(false, empty($administrators_perm), 'a_test is not empty for Administrators');
|
||||||
|
$this->assertEquals(true, empty($global_moderators_perm), 'a_test is empty for Global moderators');
|
||||||
|
$this->assertEquals(true, empty($registered_users_perm), 'a_test is empty for Registered users');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'REGISTERED':
|
||||||
|
$this->assertEquals(false, empty($administrators_perm), 'u_test is not empty for Administrators');
|
||||||
|
$this->assertEquals(false, empty($global_moderators_perm), 'u_test is not empty for Global moderators');
|
||||||
|
$this->assertEquals(false, empty($registered_users_perm), 'u_test is not empty for Registered users');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue