diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2015-06-09 20:23:08 +0200 | 
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2015-06-09 20:23:08 +0200 | 
| commit | 832c9f64e04ad22dce1d51e72f3c65df4894c0eb (patch) | |
| tree | f852c9acdfbe081a761e52d7a43aaca443d14d3d /phpBB/phpbb | |
| parent | 405681f138659e968211556b0152919056166e2b (diff) | |
| parent | c221571963b5252c3343b6db3ace552e52104056 (diff) | |
| download | forums-832c9f64e04ad22dce1d51e72f3c65df4894c0eb.tar forums-832c9f64e04ad22dce1d51e72f3c65df4894c0eb.tar.gz forums-832c9f64e04ad22dce1d51e72f3c65df4894c0eb.tar.bz2 forums-832c9f64e04ad22dce1d51e72f3c65df4894c0eb.tar.xz forums-832c9f64e04ad22dce1d51e72f3c65df4894c0eb.zip | |
Merge pull request #3551 from rxu/ticket/13779
[ticket/13779] Set new auth options to the role only if matching the role type
Diffstat (limited to 'phpBB/phpbb')
| -rw-r--r-- | phpBB/phpbb/db/migration/tool/permission.php | 22 | 
1 files changed, 18 insertions, 4 deletions
| diff --git a/phpBB/phpbb/db/migration/tool/permission.php b/phpBB/phpbb/db/migration/tool/permission.php index 1a91127d2d..ceff6d7d5a 100644 --- a/phpBB/phpbb/db/migration/tool/permission.php +++ b/phpBB/phpbb/db/migration/tool/permission.php @@ -425,13 +425,27 @@ class permission implements \phpbb\db\migration\tool\tool_interface  				$role_id = (int) $this->db->sql_fetchfield('auth_role_id');  				if ($role_id)  				{ -					$sql = 'SELECT role_name +					$sql = 'SELECT role_name, role_type  						FROM ' . ACL_ROLES_TABLE . '  						WHERE role_id = ' . $role_id;  					$this->db->sql_query($sql); -					$role_name = $this->db->sql_fetchfield('role_name'); - -					return $this->permission_set($role_name, $auth_option, 'role', $has_permission); +					$role_data = $this->db->sql_fetchrow(); +					$role_name = $role_data['role_name']; +					$role_type = $role_data['role_type']; + +					// 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 | 
