From c9197a44ddc9c739a13fce59d1b25c766c1a53b9 Mon Sep 17 00:00:00 2001 From: "Dr.Death" Date: Sun, 3 Mar 2019 12:31:18 +0100 Subject: [PATCH] Added check for assigning permissions to a non existing role --- .../migrations/v10x/release_1_0_0.php | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/drdeath/f1webtip/migrations/v10x/release_1_0_0.php b/drdeath/f1webtip/migrations/v10x/release_1_0_0.php index 27095a1..c65ed56 100644 --- a/drdeath/f1webtip/migrations/v10x/release_1_0_0.php +++ b/drdeath/f1webtip/migrations/v10x/release_1_0_0.php @@ -21,9 +21,26 @@ static public function depends_on() return array('\phpbb\db\migration\data\v310\gold'); } + /** + * Custom function query permission roles + * + * @return void + * @access public + */ + private function role_exists($role) + { + $sql = 'SELECT role_id + FROM ' . ACL_ROLES_TABLE . " + WHERE role_name = '" . $this->db->sql_escape($role) . "'"; + $result = $this->db->sql_query_limit($sql, 1); + $role_id = $this->db->sql_fetchfield('role_id'); + $this->db->sql_freeresult($result); + return $role_id; + } + public function update_data() { - return array( + $data = array( // Set the current version array('config.add', array('drdeath_f1webtip_version', '1.0.0')), @@ -87,13 +104,19 @@ public function update_data() array('permission.add', array('a_formel_teams')), // New global admin permission a_formel_teams array('permission.add', array('a_formel_drivers')), // New global admin permission a_formel_drivers array('permission.add', array('a_formel_settings')), // New global admin permission a_formel_settings - - // How about we give some default permissions then as well? - array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_races')), // Give ROLE_ADMIN_FULL a_formel_races permission - array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_teams')), // Give ROLE_ADMIN_FULL a_formel_teams permission - array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_drivers')), // Give ROLE_ADMIN_FULL a_formel_drivers permission - array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_settings')), // Give ROLE_ADMIN_FULL a_formel_settings permission ); + + // Before we add additional permissions to an existing standard role, we need to first check if this role actually exists. + if ($this->role_exists('ROLE_ADMIN_FULL')) + { + // How about we give some default permissions then as well? + $data[] = array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_races')); // Give ROLE_ADMIN_FULL a_formel_races permission + $data[] = array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_teams')); // Give ROLE_ADMIN_FULL a_formel_teams permission + $data[] = array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_drivers')); // Give ROLE_ADMIN_FULL a_formel_drivers permission + $data[] = array('permission.permission_set', array('ROLE_ADMIN_FULL', 'a_formel_settings')); // Give ROLE_ADMIN_FULL a_formel_settings permission + } + + return $data; } public function update_schema() @@ -168,7 +191,6 @@ public function update_schema() ); } - public function revert_schema() { return array(