* @since 2.0.8 */ class UserPanel extends Panel { /** * @inheritdoc */ public function getName() { return 'User'; } /** * @inheritdoc */ public function getSummary() { return Yii::$app->view->render('panels/user/summary', ['panel' => $this]); } /** * @inheritdoc */ public function getDetail() { return Yii::$app->view->render('panels/user/detail', ['panel' => $this]); } /** * @inheritdoc */ public function save() { $data = Yii::$app->user->identity; if (!isset($data)) { return ; } $authManager = Yii::$app->getAuthManager(); $rolesProvider = null; $permissionsProvider = null; if ($authManager) { $roles = ArrayHelper::toArray($authManager->getRolesByUser(Yii::$app->getUser()->id)); foreach ($roles as &$role) { $role['data'] = $this->dataToString($role['data']); } unset($role); $rolesProvider = new ArrayDataProvider([ 'allModels' => $roles, ]); $permissions = ArrayHelper::toArray($authManager->getPermissionsByUser(Yii::$app->getUser()->id)); foreach ($permissions as &$permission) { $permission['data'] = $this->dataToString($permission['data']); } unset($permission); $permissionsProvider = new ArrayDataProvider([ 'allModels' => $permissions, ]); } $attributes = array_keys(get_object_vars($data)); if ($data instanceof ActiveRecord) { $attributes = array_keys($data->getAttributes()); $attributeValues = []; foreach ($attributes as $attribute) { $attributeValues[$attribute] = $data->getAttribute($attribute); } $data = $attributeValues; } return [ 'identity' => $data, 'attributes' => $attributes, 'rolesProvider' => $rolesProvider, 'permissionsProvider' => $permissionsProvider, ]; } /** * Converts mixed data to string * * @param mixed $data * @return string */ protected function dataToString($data) { if (is_string($data)) { return $data; } return VarDumper::export($data); } }