From 97c43c248010baba1726ca32af6e4a0c553d24d8 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 4 Feb 2017 17:51:12 +0500 Subject: [PATCH] Fixes #13501: Fixed `yii\rbac\DbManager::getRule()` and `yii\rbac\DbManager::getRules()` to properly handle resource data came from Rule table when using PostgreSQL --- framework/CHANGELOG.md | 2 +- framework/rbac/DbManager.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 6471fb80b9..397e7207e1 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,9 +4,9 @@ Yii Framework 2 Change Log 2.0.11.2 under development -------------------------- +- Bug #13501: Fixed `yii\rbac\DbManager::getRule()` and `yii\rbac\DbManager::getRules()` to properly handle resource data came from Rule table when using PostgreSQL (StalkAlex) - Bug #13508: Fixed duplicate attachment of behavior BC break (cebe) - 2.0.11.1 February 02, 2017 ------------------------ diff --git a/framework/rbac/DbManager.php b/framework/rbac/DbManager.php index 1935bdf6e6..9d13f45538 100644 --- a/framework/rbac/DbManager.php +++ b/framework/rbac/DbManager.php @@ -631,7 +631,15 @@ class DbManager extends BaseManager ->from($this->ruleTable) ->where(['name' => $name]) ->one($this->db); - return $row === false ? null : unserialize($row['data']); + if ($row === false) { + return null; + } + $data = $row['data']; + if (is_resource($data)) { + $data = stream_get_contents($data); + } + return unserialize($data); + } /** @@ -647,7 +655,11 @@ class DbManager extends BaseManager $rules = []; foreach ($query->all($this->db) as $row) { - $rules[$row['name']] = unserialize($row['data']); + $data = $row['data']; + if (is_resource($data)) { + $data = stream_get_contents($data); + } + $rules[$row['name']] = unserialize($data); } return $rules;